Ciao gruppo, faccio una premessa scrivo qui e non in Hardware, perché se carico un semplice sketch per accendere i led con un pulsante, tutto funziona bene, se carico lo sketch finale due led accendono ma praticamente ho noto una luce fievolissima al buio, che sembrano quasi spenti anche al buio, non capisco il perché.
Ho fatto le misurazioni con il tester ed ottengo 0mA ed 85mV
se cambio lo sketch e metto quello semplice che se premo un pulsante accendo il led ottengo 5mA ed 1.86V sotto resistenza e 5V dai pin
Ora io credo che non sia un problema di hardware visto questa prova, ma potrei sbagliare.
consigli?
Vi allego lo sketch, scusate se è lungo.
Sempre grazie per l'aiuto che date.
Buona serata a tutti.
P.s. su tinkercad non da problemi.
#define PulsanteLuci 3
#define PulsanteFSX 4
#define PulsanteFDX 5
#define PulsanteEMR 6
#define PosizionePost 13
#define PosizioneAnt 12
#define Anabaglianti 11
#define Cruscotto 10
#define FrecciaSX 9
#define FrecciaDX 8
#define intervallo 500
int StatoLedLuci = LOW;
int StatoPulsanteLuci = LOW;
int StatoPulsanteFSX = LOW;
int StatoPulsanteFDX = LOW;
int StatoPulsanteEMR = LOW;
int Debounce = 300;
unsigned long ultimoDebounce = 0;
int UltimoStatoPulsanteLuci = LOW;
int UltimoStatoPulsanteFSX = LOW;
int UltimoStatoPulsanteDSX = LOW;
int UltimoStatoPulsanteEMR = LOW;
int stato = LOW;
int statoP = LOW;
unsigned long t0, dt;
int Tempo_ON = 500;
int Tempo_OFF = 500;
int ultimo_evento = 0;
void setup(){
pinMode(PosizionePost, OUTPUT);
pinMode(PosizioneAnt, OUTPUT);
pinMode(Anabaglianti, OUTPUT);
pinMode(Cruscotto, OUTPUT);
pinMode(PulsanteLuci, INPUT);
pinMode(PulsanteFSX, INPUT);
pinMode(PulsanteFDX, INPUT);
pinMode(PulsanteEMR, INPUT);
}
void loop(){
luci();
Frecce();
}
void luci(){
int letturaPulsanteLuci = digitalRead(PulsanteLuci);
if(letturaPulsanteLuci != UltimoStatoPulsanteLuci){
ultimoDebounce = millis();
}
if((millis() - ultimoDebounce) > Debounce){
if(letturaPulsanteLuci != StatoPulsanteLuci && letturaPulsanteLuci == HIGH){
StatoLedLuci = !StatoLedLuci;
digitalWrite(PosizionePost, StatoLedLuci);
digitalWrite(PosizioneAnt, StatoLedLuci);
digitalWrite(Anabaglianti, StatoLedLuci);
digitalWrite(Cruscotto, StatoLedLuci);
}
StatoPulsanteLuci = letturaPulsanteLuci;
}
UltimoStatoPulsanteLuci = letturaPulsanteLuci;
}
void Frecce(){
dt = millis() - t0;
if( dt >= intervallo){
t0 = millis();
stato = !stato;
}
if((millis() - ultimoDebounce) > Debounce){
if(digitalRead(PulsanteFSX)== HIGH){
StatoPulsanteFSX=!StatoPulsanteFSX;
}
}
if(StatoPulsanteFSX == HIGH){
digitalWrite(FrecciaSX, !stato);
digitalWrite(FrecciaDX, LOW);
StatoPulsanteFDX = LOW;
StatoPulsanteEMR = LOW;
}
else if(digitalRead(PulsanteFDX)== HIGH){
StatoPulsanteFDX=!StatoPulsanteFDX;
}
if(StatoPulsanteFDX == HIGH){
digitalWrite(FrecciaDX, !stato);
digitalWrite(FrecciaSX, LOW);
StatoPulsanteFSX = LOW;
StatoPulsanteEMR = LOW;
}
else if(digitalRead(PulsanteEMR)== HIGH){
StatoPulsanteEMR=!StatoPulsanteEMR;
}
if(StatoPulsanteEMR == HIGH){
digitalWrite(FrecciaDX, !stato);
digitalWrite(FrecciaSX, !stato);
StatoPulsanteFSX = LOW;
StatoPulsanteFDX = LOW;
}
else if(StatoPulsanteEMR == LOW){
digitalWrite(FrecciaDX, LOW);
digitalWrite(FrecciaSX, LOW);
}
else if(StatoPulsanteFSX == LOW){
digitalWrite(FrecciaSX, LOW);
}
else if(StatoPulsanteFDX == LOW){
digitalWrite(FrecciaDX, LOW);
}
}