/*
* M2_aula01 - Entradas e Saídas Digitais
*
* 2 botões pullup
* 2 Leds sentido direto
* LCD I2C 16 x 2 indicador
* Funcionamento:
* o Botão 1 pressionado led 1 inverte estado
* o Botão 2 pressioando led 2 pisca 5 vezes
*
* 0.0.0 - Exemplo/02 Digital/Button
* https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button
* 1.0.0 - Inclusão de 2 botões e 2 leds
* 2.0.0 - Inclusão LCD - https://pilger-arduino.blogspot.com/2018/11/blog-post_80.html
2.0.1 - Correção da logica para apresentação
*
* Luiz Oscar Ruschel Pilger - Atualição: 14/08/2023
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define endereco 0x27 // endereços mais comum 0x27 para o CI Philips PCF8574T
//#define endereco 0x3F // endereços mais comum 0x3F para o CI Philips PCF8574AT
#define colunas 16
#define linhas 2
LiquidCrystal_I2C lcd(endereco,colunas,linhas); // Criando uma estrutura com o nome "lcd" nos parâmetros indicados
// apelidos
#define bt1 4
#define bt2 5
#define led1 16
#define led2 17
// variáveis Globais
bool estadoLed1=LOW;
bool estadoLed2=LOW;
void setup() {
// definição dos GPIOs
pinMode (bt1,INPUT_PULLUP);
pinMode (bt2,INPUT_PULLUP);
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
// estado inicial dos leds desligados
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
// LCD
lcd.init(); // Inicializando o LCD
lcd.backlight(); // Ligando o BackLight do LCD
atualizaLcd1();
atualizaLcd2();
}
void loop() {
testaBt1();
testaBt2();
}
void testaBt1(){
if (digitalRead(bt1)==LOW){
while(digitalRead(bt1)==LOW);
delay(500);
estadoLed1=!estadoLed1;
digitalWrite(led1,estadoLed1);
atualizaLcd1();
}
}
void testaBt2(){
if (digitalRead(bt2)==LOW){
estadoLed2=HIGH;
atualizaLcd2();
piscaLed2();
atualizaLcd2();
}
}
void piscaLed2(){
for(int i=0; i<5; i++){
digitalWrite(led2,HIGH);
delay(1000);
digitalWrite(led2,LOW);
delay (1000);
}
}
void atualizaLcd1(){
lcd.setCursor(0,0);
lcd.print("Led1 ");
if (estadoLed1){
lcd.print("Ligado ");
}
else{
lcd.print("Desligado");
}
}
void atualizaLcd2(){
lcd.setCursor(0,1);
lcd.print("Led2 ");
if(estadoLed2){
lcd.print("Piscando ");
estadoLed2=LOW;
}
else{
lcd.print("Desligado");
}
}