Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1055
http://cesarecacitti.wordpress.com/
|
 |
« on: September 15, 2012, 04:13:01 am » |
Oggi stavo preparando uno sketch per fare una centralina di luci per presepe, lo sketch non è completo ma ho già avuto dei problemi con i pulsanti che aumentano o diminuiscono il tempo di alba tramonto. Questo è lo sketch, per il momento mostra i dati su un display lcd, a me pasta incrementare il valore delle 2 variabili che vengono stampater, x il pwm dopo mi arrangio  . int a = 0; int b = 25; int val = 0; int val1 = 0; #include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { pinMode(7, INPUT); pinMode(8, INPUT); lcd.begin(16, 2); lcd.print("Luci presepe by"); lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print("Cesare Cacitti "); }
void loop() {
delay(5000); val = digitalRead(7); if (val == HIGH) { a=a+1; } val1 = digitalRead(8); if (val1 == HIGH) { a=a-1; } lcd.setCursor(0, 0); lcd.clear(); lcd.print("Giorno:"); lcd.print(a); lcd.setCursor(0, 1); lcd.print("Notte:"); lcd.print(b);
}
Grazie
|
|
|
|
« Last Edit: September 15, 2012, 04:29:53 am by cece99 »
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16547
Don't know what I do
|
 |
« Reply #1 on: September 15, 2012, 04:32:43 am » |
E che problemi hai? Se non lo dici... 
|
|
|
|
|
Logged
|
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 387
Posts: 10288
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #2 on: September 15, 2012, 04:38:29 am » |
è da ieri che sta dando i numeri, povero cecé, così giovane, già preda di sostanze dannose....
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1055
http://cesarecacitti.wordpress.com/
|
 |
« Reply #3 on: September 15, 2012, 04:42:12 am » |
è da ieri che sta dando i numeri, povero cecé, così giovane, già preda di sostanze dannose....
praticamente se premo i bottoncini i numeri non cambiano in pratica non risponde ai miei comandi  . Menny, sai alla fine cos era? avevo inserito male il chip nella breadboard e faceva falso contatto (eppure l'ho inserito e disinserito una 10ina di volte -.-')
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16547
Don't know what I do
|
 |
« Reply #4 on: September 15, 2012, 05:00:37 am » |
Perché hai messo quel delay(5000) all'inizio del loop? In questo modo la lettura dei pulsanti viene eseguita solo 1 volta ogni 5 secondi e se non cogli l'attimo esatto potresti non leggere la pressione. Se il motivo è evitare lo sfarfallio del display, metti la stampa sul display solo ogni 500/1000 ms, con un if basato su millis, ad esempio. Inoltre come è sempre stato detto, metti 2 letture del pin separate da un piccolo delay per evitare rimbalzi del pulsantino e letture doppie/triple.
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1055
http://cesarecacitti.wordpress.com/
|
 |
« Reply #5 on: September 15, 2012, 05:06:44 am » |
Perché hai messo quel delay(5000) all'inizio del loop? In questo modo la lettura dei pulsanti viene eseguita solo 1 volta ogni 5 secondi e se non cogli l'attimo esatto potresti non leggere la pressione. Se il motivo è evitare lo sfarfallio del display, metti la stampa sul display solo ogni 500/1000 ms, con un if basato su millis, ad esempio. Inoltre come è sempre stato detto, metti 2 letture del pin separate da un piccolo delay per evitare rimbalzi del pulsantino e letture doppie/triple.
non mi è stato detto, ora continuo le prove.....
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16547
Don't know what I do
|
 |
« Reply #6 on: September 15, 2012, 08:55:27 am » |
Non ho che scritto che sia stato detto a te, ma che è viene sempre detto, sottintendendo il forum. 
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1055
http://cesarecacitti.wordpress.com/
|
 |
« Reply #7 on: September 27, 2012, 09:55:24 am » |
oggi mi sono arrivati i pulsantini e ho cominciato a provare, questo è lo sketch che è uscito  byte a = 0; byte b = 25; int val = 0; int val1 = 0; int val2 = 0; int brightness = 0; #include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { pinMode(7, INPUT); pinMode(8, INPUT); pinMode(6, INPUT); lcd.begin(16, 2); lcd.print("Luci presepe by"); lcd.setCursor(0, 1); lcd.print("Cesare Cacitti "); delay(5000); }
void loop() { lcd.setCursor(0, 0); lcd.clear(); lcd.print("Giorno:"); lcd.print(a); lcd.setCursor(0, 1); lcd.print("Notte:"); lcd.print(b); delay(100);
val = digitalRead(7); if (val == HIGH) { a=a-1; } val1 = digitalRead(8); if (val1 == HIGH) { a=a+1; }
}
quello che vorrei fare è riuscire a mettere un interruttore che quando è chiuso mi permette di cambiare i tempi, e quando lo apro, mi fa partire una funzione basata sul fade, che mi fa fare il fade sul led con velocità della variabile a che ho già impostato con quella variabile. Qualcuno potrebbe integrarmi nello sketch, un if (che funziona) nel quale dopo inserisco il fade?
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #8 on: September 27, 2012, 10:10:14 am » |
Perché delay(5000) dopo il setup ?
Studiati bene blink without delay. Leggi ogni pulsante ogni 20-50ms (prova per vedere qual è il valore che dà la "responsività" migliore), e quando rilevi un cambio di stato (da premuto a rilasciato o viceversa) modifica il contatore.
Per quanto riguarda il fade, anche quello va inserito con la tecnica di blink without delay, altrimenti ti trovi a leggere i pulsanti solo all'inizio o alla fine del ciclo di fade, col risultato che l'oggetto diventa inutilizzabile.
PS: CTRL+T prima di postare il codice, grazie!
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16547
Don't know what I do
|
 |
« Reply #9 on: September 27, 2012, 10:11:43 am » |
Perché delay(5000) dopo il setup ?
Per la schermata iniziale col suo nome 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #10 on: September 27, 2012, 10:34:34 am » |
Ah, già! Una volta l'ho fatto anch'io... ma solo per mostrare il nome del programma (e poi erano solo 3 secondi  )
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1055
http://cesarecacitti.wordpress.com/
|
 |
« Reply #11 on: September 27, 2012, 11:08:19 am » |
E cosa farebbe sto control T prima di postare il cosice, su mac os x mi apre una nuova scheda  . Comunque non ci capisco nulla! Ho creato uno sketch (non funzionante) per farvi capire cosa dovrei fare: byte a = 0; byte b = 25; int val = 0; int val1 = 0; int val2 = 0; int brightness = 0; #include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { pinMode(7, INPUT); pinMode(8, INPUT); pinMode(6, INPUT); lcd.begin(16, 2); lcd.print("Luci presepe by"); lcd.setCursor(0, 1); lcd.print("Cesare Cacitti "); delay(5000); }
void loop() { lcd.setCursor(0, 0); lcd.clear(); lcd.print("Giorno:"); lcd.print(a); lcd.setCursor(0, 1); lcd.print("Notte:"); lcd.print(b); delay(100); val1 = digitalRead(8); if (val1 == HIGH) { val = digitalRead(7); if (val == HIGH) { a=a-1; } val1 = digitalRead(8); if (val1 == HIGH) { a=a+1; } else { //codice fade }
}
}
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #12 on: September 27, 2012, 11:10:28 am » |
E cosa farebbe sto control T prima di postare il cosice, su mac os x mi apre una nuova scheda. Autoformattazione del codice. La voce di menu è Strumenti => Formattazione automatica. Su Linux indica l'hotkey CTRL+T, su Mac non so.
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1055
http://cesarecacitti.wordpress.com/
|
 |
« Reply #13 on: September 27, 2012, 11:15:08 am » |
E cosa farebbe sto control T prima di postare il cosice, su mac os x mi apre una nuova scheda. Autoformattazione del codice. La voce di menu è Strumenti => Formattazione automatica. Su Linux indica l'hotkey CTRL+T, su Mac non so. ok, ma nessuno sa aiutarmi?
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #14 on: September 27, 2012, 11:19:34 am » |
ok, ma nessuno sa aiutarmi? Allora siamo a questo punto: hai due pulsanti. Premendo uno di questi una variabile va incrementata. Premendo l'altro, la stessa variabile va decrementata. Ti è stato fornito materiale in abbondanza per approfondire. Ti sono stati dati suggerimenti (vedi il debounce con doppia lettura), ma il tuo codice è ancora lì senza nemmeno una indentazione decente. Scusa, ma secondo me prima di chiedere altro aiuto dovresti mostrare più impegno 
|
|
|
|
|
Logged
|
|
|
|
|
|