Problema bottone e led

Ciao a tutti ! Sono nuovo in questo settore, ed ho un problemino tecnico: ho creato un sistema con un bottone ed un led (dovrebbe essere tutto giusto dato che alla pressione del pulsante si accende il led ed al rilascio si spegne). Poi volendo sperimentare di più ho voluto creare un codice che permettesse al led di cambiare modalità di lampeggio ogni volta che si pigiasse il bottone. Codice:

// bottone 3 // led 9 int bottone; int i=0; void setup() { pinMode (9, OUTPUT); pinMode (3, INPUT); }

void loop() { bottone = digitalRead(3);

if (i==0 ) { digitalWrite (9, HIGH); } if (bottone==HIGH && i==0 ) { i=1; delay (1000); } if (i==1) { digitalWrite (9, HIGH); delay (200); digitalWrite (9, LOW); delay (200); } if (bottone==HIGH && i==1) { i=2; delay (1000); } if (i==2) { digitalWrite (9, HIGH); delay (1000); digitalWrite (9, LOW); delay (1000); } if (bottone==HIGH && i==2) { i=3; delay (1000); } if (i==3 ) { digitalWrite (9, LOW); } if (bottone==HIGH && i==3 ) { i=0; delay (1000); } }

Ma ogni volta che lo aziono la luce del led rimane accesa, e se premo il bottone il led lampeggia 2 volte e poi si riferma.

Mi potreste aiutare ?

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Il regolamento l'ho letto e mi sono presentato, grazie per gli altri link !

Tu quindi ora stai sperimentando il caso in cui col pulsante vari il lampeggio, giusto? Devi usare la funzione millis per gestire il lampeggio e modificare la sequenza con uno switch..case in base al valore che ha assunto. Millis quindi controllerà la durata del tempo on e off del led, mentre con lo siwtch case selezionerai il tipo di lampeggio.

Lo so, non è facile.

Nel tuo sketch manca anche una cosa importante: il debounce http://arduino.cc/en/Tutorial/Debounce

che serve a questo http://it.wikipedia.org/wiki/Circuito_anti-rimbalzo

puoi farlo sia hardware che software o entrambi, senza questo il programma potrebbe saltare da 1 a 3 non leggendo correttamente l'impulso del button

ciao

Grazie a tutti per le risposte!

Non ho capito nulla, magari lo riprenderò più avanti quando diventerò più esperto,

Grazie ancora !

Non diventerai esperto se non comprendi queste basi... È come se prima impari a correre e poi a camminare, non è un passaggio possibile.

Ciao