const int buzzerPin = 7; // Piezo no pino 8
const int ldrPin = 0; // LDR no pino analógico 0
//const int ledPin = 3; // LED no pino digital 3
const int ledRED = 5;
const int ledGREEN = 3;
const int ledBLUE = 2;
int ldrValue = 0; // Valor lido do LDR
const int freq = 5; // altera frequencia do sonorizador
void setup() {
//Ativando o serial monitor que exibirá os valores lidos no sensor.
Serial.begin(9600);
//Definindo pinos digitais dos leds e buzzer como de saída.
pinMode(ldrPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledGREEN,OUTPUT);
pinMode(ledBLUE,OUTPUT);
pinMode(ledRED,OUTPUT);
}
/*
• R = C.L.a
ü 'L' = luminosidade em Lux
ü 'C' = processo de fabricação
ü 'a' = material utilizado
• Aplicações:
ü medidores de luz;
ü detetores de incêndio ou de fumo;
ü controladores de iluminação.
• Resitência:
ü Infravermelho
ü Luz Visível
ü UltraVioleta
*/
// map LDR faixa entre 18°C--30°C ==> {RED:(27°a32°) ; BLUE:(27°a22°) ; GREEN:(18°a22°)}
// mapear frequencia para GrausCelcius <---> gerar roteamento para converter
void loop() {
ldrValue = analogRead(ldrPin); // lê o valor do LDR
if (ldrValue < 40) { //Luminosidade baixa.
apagaLeds();
digitalWrite(ledBLUE,HIGH);
//toca o alarme
tone(buzzerPin,1000); // toca um tom de 1000 Hz do piezo
digitalWrite(ledPin, HIGH); //REVERTER LED PARA POTENCIOMETRO||BOTÃO
delay(25); // espera um pouco
noTone(buzzerPin); // interrompe o tom
digitalWrite(ledPin, LOW); //REVERTER LED PARA POTENCIOMETRO||BOTÃO
delay(ldrValue); // espera a quantidade de milissegundos em ldrValue
} if (ldrValue >= 40 && ldrValue <= 200) { //Luminosidade média.
apagaLeds();
digitalWrite(ledGREEN,HIGH);
} if (ldrValue > 200) { //Luminosidade alta.
apagaLeds();
digitalWrite(ledRED,HIGH);
}
//Exibindo o valor do sensor no serial monitor.
Serial.println(ldrValue);
delay(50);
}
//Função criada para apagar todos os leds de uma vez.
void apagaLeds() {
digitalWrite(ledGREEN,LOW);
digitalWrite(ledBLUE,LOW);
digitalWrite(ledRED,LOW);
}
/*
int pinoR = 11; //PINO DIGITAL EM QUE O TERMINAL 'R' ESTÁ CONECTADO
int pinoG = 10; //PINO DIGITAL EM QUE O TERMINAL 'G' ESTÁ CONECTADO
int pinoB = 9; //PINO DIGITAL EM QUE O TERMINAL 'B' ESTÁ CONECTADO
//COMENTE A LINHA ABAIXO SE O LED RGB QUE ESTÁ UTILIZANDO É CATODO COMUM
#define COMMON_ANODE
void setup(){
delay(5000);
pinMode(pinoR, OUTPUT); //DEFINE O PINO COMO SAÍDA
pinMode(pinoG, OUTPUT); //DEFINE O PINO COMO SAÍDA
pinMode(pinoB, OUTPUT); //DEFINE O PINO COMO SAÍDA
}
void loop(){
setColor(255, 0, 0); //PARÂMETROS PARA PRODUZIR A COR VERMELHA
delay(1000); //INTERVALO DE 1 SEGUNDO
setColor(0, 255, 0); //PARÂMETROS PARA PRODUZIR A COR VERDE
delay(1000); //INTERVALO DE 1 SEGUNDO
setColor(0, 0, 255); //PARÂMETROS PARA PRODUZIR A COR AZUL
delay(1000);//INTERVALO DE 1 SEGUNDO
setColor(255, 255, 0); //PARÂMETROS PARA PRODUZIR A COR AMARELA
delay(1000); //INTERVALO DE 1 SEGUNDO
setColor(80, 0, 80); //PARÂMETROS PARA PRODUZIR A COR VIOLETA
delay(5000); //INTERVALO DE 1 SEGUNDO
setColor(0, 255, 255); //PARÂMETROS PARA PRODUZIR A COR AZUL AQUA
delay(1000); //INTERVALO DE 1 SEGUNDO
}
//FUNÇÃO QUE PRODUZ O BRILHO DE CADA UM DOS LEDS DE ACORDO COM OS PARÂMETROS INFORMADOS
void setColor(int vermelho, int verde, int azul){
#ifdef COMMON_ANODE //SE O LED RGB FOR DEFINIDO COMO ANODO COMUM, FAZ
vermelho = 255 - vermelho; //VARIÁVEL RECEBE O RESULTADO DA OPERAÇÃO '255 MENOS O PARÂMETRO (vermelho) INFORMADO' NA CHAMADA DA FUNÇÃO
verde = 255 - verde; //VARIÁVEL RECEBE O RESULTADO DA OPERAÇÃO '255 MENOS O PARÂMETRO (verde) INFORMADO' NA CHAMADA DA FUNÇÃO
azul = 255 - azul; //VARIÁVEL RECEBE O RESULTADO DA OPERAÇÃO '255 MENOS O PARÂMETRO (azul) INFORMADO' NA CHAMADA DA FUNÇÃO
#endif
analogWrite(pinoR, vermelho); //DEFINE O BRILHO DO LED DE ACORDO COM O VALOR INFORMADO PELA VARIÁVEL 'vermelho'
analogWrite(pinoG, verde); //DEFINE O BRILHO DO LED DE ACORDO COM O VALOR INFORMADO PELA VARIÁVEL 'verde'
analogWrite(pinoB, azul); //DEFINE O BRILHO DO LED DE ACORDO COM O VALOR INFORMADO PELA VARIÁVEL 'azul'
}
*/
/*
// Definições
// Porta LED Vermelho
#define redPin 6
// Porta LED Verde
#define greenPin 3
// Porta LED Azul
#define bluePin 5
// Porta analógica de leitura do potenciômetro
#define potPin A0
// Variáveis
int potenciometro;
int pwmR;
int pwmG;
int pwmB;
void setup() {
pinMode (redPin, OUTPUT);
pinMode (greenPin, OUTPUT);
pinMode (bluePin, OUTPUT);
potenciometro = 0;
pwmR = 0;
pwmG = 0;
pwmB = 0;
}
void loop() {
potenciometro = analogRead(potPin);
if (potenciometro >= 0 && potenciometro <= 170) {
pwmG = 0;
pwmB = 0;
pwmR = map(potenciometro, 0, 170, 0, 255);
analogWrite(redPin, pwmR);
} else if (potenciometro >= 171 && potenciometro <= 340) {
pwmG = 0;
pwmB = 0;
pwmR = map(potenciometro, 171, 340, 255, 0);
analogWrite(redPin, pwmR);
}
if (potenciometro >= 341 && potenciometro <= 511) {
pwmR = 0;
pwmB = 0;
pwmG = map(potenciometro, 341, 511, 0, 255);
analogWrite(greenPin, pwmG);
} else if (potenciometro >= 512 && potenciometro <= 681) {
pwmR = 0;
pwmB = 0;
pwmG = map(potenciometro, 511, 681, 255, 0);
analogWrite(greenPin, pwmG);
}
if (potenciometro >= 682 && potenciometro <= 852) {
pwmG = 0;
pwmR = 0;
pwmB = map(potenciometro, 682, 852, 0, 255);
analogWrite(bluePin, pwmB);
} else if (potenciometro >= 853 && potenciometro <= 1023) {
pwmG = 0;
pwmR = 0;
pwmB = map(potenciometro, 853, 1023, 255, 0);
analogWrite(bluePin, pwmB);
}
}
*/
//#include <> // Inclui a biblioteca LRD no seu código
//#define ldrPinoPin = A0 // Cria um objeto da classe LDR
const int ldrPino = A0;
const int RED = 5; // Led RGB vermelho
const int GREEN = 3; // Led RGB verde
const int BLUE = 2; // Led RGB azul
const int beezyPin = 7; // Pino do Buzzer
int estado = 1;
int estado_anterior = 1;
int x = 1;
void setup() {
pinMode(ldrPinoPin, OUTPUT);
// char reading = analogRead(A0); // chama método de leitura da classe dht (leitura inicial)
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(beezyPin, OUTPUT);
// pinMode(pinButton, INPUT_PULLUP); //variável:Buzzer ; valor:retorno
}
void loop() {
// Executa 1 vez a cada 2 segundos (tempo de resposta do DHT 11)
ldrReading = analogRead(ldrPino);
if (ldrReading < 40) {
apagaLeds();
digitalWrite(BLUE, HIGH);
tone(beezyPin,1000);
// digitalWrite(button, HIGH); //Converte LED para botão
delay(25);
noTone(beezyPin);
// digitalWrite(button, LOW);
delay(ldrPino);
} if (ldrReading >= 40 && ldrReading <= 200) {
apagaLeds();
digitalWrite(GREEN, HIGH);
} if (ldrReading > 200) {
apagaLeds();
digitalWreite(RED, HIGH);
}
Serial.println(ldrReading);
delay(50);
/*
if(millis() - timer >= 2000) {
DHT.read11(A1); // chama método de leitura da classe dht,
// com o pino de transmissão de dados ligado no pino A1
// Exibe na serial o valor de umidade
Serial.print("Umidade = ");
Serial.print(DHT.humidity);
Serial.print(" % ");
// Exibe na serial o valor da temperatura
Serial.print("Temperatura = ");
Serial.print(DHT.temperature);
Serial.println(" Celsius ");
// Chama a função RGb()
rgb();
timer = millis(); // Atualiza a referência
} */
// Chama a função print()
print(x);
// le o estado pushbutton: ligado (HIGH) ou desligado (LOW)
estado = digitalRead(beezyPin);
// verifica se o botão (pushbutton) está pressionado
if ((estado) && (!estado_anterior)) { // Se estado for HIGH e estado_anterio LOW
// inverte valor da variável x
x = !x;
delay(10);
}
estado_anterior = estado;
}
void print(int x) {
if (x==1) {
Serial.println("Temp. ");
Serial.println(ldrReading.temperature);
Serial.println(B11011111);
Serial.println("C");
Serial.println("Valor em análise...")
// Exibe no monitorial o valor da temperatura
} else if (x==0) {
Serial.println("Temp. ");
Serial.println(ldrReading.temperature);
Serial.println(B11011111);
Serial.println("C");
Serial.println("Valor em zona instável...")
// Exibe no monitorial o valor da temperatura
}
}
void rgb() {
if( ldrReading.temperature < 40) {
digitalWrite(BLUE, HIGH);
digitalWrite(RED, LOW);
digitalWrite(GREEN, LOW);
Serial.println("COR: AZUL "); // Escreve texto ” COR:AZUL” na serial
// Exibe no display LCD o o nome da cor
} else if( ldrReading.temperature >= 40 && ldrReading.temperature < 200 ) {
digitalWrite(BLUE, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
Serial.println("COR: VERDE"); // Escreve texto ” COR:VERDE” na serial
} else if( ldrReading.temperature >= 200) {
digitalWrite(BLUE, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
Serial.println("COR: VERMELHA"); // Escreve texto ” COR:VERMELHA” na serial
}
}