Luk ha centrato il punto. Il Joy è obbligatorio perché lo scorrimento dei menù legge un valore analogico per determinare se la leva è spostata in alto o in basso. Il convertitore di arduino è da 10bit per cui i valori possibili del pin A1 (ingresso joy asse Y) vanno da 0 a 1024; il joy in posizione centrale ha un valore che sta circa a 512: ho previsto una tolleranza per evitare che si muova semplicemente sfiorando il joystick, in particolare il menù si muove verso l'alto quando il valore dell'asse "ANALOG_Y" supera 630 e verso il basso quando scende al di sotto di 400.
Se il pin non è connesso questo potrebbe essere ad un valore molto prossimo a 0 oppure molto prossimo a 1024.... ovvero entrambi valori che causano la lettura di una direzione che sia "giù" o "su".
In realtà non è previsto che non venga collegato visto che è necessario alla navigazione del menù.... se fai come dice luk e lo collegi a Vcc o GND in realtà ottieni comunque uno scorrimento visto che Vcc = 1024 e GND = 0... per tenere fermo il menù senza collegare il Joy devi mettere un partitore bilanciato tra Vcc e GND: in pratica due resistenze identiche collegate in serie, poste tra Vcc e GND con il pin A1 collegato sul punto centrale. Modifica comunque inutile visto che per usare l'ELS hai bisogno di usare il menù.
Il motivo per cui si ferma quando sconnetti il pin A3 (LCD_RW) credo sia dovuto al fatto che il display smette di funzionare e si ferma sull'ultima schermata che gli è stata passata...
La lettura del Joy per il menù principale avviene in questa parte di codice:
Codice:
while (innerstay)
{
if (digitalRead(SEL) == PRESSED) { stay = false; innerstay = false; }
if (analogRead(ANALOG_Y) < 400) { current -= 1; innerstay = false; }
if (analogRead(ANALOG_Y) > 630) { current += 1; innerstay = false; }
}
delay (300);
Funzione "char Principale()", specificatamente da linea 61 a linea 68 della scheda MenuPrincipale.
Luca, il delay che cerchi è quello!