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
(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?
lucadentella:
lasciava un orizzonte temporale più ampio... "entro la fine della scuola" 8)
Eh, hai ragione... è che avevo smania di farlo 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?
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...
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.
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.
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!!
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.
leo72: Non chiedere come per entrambe le cose perché sul forum trovi 1000 esempi di costruzione e di codice, è uno degli argomenti più gettonati.
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.
leo72: Non chiedere come per entrambe le cose perché sul forum trovi 1000 esempi di costruzione e di codice, è uno degli argomenti più gettonati.
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...
Grazie! ; )