... ho idea che ti devi andare a ristudiare come funziona la digitalRead() perché, come l'hai messa tu negli IF ... difficilmente farà quello che vuoi tu :
Inoltre è sempre buona cosa metter tutto il codice perché altrimenti ... diventa di difficile comprensione.
... primo, un pulsante reale NON è un pulsante "ideale" e, ogni volta che lo premi, in realtà sul pin di Arduino arriva questo:
e quindi DEVI adottare tecniche di "debouncing".
... secondo, un pin in input, lasciato flottante, data la sua alta impedenza, capta un'infinità di disturbi, quindi, a secondo se il tuo pulsante chiude verso massa o verso il positivo, dovrai mettere rispettivamente una resistenza di pull-up o di pull-down.
... terzo, sei conscio che, durante il delay(), il programma resta fermo li dove è e non può fare altro (... quindi se durante il delay pigi e lasci il bottone NON viene letto da nessuno)?
Sistemate/verificate tutte queste problematiche, potrai passare e capire cosa non va nel codice, prima ...
... è più difficile per te capire cosa succede
l'IF chiede due condizioni una se il pulsante è premuto l'altra "AND" chiede il valore di int 0 o 1,
questa variante serve per accendere o spegnere il led con lo stesso pulsante.
comunque ho risolto, facendo vari tentativi magari anche sbagliati dato che sto imparando adesso.
Ho risolto in questo modo, a me sembra sbagliato ma funzione bene.
si ma in C/C++ non esiste il token AND ma &&, quindi mi chiedevo se fosse una macro di Arduino.
Il codice va inserito all'interno dei tag code.
Quel digitaleRead è assurdo!
int X=0;
int pulsante;
void setup() {
pinMode(0, INPUT);
pinMode(1, OUTPUT);
}
void loop() {
if( digitalRead(0) )
{
delay(150);
if (!digitalRead(0)) return;
X = !X
digitalWrite(1, X);
delay(1000);
}
}
Sto usando Arduino Nano, il led rosso (presente sulla scheda di arduino) collegato al pin D0 RX rimane acceso e si spegne appena premo il pulsante, sul pin D1 TX è collegato un led che si accende e si spegne perfettamente
I pin 0 e 1 servono per la comunicazione attraverso la USB e il carico dello Sketch.
Usa come out ul pin 13 e come entrata qualsiasi altro pin che non sia 0 e 1.
Da quel codice che hai scritto devo dirti che Arduino si programma in C e conosce anche una parte di C++.
Quel codice non é ne uno né l' altro.
tutti occupati anche le entrate analogiche, nel progetto c'è anche un lcd 16x2 e un ds1307, quindi ne rimangono ben pochi liberi, aggiungi qualche pulsante, risultato solo 0 e 1 liberi.
Anch'io credo che sia un caso, sono andato a tentativi fin che ho trovato questa soluzione, il pin 0 che dovrebbe essere impostato come INPUT dato che c'è collegato un pulsante per caso l'ho impostato in OUTPUT e voilà funziona, non so perché, questo lo chiedo a voi esperti....
ommu:
Anch'io credo che sia un caso, sono andato a tentativi fin che ho trovato questa soluzione, il pin 0 che dovrebbe essere impostato come INPUT dato che c'è collegato un pulsante per caso l'ho impostato in OUTPUT e voilà funziona, non so perché, questo lo chiedo a voi esperti....
Non rispondo a questa domanda.
Tu impara il C per scrivere dei sketch corretti. Solo questo é la solzione.