Objetivo: Em sistemas simples fica fácil o controle e organização da lógica, porém, à medida que o código aumenta, ou seja, varias entradas e varias saídas a organizanção será melhor se usarmos funções.
"se o problema é grande, devemos dividí-lo em pequenos problemas".
Para nosso exemplo, usaremos três chaves e três saídas, além de uma mensagem inicial fazendo uma propaganda do sistema...
Ao ligar o sistema a seguinte mensagem deverá ser exibida:
Controle - Pressione:
S1 - Ligar LEDs (vermelho, amarelo e verde)
S2 - Ligar Lampadas
S3 - Ligar Motor
Pressionando a chave as saída correspondente deverá ser acionada e a mensagem corrospondente exibida.
O código...
//-------------------------------------------------------------// // Projeto Desenvolvedores 4.0 - Desenvolvimento com Arduino // Programa/hardware: 005 - Função - Otimizando seu código // Autor:Clodoaldo Silva // Revisão: 25Abr2020 //--------------------------------------------------------------- //inclui a biblioteca do LCD #include <LiquidCrystal.h> //http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay //DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO //Entradas #define S1 A0 //Nomeia o pino A0 (analógico) como (digital) #define S2 A1 //indem A1 #define S3 A2 //indem A2 #define S4 A3 //indem A3 //Saídas #define LED_vermelho 10 //define do pino 10 como saída #define LED_amarelo 9 //define do pino 9 como saída #define LED_verde 8 //define do pino 8 como saída #define Lampada 7 //define do pino 7 como saída #define Motor 6 //define do pino 6 como saída //DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /* Respectivamente LCD RS pin to digital pin 12 LCD Enable pin to digital pin 11 LCD R/W pin to ground LCD D4 pin to digital pin 5 LCD D5 pin to digital pin 4 LCD D6 pin to digital pin 3 LCD D7 pin to digital pin 3 */ void setup() { // Inicializa o LCD com 20 colunas e 4 linhas lcd.begin(20, 4); //Configurando os pinos definidos como saídas. pinMode(LED_vermelho, OUTPUT); pinMode(LED_amarelo, OUTPUT); pinMode(LED_verde, OUTPUT); pinMode(Lampada, OUTPUT); pinMode(Motor, OUTPUT); //Configurando os pinos definidos como saídas. pinMode(S1, INPUT); pinMode(S2, INPUT); pinMode(S3, INPUT); pinMode(S4, INPUT); } //------------------------------------------- // Função para tela inicial void LEDs() { lcd.setCursor(0, 0); lcd.print("-------------------"); lcd.setCursor(0, 1); //Posiciona lcd.print("Status da saida"); //Escreve lcd.setCursor(0, 2); lcd.print("LEDs ligados"); lcd.setCursor(0, 3); lcd.print("-------------------"); digitalWrite(LED_vermelho, HIGH); // Liga a saída digitalWrite(LED_amarelo, HIGH); digitalWrite(LED_verde, HIGH); } void Lampadas () { lcd.setCursor(0, 0); lcd.print("-------------------"); lcd.setCursor(0, 1); lcd.print("Status da saida "); lcd.setCursor(0, 2); lcd.print("Lampada ligada "); lcd.setCursor(0, 3); lcd.print("-------------------"); digitalWrite(Lampada, HIGH); // Liga saída } void Motores() { lcd.setCursor(0, 0); lcd.print("-------------------"); lcd.setCursor(0, 1); lcd.print("Status da saida "); lcd.setCursor(0, 2); lcd.print("Motor ligado "); lcd.setCursor(0, 3); lcd.print("-------------------"); digitalWrite(Motor, HIGH); // Liga saída } void inicio() { lcd.setCursor(0, 0); // Posicionamento Coluna,Linha lcd.print("Controle: "); // Mensagem correspondente lcd.setCursor(0, 1); lcd.print("S1 = Ligar LEDS "); lcd.setCursor(0, 2); lcd.print("S2 = Ligar Lampada "); lcd.setCursor(0, 3); lcd.print("S3 = Ligar Motor "); digitalWrite(LED_vermelho, LOW); // Liga a saída digitalWrite(LED_amarelo, LOW); digitalWrite(LED_verde, LOW); digitalWrite(Lampada, LOW); // Liga a saída digitalWrite(Motor, LOW); } void loop() { if (digitalRead(S1) == HIGH) // Se S1 for pressionada LEDs(); // Chama função LEDs while (digitalRead(S1) == HIGH); // Somente se S1 for pressionada if (digitalRead(S2) == HIGH) // Idem. Lampadas(); while (digitalRead(S2) == HIGH); if (digitalRead(S3) == HIGH) // Idem. Motores(); while (digitalRead(S3) == HIGH); if((digitalRead(S1)== LOW)&&(digitalRead(S2)==LOW)&&(digitalRead(S3)==LOW)) inicio(); while((digitalRead(S1)==LOW)&&(digitalRead(S2)==LOW)&&(digitalRead(S3)== LOW)); }
Até a próxima...
"Sua luta não termina quando sentir cansaço, mas sim quando atingir o sucesso tão merecido."
www.clubedaeletronica.com.br
Autor: Clodoaldo Silva...