LCD e pulsanti per programmare

Ciao a tutti!! Vorrei, entro stasera, riuscire a fare questa cosa: display collegato ad arduino più 3 pulsanti... il primo pulsante serve a scrivere... cioè, se premo una volta mi scrive A sul display, se premo la seconda volta mi scrive B e così via (se possibile, la lettera nella posizione 1 della prima riga deve essere maiuscola...) il secondo serve a spostare il cursore per poi inserire una lettera (e arrivato alla posizione 16 del lcd (16*2) passa alla riga sotto) e il terzo serve a cambiare effetti o a fare lampeggiare tutta la scritta... Mi riuscite ad aiutare?? Se non chiedo troppo, potete passarmi il codice o farmi vedere come fare e poi lo faccio...

p.s. e se premo il primo pulsante per 10 secondi cancello tutto quello che ho scritto :S

Ciao!

(ho appena risposto ad un altro topic che almeno si lasciava un orizzonte temporale più ampio... "entro la fine della scuola" 8) ) l'approccio migliore in questo forum è: vi posto lo sketch che ho preparato e che non fa esattamente quello che voglio... lo commentiamo insieme e vediamo come sistemarlo. Altrimenti se lo facciamo direttamente noi dove sta il tuo divertimento? :roll_eyes:

Ciao!!

lucadentella: lasciava un orizzonte temporale più ampio... "entro la fine della scuola" 8)

Eh, hai ragione... è che avevo smania di farlo :P per poi portarlo a scuola (visto che stiamo guardando i display a segmenti e giochiamo con gli integrati a porte logiche...

lucadentella: l'approccio migliore in questo forum è: vi posto lo sketch che ho preparato e che non fa esattamente quello che voglio... lo commentiamo insieme e vediamo come sistemarlo. Altrimenti se lo facciamo direttamente noi dove sta il tuo divertimento? :roll_eyes:

Anche su questo hai pienamente ragione... Il problema è che io non so programmare... ed è proprio una cosa bruttissima per me che ho voglia di fare, mi vengono idee e non posso realizzarle per colpa della mia ignoranza per quanto riguarda la programmazione... Quindi chiedo scusa a tutte le persone a cui da noia il fatto che io chieda a voi lo sketch...

Ciao

hai già provato gli sketch di esempio per scrivere sugli LCD? Funziona tutto?

lucadentella: Ciao hai già provato gli sketch di esempio per scrivere sugli LCD? Funziona tutto?

Ciao, si li ho provati tempo fa e funzionava tutto : ) Solo che lì scrivevo il testo nell'ie e il display lo visualizzava.. adesso invece, come dicevo prima, voreei fare una cosa indipendente dal pc.. in modo sa poter scrivere anche in assenza di un pc : )

Come ti ha detto Lucadentella, ti possiamo aiutare su uno sketch non funzionante ma non che scriviamo noi le cose al posto tuo. Primo perché tutti noi abbiamo un sacco di altre cose da fare, secondo perché non possiamo scrivere e testare uno sketch su un hardware che non abbiamo e terzo perché così non imparerai mai.

Il consiglio è sempre quello di prendersi una di quelle guide sul C che si trovano online e di imparare i rudimenti, e poi di rivolgersi al Reference per studiare le funzioni specifiche di Arduino.

leo72: perché tutti noi abbiamo un sacco di altre cose da fare, secondo perché non possiamo scrivere e testare uno sketch su un hardware che non abbiamo e terzo perché così non imparerai mai.

Avete ragione, lo ripeto... : )

leo72: Il consiglio è sempre quello di prendersi una di quelle guide sul C che si trovano online e di imparare i rudimenti, e poi di rivolgersi al Reference per studiare le funzioni specifiche di Arduino.

Proverò a fare così :D Grazie!! ;)

ciao

prova a suddividere l'obiettivo in sottoproblemi (è il metodo che applico sempre)... magari esce un bel thread educativo anche per altri 8)

primo esercizio: due pulsanti e un led (es. quello connesso al PIN 13 e già presente sulla board Arduino): un pulsante accende il led, uno lo spegne... obiettivo capire come leggere lo stato dei pulsanti e agire di conseguenza.

vai con il lisc... ehm lo sketch! ;)

lucadentella: ciao primo esercizio: due pulsanti e un led (es. quello connesso al PIN 13 e già presente sulla board Arduino): un pulsante accende il led, uno lo spegne... obiettivo capire come leggere lo stato dei pulsanti e agire di conseguenza.

Ciao Luca!! Ho fatto come mi hai detto...

const int buttonPin = 2; //Pulsante collegato al pin 2 che serve per accendere il led const int buttonPin2 = 3; //Pulsante collegato al pin 3 che serve per spegnere il led const int ledPin = 13; //Led collegato al pin 13

int P_Accensione = 0; //Variabile che leggerà lo stato del pulsante int P_Spegnimento = 0; //Variabile che leggerà lo stato del pulsante

void setup() { //Diciamogli che il il pin 13 è un output pinMode(ledPin, OUTPUT); //Diciamogli che il pin 2 è un'input pinMode(buttonPin, INPUT); //Diciamogli che il pin 3 è un'input pinMode(buttonPin2, INPUT); }

void loop(){ //Legge il valore della variabile del pulsante P_Accensione = digitalRead(buttonPin); P_Spegnimento = digitalRead(buttonPin2); //Controlla se il pulsante è stato premuto //Se è stato premuto, mette la variabile HIGH if (P_Accensione == HIGH) { //Accende il led digitalWrite(ledPin, HIGH); } //Controlla se il pulsante è stato premuto //Se è stato premuto, mette la variabile HIGH if (P_Spegnimento == HIGH) { //Spegne il led digitalWrite(ledPin, LOW); } }

Per comodità ho usato, al posto di due pulsanti, un filo collegato tra +5V e i pin 2 e 3 ...Ho usato lo sketch d'esempio del pulsante e ci ho aggiunto le altre cose per il secondo pulsante... va bene lo stesso, PROF?? ; ) Unica cosa... quando accendo il led (quello già collegato al pin 13) tramite filo volante, come dicevo prima, il led si accende non del tutto e dopo dei secondi si accende a luce piena... e poi se lo provo a spegnere subito dopo averlo acceso, non si spegne subito, ma dopo un po'... è tutto normale? sia della luce prima soffusa e poi piena e anche del ritardo dello spegnimento? Grazie!!

In quasi un anno non ne ho mai fatto uno, ora mi permettete un UP? :)

Solito discorso. Usando un pezzo di filo volante, hai una serie infinita di rimbalzi. Intanto costruisci un circuito su breadboard "come si deve", con i pulsantini con le loro resistenze di pull-down, e poi rivedi il codice per gestire via software un minimo di debounce.

Non chiedere come per entrambe le cose perché sul forum trovi 1000 esempi di costruzione e di codice, è uno degli argomenti più gettonati. :P

leo72: Non chiedere come per entrambe le cose perché sul forum trovi 1000 esempi di costruzione e di codice, è uno degli argomenti più gettonati. :P

Ci provo... ma se scopiazzo anche dagli esempi dell'ide... dici che sta cosa consigliata da @lucadentella (di provare a fare un po' per volta) è inutile se copio??

Gli esempi sono lì per essere usati come base. In questo modo capisci come funzionano le cose. Nel Playground ci dovrebbe essere anche l'esempio di debounce dei pulsanti.

leo72: Gli esempi sono lì per essere usati come base. In questo modo capisci come funzionano le cose. Nel Playground ci dovrebbe essere anche l'esempio di debounce dei pulsanti.

OOK!! ..si, c'è l'esempio nell'ide che riporta a un link http://www.arduino.cc/en/Tutorial/Debounce ora vedo un po' come fare :D

maggio93:

leo72: Non chiedere come per entrambe le cose perché sul forum trovi 1000 esempi di costruzione e di codice, è uno degli argomenti più gettonati. :P

Ci provo... ma se scopiazzo anche dagli esempi dell'ide... dici che sta cosa consigliata da @lucadentella (di provare a fare un po' per volta) è inutile se copio??

Guarda che questo è il concetto che da forza all'open source. Se tutti i codici fossero chiusi, non ci sarebbe collaborazione e per chiunque sarebbe difficile imparare cose. Tu non ti devi limitare a copiare e spingere play, ma sforzati a capire riga per riga il significato di ogni simbolo o variabile. Per capirlo devi fare delle personalizzazioni del codice, stando attento solo a non fare errori che possano danneggiare arduino & co, ma sono cose difficili a succedere.

Ricordati di mettere le risistenze di pulldown! Servono ad evitare che i disturbi entrino nei tuoi cavi volanti e facciano fare delle letture false all' arduino. Cioè quando poni un pin come input quando questo viene collegato a +5v viene visto come "1", ma quando non è collegato a +5 non è assolutamente visto come "0" !!! Rimane in uno stato fluttuante, per questo devi metterci una resistenza (tipo 30k) che colleghi il pin verso massa, in modo da "fissare" questo stato a "0" quando non è collegato a +5... Ok non è una gran spiegazione...

Guglio: Ricordati di mettere le risistenze di pulldown! Servono ad evitare che i disturbi entrino nei tuoi cavi volanti e facciano fare delle letture false all' arduino. Cioè quando poni un pin come input quando questo viene collegato a +5v viene visto come "1", ma quando non è collegato a +5 non è assolutamente visto come "0" !!! Rimane in uno stato fluttuante, per questo devi metterci una resistenza (tipo 30k) che colleghi il pin verso massa, in modo da "fissare" questo stato a "0" quando non è collegato a +5... Ok non è una gran spiegazione...

Io ho capito... ma forse solo perchè lo sapevo già.. haha ...a scuola stiamo facendo le porte logiche!!! : ) ma questo è per i fili volanti.. ora vediamo se riesco a mettere il debounce su quel codice... :D Grazie! ; )