@xoxoxoxoxo: essendo il tuo primo post, ti chiederei di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto ) e di leggere con attenzione il REGOLAMENTO ... Grazie.
Ciao,
nella funzione void setup dovresti specificare che il pin che stai usando per il pulsante sono di input
pinMode(pulsante,INPUT);
dove pulsante va sostituto con il tuo pin al quale colleghi il pulsante, mentre quelli di output, vedi quello del led che vuoi accendere dovranno essere impostati allo stesso modo sostituendo "INPUT" con "OUTPUT"
Finchè non premi il pulsante il pin di input è flottante perchè non ha una tensione di riferimento.
Quando premi il pulsante invece il pin è collegato a massa quindi segna stato logico basso.
Devi mettere una resistenza di pullup da 10k tra 5V e pin (riga 51 nella breadboard del disegno) in modo che legge stato logico alto quando il pulsante non è premuto.
Quando il bottone NON è premuto, hai una resistenza che tiene il pin ad un livello logico ben definito? Perché i pin in INPUT NON vanno MAI lasciati non connessi ...
Hai messo la resistenza in serie al LED che hai collegato al pin 3 ?
Oppure, lasci il circuito così com'è ed impost la resistenza di pull-up interna all'arduino. Per fare ciò devi settare ad HIGH il pin che hai impostato come ingreesso:
void setup() {
pinMode(8,INPUT); //questo sarebbe il bottone
// forza il pin 8 a livello alto -> abilita la resistenza di pull-up interna ad arduino
digitalWrite(8, HIGH);
pinMode(3,OUTPUT); //questo il led
Serial.begin(9600);
}
non ho capto nulla facciamo passo per passo, cominciamo da questo:
che cosa cambia di preciso se metto
pinMode(8,INPUT_PULLUP); al posto che
pinMode(8,INPUT);
?
e poi adesso sto cercando di fare un altro esercizo ma non mi viene.
void setup() {
pinMode(3, OUTPUT);
Serial.begin(9600);
}
void loop() {
for (int i = 0.0; i < 5; i += 0.1) {
analogWrite(3, i);
Serial.print(i);
}
}
con questo codice sopra nel serial monitor segna 000000000 all'infinito. Mentre se scrivo al posto di Serial.print(i); Serial.print(i+" "); non segna proprio niente... (segna che fa spazi all'infinito) perché?
e perché segna sempre zero e non incrementa?
@Giovicavalla e SukkoPera: ... ma lo avete letto il codice ? Che cosa consigliate a fare di passare a float o double (... che sono la stessa cosa) quando ... la la usa in una analogWrite() che accetta un intero da 0 a 255 ?