- Codice: Seleziona tutto
#include <LCD.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Most of the backpacks like the one shown are at 0x27 or at 0x3f.
#define I2C_ADDR 0x27 // <--Change to match your display
LiquidCrystal_I2C lcd(I2C_ADDR,2,1,0,4,5,6,7,3,POSITIVE);
int n = 0;
void setup ( )
{
lcd.begin ( 20, 4 ); // <--Change to match your display
lcd.setBacklight(1);
lcd.print("ciao");
lcd.print(", Gianni");
delay(600);
lcd.setCursor(0,1);
lcd.print(" sto contando");
delay(600);
lcd.setCursor(0,3);
lcd.print("conto bene");}
void loop ()
{
lcd.setCursor(3,2);
lcd.print(n++,DEC);
delay(500);}
Conteggio che torna indietro dopo determinata soglia
24 messaggi
• Pagina 1 di 3 • 1, 2, 3
0
voti
Ho uno sketch che conta sino all'infinito.Vorrei invece che ad un determinato numero da me stabilito,torna a contare indietro.Un aiuto? Grazie
0
voti
papa10 ha scritto:Ho uno sketch che conta sino all'infinito.
Ho i miei dubbi...
Vorrei invece che ad un determinato numero da me stabilito,torna a contare indietro.Un aiuto?
Quello che vuoi fare è di una banalità incredibile. Se vuoi fare learning-by-copying, allora devi copiare ancora un po' e ci arriverai. Altrimenti prova a leggere un qualsiasi tutorial, introduzione o corso... Quello che vuoi fare si fa con un conditional statement. Il piú comune è questo:
https://www.arduino.cc/reference/en/lan ... ucture/if/
Dovrai introdurre una variabile supplementare in cui memorizzare lo stato (incrementare o decrementare).
Boiler
0
voti
ho aggiunto questa riga invece:if (n==31) n=1;
lcd.print (" inverto"); conta sino a 30 poi torna a ricontare da 1 e sempre sino a 30.Invece desidero che giunto a 31 decrementa 30,31,29,28,27...sino a 1.Non so cosa fare piu'
lcd.print (" inverto"); conta sino a 30 poi torna a ricontare da 1 e sempre sino a 30.Invece desidero che giunto a 31 decrementa 30,31,29,28,27...sino a 1.Non so cosa fare piu'
0
voti
Va bene, mi fido...
Un modo abbastanza semplice per realizzare quello che vorresti fare è usare due variabili, una per il conteggio ed una per memorizzare la direzione in cui contare che varrà +1 o -1
All interno del ciclo loop, se conteggio == 31 && direzione == +1 allora direzione = -1; se conteggio ==0 && direzione == -1 allora direzione = +1; conteggio = conteggio + direzione;
Un modo abbastanza semplice per realizzare quello che vorresti fare è usare due variabili, una per il conteggio ed una per memorizzare la direzione in cui contare che varrà +1 o -1
All interno del ciclo loop, se conteggio == 31 && direzione == +1 allora direzione = -1; se conteggio ==0 && direzione == -1 allora direzione = +1; conteggio = conteggio + direzione;

1
voti
Vorrei capire che tipo di display hai, perché includi la libreria <LCD.h> e la libreria <LiquidCrystal_I2C.h>. La prima serve per i display che si connettono "direttamente" ad Arduino e occupano molti pin, mentre la seconda serve per i display che hanno il controllore I2C PCF8574 nella parte posteriore e che vengono controllati soltanto con due fili più Vcc e GND (4 in tutto).
Per quello che vuoi fare ti conviene usare l'istruzione "for" che trovi spiegata qui.
Se al posto di:
1 - prendi la variabile n e mettila uguale a 0
2 - posiziona il cursore del display alla riga 2 terzo carattere
3 - visualizza il valore di n
4 - aspetta mezzo secondo
5 - se n è minore di 30, incrementa n di 1 e vai al punto 2; se no esci dal ciclo
Con queste istruzioni il tuo programma conterà da 0 a 29 e poi ricomincerà, sempre da 0 a 29. I limiti del conteggio sono dentro l'istruzione "for".
Se vuoi che il programma continui contando alla rovescia, dopo il ciclo di for che conta avanti, ne devi mettere uno che conta all'indietro, così:
1 - prendi la variabile n e mettila uguale a 29
2 - posiziona il cursore del display alla riga 2 terzo carattere
3 - visualizza il valore di n
4 - aspetta mezzo secondo
5 - se n è maggiore di 0, decrementa n di 1 e vai al punto 2; se no esci dal ciclo
Spero di esserti stato utile.
Ciao,
P.
P.S. Da coetaneo a coetaneo: non prendertela, so' ragazzi...
Per quello che vuoi fare ti conviene usare l'istruzione "for" che trovi spiegata qui.
Se al posto di:
- Codice: Seleziona tutto
lcd.setCursor(3,2);
lcd.print(n++,DEC);
delay(500);}
- Codice: Seleziona tutto
for (n=0; n<30; n++) {
lcd.setCursor(3,2);
lcd.print(n,DEC);
delay(500);
}
1 - prendi la variabile n e mettila uguale a 0
2 - posiziona il cursore del display alla riga 2 terzo carattere
3 - visualizza il valore di n
4 - aspetta mezzo secondo
5 - se n è minore di 30, incrementa n di 1 e vai al punto 2; se no esci dal ciclo
Con queste istruzioni il tuo programma conterà da 0 a 29 e poi ricomincerà, sempre da 0 a 29. I limiti del conteggio sono dentro l'istruzione "for".
Se vuoi che il programma continui contando alla rovescia, dopo il ciclo di for che conta avanti, ne devi mettere uno che conta all'indietro, così:
- Codice: Seleziona tutto
for (n=29; n>0; n--) {
lcd.setCursor(3,2);
lcd.print(n,DEC);
delay(500);
}
1 - prendi la variabile n e mettila uguale a 29
2 - posiziona il cursore del display alla riga 2 terzo carattere
3 - visualizza il valore di n
4 - aspetta mezzo secondo
5 - se n è maggiore di 0, decrementa n di 1 e vai al punto 2; se no esci dal ciclo
Spero di esserti stato utile.
Ciao,
P.
P.S. Da coetaneo a coetaneo: non prendertela, so' ragazzi...
0
voti
Ciao pgiagno e grazie, mi sono avvicinato ad arduino perche' lo trovo interessante e anche perche' mi impegna a tenermi su e non cadere in depressione come accade spesso a quelli della mia eta' e non perche' debba diventare programmatore.Il fatto che chieda a destra e a manca spiegazioni non e' perche' voglia la pappa bella e pronta,ma il solo pensiero di avere una risposta ed imparare nel mio piccolo qualcosa e' per me fonte di sollievo e di gratificazione.Questo e' IL VERO MOTIVO che faccio ai vari siti .Che siano ragazzi,si sa che si comportano cosi,pero' un po' di etica comportamentale non guasterebbe.Oramai ho assorbito il tutto e non e' successo nulla.Ringrazio quanti mi hanno aiutato e che lo faranno in seguito se sara' necessario.Buona giornata a tutti.
0
voti
Ti consiglio di fare pratica di programmazione in C con un qualunque compilatore gratuito come GCC e seguire uno degli nmila tutorial che si trovano in internet dove avrai modo di imparare tutto quello che c'è da sapere su cicli, strutture di controllo, algoritmi principali ecc, bastano poche settimane per farsi un idea. Una volta acquisita l idea di come si pensa un algoritmo si può applicare il concetto ad un microcontrollore che rappresenta un grado di complessità maggiore. È come se uno che non ha mai guidato una macchina facesse scuola guida su una ruspa dove si trova davanti mille leve che su una vettura non ci sono.

24 messaggi
• Pagina 1 di 3 • 1, 2, 3
Chi c’è in linea
Visitano il forum: Nessuno e 10 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)





