Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #15 on: September 27, 2012, 11:24:57 am » |
Scusa, ma secondo me prima di chiedere altro aiuto dovresti mostrare più impegno  Quoto. Il forum non è il CED, Centro Elaborazione Dati, dove chiami e ti fai preparare il software di cui hai bisogno. Come ripeto tante volte, se qualcuno ti scrive il codice: 1) risolvi il tuo problema; 2) non impari nulla ed alla prox difficoltà sei nuovamente a chiedere.
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1048
http://cesarecacitti.wordpress.com/
|
 |
« Reply #16 on: September 27, 2012, 11:28:53 am » |
Scusa, ma secondo me prima di chiedere altro aiuto dovresti mostrare più impegno  Quoto. Il forum non è il CED, Centro Elaborazione Dati, dove chiami e ti fai preparare il software di cui hai bisogno. Come ripeto tante volte, se qualcuno ti scrive il codice: 1) risolvi il tuo problema; 2) non impari nulla ed alla prox difficoltà sei nuovamente a chiedere. Si, ok, ma non ho capito bene cosa devo fare -.-'
|
|
|
|
|
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
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #17 on: September 27, 2012, 11:42:57 am » |
Ma parliamo di pulsanti o di interruttori? Un pulsante è un contatto che si chiude o apre temporaneamente, un interruttore è un contatto permanente. Se usi un interruttore, basta alternare con un if: if chiuso {xxx} else {yyy}. 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,
|
|
|
|
|
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 #18 on: September 27, 2012, 11:44:22 am » |
Si, ok, ma non ho capito bene cosa devo fare -.-' Secondo me dovresti fare domande più specifiche. E per fare questo dovresti provare a scrivere più codice, fare prove, sbattere la testa sul tavolo, insomma fare un po' quello che si fa tutti quanti per divertirsi con le varie arduinate più o meno semplici che vengono in mente :-)
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1048
http://cesarecacitti.wordpress.com/
|
 |
« Reply #19 on: September 27, 2012, 11:52:36 am » |
Ma parliamo di pulsanti o di interruttori? Un pulsante è un contatto che si chiude o apre temporaneamente, un interruttore è un contatto permanente. Se usi un interruttore, basta alternare con un if: if chiuso {xxx} else {yyy}. 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,
ecco cosa non avevate capito!!! per passare dalla modalità "programmazione" a quella di "esecuzione" utilizzo un interruttore, mentre per fare la "programmazione" dei tempi utilizzo due pulsantini  . Sto provando in tutti i modi ma non riesco a far funzionare nulla  Questo è lo sketch (compila ma non funziona: quando muovo l'interruttore nel display non si vede più nulla  ) 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); //scrivo nome e cognome :-) }
void loop() { //stampo i tempi lcd.setCursor(0, 0); lcd.clear(); lcd.print("Giorno:"); lcd.print(a); lcd.setCursor(0, 1); lcd.print("Notte:"); lcd.print(b); delay(100);
val2 = digitalRead(6); // se ho l'interruttore chiuso, vado in modalità programmazione if (val2 == HIGH) { val = digitalRead(7); if (val == HIGH) { a=a-1; } val1 = digitalRead(8); if (val1 == HIGH) { a=a+1; } else {// se è aperto vado in modalità esecuzione //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
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #20 on: September 27, 2012, 11:59:50 am » |
Devi creare 2 funzioni, una per programmare ed una per eseguire ciò che deve fare. Quando è in programmazione, gestisci il + ed il -.
|
|
|
|
|
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 #21 on: September 27, 2012, 12:02:30 pm » |
ecco cosa non avevate capito!!! vabbe' se le cose non le dici...  (e insisti con il codice non indentato...)
|
|
|
|
« Last Edit: September 27, 2012, 12:04:57 pm by tuxduino »
|
Logged
|
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1048
http://cesarecacitti.wordpress.com/
|
 |
« Reply #22 on: September 27, 2012, 12:08:27 pm » |
Devi creare 2 funzioni, una per programmare ed una per eseguire ciò che deve fare. Quando è in programmazione, gestisci il + ed il -.
ma non lo sto già facendo?
|
|
|
|
|
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 #23 on: September 27, 2012, 12:12:26 pm » |
Ecco un esempio di quello che secondo me è un codice molto più leggibile, quindi comprensibile. #include <LiquidCrystal.h>
byte cntGiorno = 0; byte cntNotte = 25; int brightness = 0;
// pin dell'interruttore di programmazione const int modeSwitchPin = 6;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { pinMode(modeSwitchPin, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); lcd.begin(16, 2); lcd.print("Luci presepe by"); lcd.setCursor(0, 1); lcd.print("Cesare Cacitti "); delay(5000); //scrivo nome e cognome :-) }
void loop() { //stampo i tempi lcd.setCursor(0, 0); lcd.clear(); lcd.print("Giorno:"); lcd.print(cntGiorno); lcd.setCursor(0, 1); lcd.print("Notte:"); lcd.print(cntNotte); delay(100);
// determino se siamo in modalità programmazione // o normale funzionamento programModeActive = (digtalRead(modeSwitchPin) == HIGH));
if (programModeActive) { decBtnState = digitalRead(decBtnPin); incBtnState = digitalRead(incBtnPin); if (decBtnState == HIGH) { cntGiorno--; } else if (incBtnState == HIGH) { cntGiorno++; } // come si seleziona il contatore notte ? } else { // codice fade } }
Ora vo' a cena, buona fortuna! 
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 3001
|
 |
« Reply #24 on: September 27, 2012, 12:12:32 pm » |
Ti ho modificato leggermente il codice. Non l'ho provato, ma dovrebbe funzionare. Se premi il pulsante sul pin 8 incrementa a fino al valore 255, se premi il pulsante sul pin 7 decrementa a fino al volore 0. Ho aggiunto un controllo per l'overflow. Ho tolto il codice per il fade perché sinceramente non ho capito con quale sequenza di pulsanti lo volessi attivare. #include <LiquidCrystal.h>
byte a = 0; byte b = 25;
int up = LOW; int down = LOW; int check = LOW;
int brightness = 0;
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(50); up = digitalRead(8); down = digitalRead(7); check = digitalRead(6);
if (check == HIGH) {
if (up == HIGH) { if (a<255) a++; }
if (down == HIGH) { if (a>0) a--; }
} } Qualcuno sul forum ha scritto del codice per attivare le funzioni a seconda di quanto si tiene premuto il pulsante: pressione breve fai una cosa, pressione lunga fanne un'altra. Non ricordo chi, ma se fai una ricerca forse esce qualcosa. Invece di scrivere come in basic a=a+1; in C si può usare la sintassi a++; per incrementare o a--; per decrementare. Esistono anche ++a; e --a;, ma è un'altro discorso. 
|
|
|
|
« Last Edit: September 27, 2012, 12:14:58 pm by PaoloP »
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1048
http://cesarecacitti.wordpress.com/
|
 |
« Reply #25 on: September 27, 2012, 12:18:21 pm » |
@paoloP grazie mille per il codice, ti spiego a cosa serve il codice del fade: questa è una centralina per presepe, con i pulsantini seleziono il tempo di quanto deve durare alba e tramonto (il tramono o sera lo devo ancora implementare  ), dopo, quando vado in modalità esecuzione il codice del fade mi serve x modificare la luminosità dei led. Una cosa: visto che ho praticamente finito tutti i pin del micro, posso usare i pin analogici come digital input?
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 3001
|
 |
« Reply #26 on: September 27, 2012, 12:21:11 pm » |
visto che ho praticamente finito tutti i pin del micro, posso usare i pin analogici come digital input?
Si, i pin analogici A0..A5 sono anche pin digitali numerati da 14 a 19. Se usi A4 e A5 non puoi usare l'I2C, cosi come se ti servisse la SPI non devi usare i pin dal 10 al 13.
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1048
http://cesarecacitti.wordpress.com/
|
 |
« Reply #27 on: September 27, 2012, 12:32:46 pm » |
visto che ho praticamente finito tutti i pin del micro, posso usare i pin analogici come digital input?
Si, i pin analogici A0..A5 sono anche pin digitali numerati da 14 a 19. Se usi A4 e A5 non puoi usare l'I2C, cosi come se ti servisse la SPI non devi usare i pin dal 10 al 13. bene, quando finisco i compiti continuo la sperimentazione, intanto GRAZIEEEE 
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Dueville (VI)
Offline
Edison Member
Karma: 15
Posts: 1048
http://cesarecacitti.wordpress.com/
|
 |
« Reply #28 on: September 27, 2012, 01:26:18 pm » |
allora... con questo sketch, quando cambio la posizione del deviatore, non fa quello che deve fare: #include <LiquidCrystal.h>
byte a = 0; byte b = 25;
int up = LOW; int down = LOW; int check = LOW;
int brightness = 0;
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(50); up = digitalRead(8); down = digitalRead(7); check = digitalRead(6);
if (check == HIGH) {
if (up == HIGH) { if (a<255) a++; }
if (down == HIGH) { if (a>0) a--; }
} else { lcd.clear(); lcd.print("Esecuzione"); } } qualcuno ha un idea?
|
|
|
|
|
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 #29 on: September 27, 2012, 01:38:07 pm » |
Dovresti descrivere meglio il problema. "Non fa quello che deve fare" è troppo generico. Devi dire cosa ti aspetti e cosa succede invece.
|
|
|
|
|
Logged
|
|
|
|
|
|