Ciao,
sono alle primissime armi (una settimana), sto imparando i comandi per effettuare i primi esperimenti con Arduino UNO.
Ho messo assieme due "esercizi" trovati su dei manuali in uno sketch , ma non riesco a farli funzionare correttamente.
Il primo è l'accensione di un led (LedB) con un pulsante il secondo l'intermittenza di un altro led (LedY). il problema che l'accensione prende il Delay di quello intermittente.
Dove sbaglio o casa manca
#define LedB 11
#define Button 7
#define LedY 12
int val = 0;
int old_val = 0;
int state = 0;
int ledDelay = 1000;
void setup () {
pinMode(LedB, OUTPUT);
pinMode(Button, INPUT);
pinMode(LedY, OUTPUT);
}
void loop() {
val = digitalRead(Button);
if ((val == HIGH) && (old_val == LOW)) {
state = 1 - state;
delay(10);
}
old_val = val;
if (state == 1) {
digitalWrite(LedB, HIGH);
}
else {
digitalWrite(LedB, LOW);
}
digitalWrite(LedY, HIGH);
delay(ledDelay);
digitalWrite(LedY, LOW);
delay(ledDelay);
}
[EDIT] sostituito i quote con code Tags. Uwe [/EDIT]
Il codice deve essere racchiuso nei Tag Code e non Tag Quote. (Il bottone con il simbolo #)
Dovresti prima di metterli insieme rivedere il led blink da solo ma modificarlo per non usare la delay() ma millis()
Vedi l'esempio che viene fornitor nell'IDE BlinkWithoutDelay
Teoricamente si, fondi i due codici nella loop(), però in molti casi non puoi lavorare con i delay() perchè sono bloccanti e quindi se una parte del codice li usa, la seconda parte non può essere in esecuzione.
Un pò di consigli su suel codice.
1- modifica il post e metti i tag code e non i tag quote.
2- per tutti i pin usa const come hai fatto per ledPin, inoltre a tutti aggiungerei la parola pin.
Una curiosità, in C potresti usare l'if in linea per accorpare parti del codice, secondo me diventano poco leggibili, ma tanto per informazione.
Da così (circa 6 righe):
nid69ita:
Una curiosità, in C potresti usare l'if in linea per accorpare parti del codice, secondo me diventano poco leggibili, ma tanto per informazione.
Da così (circa 6 righe):
chutzpah:
Mi indirizzate su un più corretto linguaggio di programmazione ?
Il linguaggio Arduinico è un superset del C++. Inizia studiando questo linguaggio con uno dei tanti manuali che trovi gratuitamente e liberamente online. Se non conosci la sintassi le regole ed i comandi del C++ non puoi neanche scrivere del buon codice su Arduino
Cerca le dispense (un pdf) della professoressa Tiziana Marsella, ha fatto un opuscolo molto carino sulla programmazione Arduino per un ITIS e lo ha reso disponibile.
Cerca in internet "Tiziana Marsella arduino programmazione"
Mi riferivo proprio alla dispensa della Professoressa Tiziana Marsella, mi sembra ben fatta e semplice per me alle prime armi. Ma i vostri (preziosi) suggerimenti mi hanno cambiato un pochino le carte in tavola.
Per ora mi conviene imparare la logica con la dispensa che ho scaricato, in seguito raffinerò ! Mi sembra la cosa più logica.
Alt. Consigli o suggerimenti sul tuo codice sono i miei 1,2,3.
L'altro è solo una curiosità. Non tenerne conto. Quando conoscerai meglio il C magari potrai rileggerlo e capirlo.
Diciamo che è un corso C advanced. Tralascialo e passa oltre, come dici tu meglio affrontare un argomento alla volta