LDR, shield rele e construção da interface de controle residencial 1.0 - Aula 08/15
21º Execício - Sensor LDR acionando um LED conforme o valor.
int portaLed = 10; //Porta a ser utilizada para ligar o led int portaLDR = A5; //Porta analógica utilizada pelo LDR void setup() { Serial.begin(9600); pinMode(portaLed, OUTPUT); //Define a porta do Led como saída } void loop() { int estado = analogRead(portaLDR); //Lê o valor fornecido pelo LDR Serial.print(estado); // Caso o valor lido na porta analógica seja maior do que // 800, acende o LED // Ajuste o valor abaixo de acordo com o seu circuito if (estado > 800) { digitalWrite(portaLed, HIGH); } else //Caso contrário, apaga o led { digitalWrite(portaLed, LOW); } }
22º Execício - Interface de controle residencial 1.0.
/**** Sistema de controle Residencial 1.0 ****/ #include "DHT.h" #include
#define DHTPIN A0 //Pino de dados do sensor DHT-11 #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); int h; int t; //Carrega a biblioteca LiquidCrystal #include
//Define os pinos que serão utilizados para ligação ao display LiquidCrystal lcd(3, 2, 7, 6, 5, 4); #define Rele1 13 #define Rele2 12 #define Rele3 11 #define Tranca 10 Servo myservo; int AnguloServo = 0; //------------------------------------------------------ Variáveis para a leitura dos botões --------------------------------------------------// int LeituraBotoes = 0; //--------------------------------------------------------- Variáveis para a leitura do LDR ---------------------------------------------------// int LeituraLDR = 0; //-----------------------------------------------------Variáveis para a condição do Botão SELECT ---------------------------------------------// int Para = 0; int CliquesBotaoSelect = 0; //-----------------------------------------------------Variáveis para a condição do Botão LEFT -----------------------------------------------// int Para2 = 0; int CliquesBotaoLEFT = 0; //------------------------------------------------------Variáveis para a condição do Botão UP ------------------------------------------------// int Para3 = 0; int CliquesBotaoUP = 0; int CliquesBotaoUPAuxiliar = 0; //-----------------------------------------------------Variáveis para a condição do Botão Down -----------------------------------------------// int Para4 = 0; int CliquesBotaoDown = 0; int CliquesBotaoDownAuxiliar = 0; int Para5 = 0; int Para6 = 0; void setup() { pinMode(Rele1, OUTPUT); pinMode(Rele2, OUTPUT); pinMode(Rele3, OUTPUT); pinMode(Tranca, OUTPUT); digitalWrite(Rele1,HIGH); digitalWrite(Rele2,HIGH); digitalWrite(Rele3,HIGH); myservo.attach(Tranca); Serial.begin(9600); dht.begin(); //Define o número de colunas e linhas do LCD lcd.begin(16, 2); } void loop() { // A leitura da temperatura e umidade pode levar 250ms! // O atraso do sensor pode chegar a 2 segundos. h = dht.readHumidity(); t = dht.readTemperature(); //---------------------------------------------------------- Para a leitura dos botões ------------------------------------------------------// LeituraBotoes = analogRead(A2); Serial.println(LeituraBotoes); Serial.println(CliquesBotaoSelect); //--------------------------------------------------------- Variáveis para a leitura do LDR --------------------------------------------------// LeituraLDR = analogRead(A1); //-------------------------------------------- Incremento de variáveis a cada clique do botão SELECT -----------------------------------------// if(LeituraBotoes >= 650 && LeituraBotoes <= 780 && Para == 0){ Para = 1; } if(LeituraBotoes >= 1000 && Para == 1){ CliquesBotaoSelect++; Para = 0; } //------------------------------------------------------------------ Primeira Tela ------------------------------------------------------------// if (CliquesBotaoSelect == 0){ //Limpa a tela lcd.clear(); // C L lcd.setCursor(0, 0); lcd.print("L1"); // C L lcd.setCursor(7, 0); lcd.print("L2"); // C L lcd.setCursor(14, 0); lcd.print("L3"); // C L lcd.setCursor(0, 1); lcd.print("D"); // C L lcd.setCursor(7, 1); lcd.print("D"); // C L lcd.setCursor(14, 1); lcd.print("D"); //-------------------------------------------- Incremento de variáveis a cada clique do botão LEFT -----------------------------------------// if(LeituraBotoes >= 400 && LeituraBotoes <= 500 && Para2 == 0){ Para2 = 1; } if(LeituraBotoes >= 1000 && Para2 == 1){ CliquesBotaoLEFT++; Para2 = 0; } //-------------------------------------------- Incremento de variáveis a cada clique do botão UP -----------------------------------------// if(LeituraBotoes >= 100 && LeituraBotoes <= 180 && Para3 == 0){ Para3 = 1; } if(LeituraBotoes >= 1000 && Para3 == 1){ CliquesBotaoUP++; Para3 = 0; } //-------------------------------------------- Incremento de variáveis a cada clique do botão Down -----------------------------------------// if(LeituraBotoes >= 250 && LeituraBotoes <= 360 && Para4 == 0){ Para4 = 1; } if(LeituraBotoes >= 1000 && Para4 == 1){ CliquesBotaoDown++; Para4 = 0; } if (CliquesBotaoLEFT == 1 ){ digitalWrite(Rele1,LOW ); // C L lcd.setCursor(0, 1); lcd.print("L"); } if (CliquesBotaoLEFT == 2 ){ digitalWrite(Rele1,HIGH ); // C L lcd.setCursor(0, 1); lcd.print("D"); CliquesBotaoLEFT = 0; } if (CliquesBotaoUP == 1 ){ digitalWrite(Rele2,LOW ); // C L lcd.setCursor(7, 1); lcd.print("L"); } if (CliquesBotaoUP == 2 ){ digitalWrite(Rele2,HIGH ); CliquesBotaoUP = 0; } if (CliquesBotaoDown == 1 ){ digitalWrite(Rele3,LOW ); // C L lcd.setCursor(14, 1); lcd.print("L"); } if (CliquesBotaoDown == 2 ){ digitalWrite(Rele3,HIGH ); CliquesBotaoDown = 0; } delay(50);//Tempo para a exibição no display não ficar falhada. } //------------------------------------------------------------------ Segunda Tela------------------------------------------------------------// if (CliquesBotaoSelect == 1){ //Limpa a tela lcd.clear(); //Posiciona o cursor na coluna 3, linha 0; lcd.setCursor(0, 0); //Envia o texto entre aspas para o LCD lcd.print("Temp.:"); lcd.setCursor(1, 1); lcd.print(t); lcd.setCursor(4, 1); lcd.print("C"); lcd.setCursor(8, 0); lcd.print("Umidade:"); lcd.setCursor(10, 1); lcd.print(h); lcd.setCursor(13, 1); lcd.print("%"); delay(50); } //------------------------------------------------------------------ Terceira Tela------------------------------------------------------------// if (CliquesBotaoSelect == 2){ //-------------------------------------------- Incremento de variáveis a cada clique do botão UP para o Auxiliar de Down -----------------------------------------// if(LeituraBotoes >= 80 && LeituraBotoes <= 180 && Para5 == 0){ Para5 = 1; } if(LeituraBotoes >= 1000 && Para5 == 1){ CliquesBotaoUPAuxiliar++; Para5 = 0; } //-------------------------------------------- Incremento de variáveis a cada clique do botão Down para o Auxiliar de Down -----------------------------------------// if(LeituraBotoes >= 250 && LeituraBotoes <= 380 && Para6 == 0){ Para6 = 1; } if(LeituraBotoes >= 1000 && Para6 == 1){ CliquesBotaoDownAuxiliar++; Para6 = 0; } //Limpa a tela lcd.clear(); // C L lcd.setCursor(0, 0); lcd.print("Fechadura"); if( LeituraBotoes >= 80 && LeituraBotoes <= 180){ CliquesBotaoDownAuxiliar = 0; } if (AnguloServo == 0){ // C L lcd.setCursor(0, 1); lcd.print("FECHADA"); } if (AnguloServo == 180){ // C L lcd.setCursor(0, 1); lcd.print("ABERTA"); } if (CliquesBotaoUPAuxiliar == 1 ){ AnguloServo = 180; myservo.write(AnguloServo); CliquesBotaoUPAuxiliar = 0; } if( LeituraBotoes >= 250 && LeituraBotoes <= 380){ CliquesBotaoUPAuxiliar = 0; } if (CliquesBotaoDownAuxiliar == 1 ){ AnguloServo = 0; myservo.write(AnguloServo); CliquesBotaoDownAuxiliar = 0; } delay(50); } //------------------------------------------------------------------ Quarta Tela------------------------------------------------------------// if (CliquesBotaoSelect == 3){ //Limpa a tela lcd.clear(); // C L lcd.setCursor(0, 0); lcd.print("Nivel U.V"); if (LeituraLDR < 666){ // C L lcd.setCursor(0, 1); lcd.print("Baixo"); } if (LeituraLDR >= 666 && LeituraLDR < 999){ // C L lcd.setCursor(0, 1); lcd.print("Medio"); } if (LeituraLDR >= 999){ // C L lcd.setCursor(0, 1); lcd.print("Alto"); } delay(50); } if (CliquesBotaoSelect == 4){ CliquesBotaoSelect = 0; }
Página inicial
Assinar:
Postagens (Atom)