Schermo lcd e led

Ciao a tutti, è da tre giorni che lavoro su questo progetto: cercare di fare scrivere ad Arduino su un lcd quando un led (collegato al pin 13), lampeggia o no. Nel caso dell’ accensione del led, dovrebbe scrivere acceso, nel caso dello spegnimento del led, spento.
Quando lo carico l’ lcd mi da tutti i caratteri vuoti. lcd è collegato bene, ho controllato facendogli scrivere “hello” in maniera standard. Ora chiedo a voi in cosa sbaglio: se volete, aiutatemi a correggere l’ errore, oppure cambiando l’ intero programma!
Vi lascio il programma qui sotto.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int led = 13;

void setup () {
  
  
  pinMode(led, OUTPUT);
  
  lcd.begin(16, 2);
  
  
  if(led == HIGH) {
    lcd.print("Acceso");
  }
  
  if (led == LOW) {
    lcd.print("Spento");
  }
 
}

void loop () {

 digitalWrite(led, HIGH);
 delay(1000);
 digitalWrite(led, LOW);
 delay(1000);
}

Grazie,
Alan

Ciao Alan,

se non alleghi il codice è ben difficile capire come aiutarti (le palle di vetro sono finite) :stuck_out_tongue:

pippo72

Me ne sono accorto adesso, scusa ahahah! :slight_smile:

-Alan

Rispondo da ignorante qual sono ma..

if(led == HIGH) {
    lcd.print("Acceso");
  }
  
  if (led == LOW) {
    lcd.print("Spento");
  }

messo in void setup() viene eseguito solo una volta all'accensione di arduino
devi spostarlo all'interno di void loop()

Mi spiace, ma continua a non andare! Ho provato a fare come hai detto tu, ma non va:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int led = 13;

void setup () {
  
  
  pinMode(led, OUTPUT);
  
  lcd.begin(16, 2);
  
  
}

void loop () {

  if(led == HIGH) {
    lcd.print("Acceso");
  }
  
  if (led == LOW) {
    lcd.print("Spento");
  }
  
  
  digitalWrite(led, HIGH);
 delay(1000);
 digitalWrite(led, LOW);
 delay(1000);

}

-Alan

Alan ...
... spostare il codice, senza però ragionare sul perché e senza capire quello che si fa, non serve a nulla ... ed è quello che tu hai fatto ... :roll_eyes:

Prova a seguire passo passo quello che stai chiedendo ad Arduino di fare ... ragionaci sopra e ti renderai conto che ... NON può funzionare ...

Nel loop ...

  1. ti chiedi se è acceso
  2. ti chiedi se è spento
  3. accendi il LED
  4. spegni il LED
  5. torni al punto 1 (sei in un ciclo che si ripete all'infinito)

e ... come ti aspetti che sia al punto 1. il LED ... se non sempre spento ??? :astonished:

Guglielmo

se ho capito bene quello che volevi fare:

cercare di fare scrivere ad Arduino su un lcd quando un led (collegato al pin 13), lampeggia o no. Nel caso dell' accensione del led, dovrebbe scrivere acceso, nel caso dello spegnimento del led, spento.

il codice che stai usando non ha tanto senso, tanto vale che tu scriva nel display acceso quando accendi il led esempio:

 digitalWrite(led, HIGH);
 lcd.print("Acceso");
 delay(1000);

Visto che vuoi fare esperimenti di consiglio di provare a unire gli esempi di debounce (accendi e spegni un led con pulsante) e di "hello" del display.
Penso possa essere più utile per capire come funziona arduino.
ciao
pippo72

intanto grazie a entrambi, mi avete dato consigli molto utili. Sebbene è tutto il giorno che pensi a come fare (anche a scuola!), non riesco a fare il progetto che ho pensato. Studierò di più in modo da riuscire a completarlo. Grazie mille ancora1

-Alan

led è il numero di pin assegnato in output ad un LED, giusto?

Ed è sempre = 13!

Non sarà mai né HIGH (mi pare 1), né LOW (mi pare 0)

In mezzo occorre:

  • la lettura di uno stato (ma qui non ne segnali la necessità)

  • il riutilizzo di una variabile in base alla quale si decide se mandare HIGH o LOW il pin del led: assegno un valore ad una variabile e in base ad essa:

  • mando HIGH/LOW il pin “led” (con digitalWrite)

  • scrivo la stringa corretta sull’LCD (con la struttura if

La variabile mantiene il valore anche al ciclo successivo, durante il quale per giocare potresti p.es. invertirla (ogni x millisecondi)