Arduino UNO R3 Plus Pines digitales ¿Usados ​​en exceso?

Tengo un Arduino UNO R3 Plus con 14 pines digitales, pero no funcionan bien. O tal vez sí, pero el punto es que creo que los estoy abusando. Tengo una pantalla LCD conectada 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, por lo que técnicamente es 1 botón conectado al puerto 1. El botón LED + es un juego de LED, y estoy tratando de hacer que la pantalla LCD lo contrarreste. La pantalla LCD y los "cables de alimentación" del LED comparten los mismos segmentos de la placa de prueba, el LED es el que sube al pin de alimentación de 5V. El problema es que solo puedo hacer que funcione uno a la vez, así que no sé si es la programación o el hardware. Entonces, dígame cómo puedo reprogramar/reconectar esto (o explique por qué es imposible).Circuito

Mi código:

int currentLED = 2;
int delayValue = 200;
int numberShown = 0;

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(13, 12, 10, 9, 8, 7);

void setup() {
    pinMode(1, INPUT); //Button
    pinMode(2, OUTPUT); //White LED
    pinMode(3, OUTPUT); //Yellow LED
    pinMode(4, OUTPUT); //Green LED
    pinMode(5, OUTPUT); //RED LED
    // set up the LCD's number of columns and rows: 
    lcd.begin(16, 2);
    // Print a message to the LCD.
    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;
  }
}
¿Valor de la resistencia de los leds? ¿Y cuáles son los voltajes directos del led?
Lo siento si soy terrible en ingeniería eléctrica, simplemente me fascina. Pero el voltaje es de 5v para ambos y la resistencia es de 330 ohm
Varios pines en la pantalla LCD están mal conectados.
Los extremos de su potenciómetro deben estar conectados al suministro y a tierra, y el limpiaparabrisas debe estar conectado a V0.
Su ilustración parece mostrar una pantalla LCD de 2 x 16 caracteres, pero el software parece tratarla como una pantalla de 7 segmentos de dígitos múltiples; si realmente es una pantalla LCD de 2 x 16, definitivamente no funcionará de la forma en que lo está intentando. para conducirlo
@PeterBennett Quise decir algo diferente, probé un boceto ya hecho, modifiqué los pines y aún no funcionó. Pero el código ha sido editado para la pantalla LCD, gracias por señalarlo.
Suponiendo que tiene los LED cableados correctamente, tiene entre 9 mA y 5 mA para cada uno, lo cual está bien. Pero su código muestra que solo uno estará encendido en un momento dado. Entonces, ¿cuál es el problema real? El LCD + Arduino + LED (s) están dentro del rango de potencia del regulador de 5v. ¿Está usando una batería de 9v o lo está alimentando desde la pared? ¿Qué amperaje en la verruga de la pared?
No hay restablecimiento en el valor de delayValue en ningún momento, por lo que llegará muy rápidamente a cero y por debajo. ¿Podría ser este el problema, es decir, no hay retraso entre el encendido y el apagado, por lo que no puede ver que suceda nada?
No, los LED funcionan bien, la pantalla LCD no.
@RyanGriggs No, no puede, ese es el objetivo del juego, ver qué tan rápido puede presionar el botón cuando parpadea en verde.
@Passerby El problema es que no puedo entender cómo darle poder a ambos.
@TheKnightsWhoSayNi ¿LCD específico que está utilizando? ¿Estás usando una batería de 9v? ¿Está utilizando un adaptador de corriente/verruga de pared de CC?
@Passerby HD44780 comp. LCD 16x2. Estoy usando un cable de alimentación de 9v para transferir el código desde mi computadora y un paquete de baterías de CC con 3 baterías AA.
¿Entonces estás usando 4.5v o 9v? ¿No es 5v? ¿Las baterías están frescas? No todos los LCD HD44780 están contentos con 4.5v o menos. Y en ese punto, no obtienes 5v regulados del regulador de arduino...
No tengo ni idea, aunque las pilas están nuevas.
@Passerby, ¿cómo puedo saber qué voltaje estoy usando?
Usa un multímetro.

Respuestas (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 respuestas son solo ruido, así que buscaré una respuesta.

Arduino UNO R3 Plus Pines digitales ¿Usados ​​en exceso?

O para reformular: ¿Puede un Arduino UNO controlar tanto una pantalla LCD como una serie de LED juntos?

La respuesta es, por supuesto, un sí definitivo. He aquí 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 funcionaba como se esperaba es porque la pantalla LCD no está cableada correctamente (como señaló Ignacio en los comentarios). En particular, el potenciómetro no está haciendo su trabajo para ajustar el contraste, pero está elevando RS.

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