Ah lol! Ho guardato il for ma non quel che ci faceva dentro! ![]()
SukkoPera:
Ah lol! Ho guardato il for ma non quel che ci faceva dentro!
E siamo stati in due. :
:![]()
1) torniamo alla domanda di prima. Perché se dichiaro in setup pinMode(3, OUTPUT);//led il led si accende di più?
2) Che cosa succede se non metto la resistenza qui...
https://akphoto3.ask.fm/354/870/027/-39996964-1tq3754-842nrsa3s24e0p/original/Untitled.png
e qui? ( al bottone?)
https://akphoto3.ask.fm/369/961/865/-329996975-1tq3798-iqqdtejccbo9iqk/original/Untitled.png
3) e il secondo problema era quello del bottone, facciamo che risposto codice e disegno.
https://akphoto3.ask.fm/943/137/074/-339996995-1tq37ck-dst9m22b91jesia/original/Untitled.png
int bottone = 3;
int lampadina = 5;
void setup() {
pinMode(bottone, INPUT);//bottone
digitalWrite(bottone, HIGH);
pinMode(lampadina, OUTPUT);//led
Serial.begin(9600);
}
void loop() {
if (digitalRead(bottone) == HIGH) {
digitalWrite(lampadina, HIGH);
} else {
digitalWrite(lampadina, LOW);
}
}
che sbaglio?
Oh mio Dio, ce l'ho fatta, funziona
int bottone = 3;
int lampadina = 5;
void setup() {
pinMode(bottone, INPUT);//bottone
digitalWrite(bottone, HIGH);
pinMode(lampadina, OUTPUT);//led
Serial.begin(9600);
}
void loop() {
if (digitalRead(bottone) == LOW) {
digitalWrite(lampadina, HIGH);
} else {
digitalWrite(lampadina, LOW);
}
}
funziona anche così
int bottone = 3;
int lampadina = 5;
void setup() {
pinMode(bottone, INPUT);//bottone
pinMode(lampadina, OUTPUT);//led
Serial.begin(9600);
}
void loop() {
if (digitalRead(bottone) == LOW) {
digitalWrite(lampadina, HIGH);
} else {
digitalWrite(lampadina, LOW);
}
}
ma allora che cacchio ho sbagliato ieri?
Però vorrei cmnq mi rispondeste alle domande sopra ![]()
xoxoxoxoxo:
2) Che cosa succede se non metto la resistenza qui...https://akphoto3.ask.fm/354/870/027/-39996964-1tq3754-842nrsa3s24e0p/original/Untitled.png
... che bruci il pin di Arduino ! ![]()
Ti rammento che ogni pin di Arduino può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore). Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.
Guglielmo
xoxoxoxoxo:
1) torniamo alla domanda di prima. Perché se dichiaro in setup pinMode(3, OUTPUT);//led il led si accende di più?
Perché non farlo è sbagliato e il processore NON sa che tu vuoi usare quel pin come OUTPUT e quindi hai un malfunzionamento.
xoxoxoxoxo:
e qui? ( al bottone?)
https://akphoto3.ask.fm/369/961/865/-329996975-1tq3798-iqqdtejccbo9iqk/original/Untitled.png
Come ti è stato detto, i pin in INPUT di Arduino NON possono essere lasciati flottanti. L'alta impedenza degli ingressi fa si che se NON li colleghi a nulla (... e così è quando NON premi il bottone), essi captino qualsiasi disturbo, oscillando in modo casuale tra LOW e HIGH.
Guglielmo
adesso vorrei fare che schiaccio il bottone e lo lascio andare e la lampadina si accende poi lo shciaccio e lo lascio andare adinuovo e si spegne, ma siccome non riesco ho fatto un passo indietro. Sto quindi controllando che cosa legge quando lo tengo premuto e che cosa quando lo lascio andare.
Quando lo tengo premuto mi stampa "bottone premuto" mentre quando lo lascio andare (non tocco nulla quindi) questo è quello che vedo. Che cavolo c'è che non va?

Hai letto la mia spiegazione precedente ? ... hai messo questa benedetta resistenza di pull-up sull'ingresso di Arduino in questo modo :

Guglielmo
gpb01:
Come ti è stato detto, i pin in INPUT di Arduino NON possono essere lasciati flottanti. L'alta impedenza degli ingressi fa si che se NON li colleghi a nulla (... e così è quando NON premi il bottone), essi captino qualsiasi disturbo, oscillando in modo casuale tra LOW e HIGH.Guglielmo
non ho capito nulla, scusa.
ho provato a fare come su questo video ma ancora non funziona
gpb01:
Hai letto la mia spiegazione precedente ? ... hai messo questa benedetta resistenza di pull-up sull'ingresso di Arduino in questo modo :
Guglielmo
non capisco quello schema, ma che fastidio questa regola che devi aspettare 5 minuti per rispondere >.<
La resistenza in quello schema serve per mantenere ad 1 il pin quando il pulsante non e' premuto.
Come ti ha gia detto anche Guglielmo, i pin se settati come input sono ad alta impedenza (tipicamente 100 megaohm), e con un'impedenza del genere, qualsiasi pin che non sia collegato a VCC o a GND tramite una resistenza, funziona in pratica da antenna (ed ancora di piu se c'e' collegato un filo o un pulsante), quindi capta qualsiasi disturbo elettromagnetico presente li attorno, ed il suo valore quindi puo essere qualsaisi valore ...
xoxoxoxoxo:
non capisco quello schema ...
... se non capisci lo schema con UNA resistenza ... siamo messi maluccio ... :![]()
Che ne dici di studiarti un po' le basi e poi ricominciare a mettere le mani su queste cose capendo quello che stai facendo ? Ad esempio ...
... puoi fare questa ricerca con Google "imparare l'elettronica partendo da zero pdf" ... sicuramente troverai un bel libro, in .pdf, che pubblico molto tempo fa Nuova Elettronica (... non posso metterti il link perché ... pur essendo Nuova Elettronica ormai fallita, comunque il materiale è soggetto a copyright ... ma vedrai che con una ricerca su Google lo trovi al primo colpo ...
) e cominciare da questo ![]()
Guglielmo
ok, grazie mille, sta scaricando lo leggerò, ma mi sa che andrò avanti a farvi domande qui perché non ho tanto tempo, prima o poi andremo avanti col programma a scuola...
rifacendo lo stesso identico codice che prima funzionava a volte funziona e a volte no, non capisco...
Mi dite come cavolo si fa questo cavolo di esercizio?
... continuo a chiederti ... hai messo come da schema la resistenza di pull-up ? Va messa un capo a +Vcc ed un capo sul pin di ingresso di Arduino (e NON sul bottone).
Guglielmo
Int led= 10;
Int pulsante=9;
Void setup() {
pinMode(led, OUTPUT);
pinMode(pulsante, INPUT);
Void loop() {
If(pulsante==HIGH) {
digitalWrite(led, HIGH)
}
}
xoxoxoxoxo:
Che c'è di sbagliato in questo codice?void setup() {
}
void loop() {
if (digitalRead(10) == HIGH) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
con il codice qui sopra se il bottone non è premuto la lampadina rimane accesa mentre se lo tengo premuto si spegne. Vorrei fare in modo che se lo tengo premuto la lampadina rimane accesa quando non lo tengo premuto spenta, ma se inserisco questo codice...void setup() {
}
void loop() {
if (digitalRead(10) == LOW) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}rimane accesa quando il bottone non è premuto mentre quando schiaccio il bottone si accende ancora di più.... Che sbaglio?
francescomi92:
Int led= 10;
Int pulsante=9;Void setup() {
pinMode(led, OUTPUT);
pinMode(pulsante, INPUT);Void loop() {
If(pulsante==HIGH) {
digitalWrite(led, HIGH)
}
}
Prima di tutto il codice, in conformità al REGOLAMENTO, punto 7, DEVE essere racchiuso tra i tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra) poi ... cosa vorrebbe essere questo pezzo di codice ? ? ? :o :o :o
Guglielmo
gpb01:
Prima di tutto il codice, in conformità al REGOLAMENTO, punto 7, DEVE essere racchiuso tra i tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra) poi ... cosa vorrebbe essere questo pezzo di codice ? ? ? :o :o :oGuglielmo
ciao guglielmo scusa ma l'ho scritto dal telefono..non pensavo ci fosse uno standard apposito per trascrivere gli sketch..
cmq ho dimenticato un pezzo ovvero;
la variabile val a inizio sketch settata a 0
e il loop corretto:
val=digitalread(pulsante)
nel loop:
if(val==high) e poi il resto del codice..con il telefono non si riesce a scrivere.
Ti rendi conto che in quel codice il led non lo spegni mai?
int led= 10;
int pulsante=9;
void setup() {
pinMode(led, OUTPUT);
pinMode(pulsante, INPUT_PULLUP);
void loop() {
if(digitalRead(pulsante)==LOW) { // connect button to GND when pressed
digitalWrite(led, HIGH)
}
}
