Arduino UNO R3 Plus Digital Pins ¿Usado en exceso?

3

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;
  }
}
    

1 respuesta

1

NB: Me doy cuenta de que esta es una pregunta antigua a estas alturas y probablemente debería migrarse a Arduino SE, pero las preguntas sin respuesta son solo ruido, por lo que pediré una respuesta ...

  

¿Los pines digitales Arduino UNO R3 Plus usados en exceso?

O para reformular: ¿Un Arduino UNO puede unir tanto un LCD como una serie de LED?

La respuesta es, por supuesto, un sí definitivo. aquí hay un ejemplo de cómo funciona .

Si se puede creer el diagrama de Fritzing en la pregunta, la razón principal por la que el circuito no funcionó como se esperaba es porque la pantalla LCD no está cableada correctamente (como lo señaló Ignacio en los comentarios). En particular, el bote no está haciendo su trabajo para ajustar el contraste, pero está tirando de RS alto.

Fritzing es una buena herramienta, pero vale la pena acostumbrarse a la vista esquemática. Puede hacer que problemas como estos sean evidentes, cuando son tan fáciles de perder en la vista de tablero.

    
respondido por el tardate

Lea otras preguntas en las etiquetas