Led che fanno pochissima luce

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);
  }
}

FrecciaSX e FrecciaDX non sono impostati come uscite, perciò un digitalWrite (FrecciaSX, HIGH) o digitalWrite (FrecciaDX, HIGH) si limita a inserire la resistenza di pullup sul pin, che è un ingresso!

Grazie :slight_smile:
non ci avevo fatto caso ieri, errore di stanchezza, stavo per scrivere che avevo trovato il problema.

ancora grazie per l'aiuto :slight_smile:

  • :slight_smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.