Tengo un Arduino UNO R3 Plus con 14 pines digitales, pero no funcionan bien. O tal vez lo hagan, pero el punto es que creo que los estoy abusando. Tengo un LCD conectado a los puertos 13-7, 4 luces LED conectadas a 5-2 y 2 botones conectados a 0-1. Pero solo estoy usando un botón, así que técnicamente hay un botón conectado al puerto 1. El botón LED + es un juego de LED, y estoy tratando de hacer que la pantalla LCD sea un contador para él. La pantalla LCD y los "cables de alimentación" del LED comparten los mismos segmentos de la placa de pruebas, el LED es el que sube al pin de alimentación de 5V. El problema es que solo puedo hacer un trabajo a la vez, así que no sé si es la programación o el hardware. Así que, por favor, dígame cómo puedo reprogramar / volver a cablear esto (o explique por qué es imposible).
Micódigo:
intcurrentLED=2;intdelayValue=200;intnumberShown=0;#include<LiquidCrystal.h>//initializethelibrarywiththenumbersoftheinterfacepinsLiquidCrystallcd(13,12,10,9,8,7);voidsetup(){pinMode(1,INPUT);//ButtonpinMode(2,OUTPUT);//WhiteLEDpinMode(3,OUTPUT);//YellowLEDpinMode(4,OUTPUT);//GreenLEDpinMode(5,OUTPUT);//REDLED//setuptheLCD'snumberofcolumnsandrows:lcd.begin(16,2);//PrintamessagetotheLCD.lcd.print("hello, world!");
}
int checkInput() {
if(digitalRead(1)==0) {
return 1;
} else {
return 0;
}
}
}
void loop(){
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
if(digitalRead(1) == 0){
if(currentLED == 4) {
digitalWrite(4, HIGH);
delay(200);
digitalWrite(4, LOW);
delay(200);
digitalWrite(4, HIGH);
delay(200);
digitalWrite(4, LOW);
delay(200);
delayValue = delayValue - 10;
} else {
digitalWrite(currentLED, HIGH);
delay(200);
digitalWrite(currentLED, LOW);
delay(200);
digitalWrite(currentLED, HIGH);
delay(200);
digitalWrite(currentLED, LOW);
delay(200);
}
}
digitalWrite(currentLED, HIGH);
delay(delayValue);
digitalWrite(currentLED, LOW);
delay(delayValue);
currentLED = currentLED + 1;
if(currentLED > 5) {
currentLED = 2;
}
}