leo72:
Sono 500 mA. Ma il problema è che l'Arduino non può gestire più di 200 mA di corrente, compresa quella che gli serve per "sopravvivere", e comunque ci sono limitazioni di corrente a seconda dei pin usati. A pag. 317 trovi tutte le max. correnti gestibili.
lo so che sono 500 dalla usb, dicevo che ne ha 250mA a disposizione per il resto del circuito, visto che lui parla anche di servi ma li alimenta sempre da usb. i 200mA sono quelli gestibili dal micro, il resto che prendi dal pin5V viene dalla usb.
no no chiariamo una cosina, la questione del servo era un test separato dal problema di oggi, e cioè all'arduino c'era collegato solo il servo al quale mandava un semplicissimo segnale PPM, poi il servo si alimentava dall'uscita 5v di arduino ma parliamo di 200mah quindi 200arduino+200servo sono 400
ma non è questo il problema, la questione che cosa è cambiato da quando ho fatto la prova del blink nel programma completo
ad ora che non funziona più il blink?
ma per blink che non funziona cosa intendi ?
tu hai detto che hai testato tutte le uscite con blink ed un led e funzionano tutte.
quindi il micro funziona.
Intendi che hai ricreato il circuito del lampeggiatore con il delay ? e prima funzionava ed adesso no ?
oltre a non funzionarti con millis ?
se e' cosi' possono solo essere sbagliati i collegamenti, perche' appunto, ripeto, se il blink sulle singole uscite e' ok, anche il tuo lampeggiatore con il blink e i tempi modificati deve funzionare.
posta anche il codice che tu chiami blink a questo punto
DriftBoy:
mettendo solo questo spezzone funziona tutto
mentre mettendo tutto il resto posso dire amen
questo vuol dire semplicemente che e' sbagliato il tuo codice completo, visto che questo spezzone, che e' quello al quale sei arrivato con i consigli datoti, ti funziona bene.
Non vedo come ti si possa correggere l'altra parte di codice se tu posti solo quella che funziona.
scusa sono cotto, non sto' seguendo bene la cosa,
spero qualcuno un attimo piu' fresco dia uno sguardo al codice, visto che la parte difficile con millis ti funziona, il resto deve essere una sciocchezza, magari qualche misera parentesi graffa fuori posto
lo spero, io me lo sono riletto non sai quante volte e nella mia ignoranza mi sembra tutto ok
quasi quasi pensavo di riscrivere tutto cambiando qualche metodo bhu....
Visto che fai un sacco di pulseIn e che basi tutto il codice sui valore restituiti da essi, fai un po' di debug stampando sulla seriale ciò che leggi, per capire dove si infila il tuo codice.
Dopo la serie di PulseIn, stampa sulla seriale i valori di val1, val2, val3 ecc...
Poi metti anche dei Serial.print in ogni if per vedere se e dove il codice va e dove invece salta.
Es.:
if (millis()>50 && millis()<100) digitalWrite(led1,HIGH);
diventa
if (millis()>50 && millis()<100) {
Serial.println("1");
digitalWrite(led1,HIGH);
}
E' sbagliato il fatto che la pulseIn è una funzione che ferma l'esecuzione del codice in attesa del verificarsi dell'evento da misurare oppure per timeout della funzione stessa. Il timeout è impostato di default a 1 secondo, se non ricordo male, per cui con 4 pulseIn il tempo massimo di arresto dello sketch può, in teoria arrivare anche a 4 secondi se nessuno dei 4 segnali viene rilevato.
allora collegati tutti i pulseIn e la situazione migliora molto, il lampeggio + o - va e cioè 1 led lampeggia come dovrebbe invece l'altro si perde i 50ms di pausa
Non so se la causa di tutti i tuoi problemi sia la pulseIn, io ti ho solo chiarito come la pulseIn interagisce col tuo codice.
Alternative alla pulseIn? Dipende.
La pulseIn serve a leggere l'intervallo di tempo che passa fra 2 fronti di un segnale. Ti serve proprio questa cosa?