Problemi con intensità accensione led

Ho compilato uno schetch con arduino utilizzando due led, un pulsante e un potenziometro.
In pratica quando il pulsante è premuto il led 1 lampeggia con un ritardo proporzionale al valore del potenziomentro, vicveversa il led 1 sarà spento e lampeggerà il led 2.
Il problema è che il secondo led, quello collegato al pin 9, si accende con una scarsissima intensità, come se ci fosse una grossa resistenza in serie (in realtà ho inserito una resistenza da 100ohm per proteggere il led). Non riesco a capire!!! E' come se avessi attivato una resistenza di pull-up interna. Il led 1 invece si accende con la giusta lminosità.
Qual è il problema?

p.s.: ho messo una resistenza da 10k alla massa del pulsante.
allego il codice (se ci riesco) :

//Utilizzo di un pulsante e di un potenziometro per accendere e regolare il lampeggio di due led
 //Francesco Scimonelli
 
 #define led_1 13                 //utilizza il pin 13 per il led_1
 #define led_2 9                 //utilizza il pin 9 per il led_2
 #define btn_1 11                //utilizza il pin 11 per il pulsante
 int in=0;                               //memorizza lo stato del pulsante
 int pot=0;                           //memorizza lo stato del potenziometro

 void setup(){
   pinMode(led_1, OUTPUT);
   pinMode(led_2, OUTPUT);   
   pinMode(btn_1, INPUT);
 }
 
 void loop(){
   pot = analogRead (A3);          //leggi il valore del potenziometro sul pin A3
   in = digitalRead(btn_1);         //leggi lo stato del pulsante sul pin 11

 if  (in == HIGH){                          //se il pulsante è premuto
  digitalWrite(led_1,HIGH);       //accendi il led_1
  delay(pot);                                 //ritardo equivalente al valore del potenziometro
  digitalWrite(led_1,LOW);       //accendi il led_2
  delay(pot);                                //ritardo equivalente al valore del potenziometro
  } 

 else{                                                 // se il pulsante è a riposo
   digitalWrite(led_2, HIGH);     //accendi il led_2
   delay(pot);                                 //ritardo equivalente al valore del potenziometro
   digitalWrite(led_2, LOW);      //spegni il led_2
   delay(pot);                                // ritardo equivalente al valore del potenziometro
   }
 }
  1. Per postare il codice devi usare il pulsante con il disegno del # e non il quote.
  2. Parli del pin 9 ma nel codice c'e' il 10.
  3. Hai due led e quindi in output due pin, ma nella setup() fai solo un pinMode(xxx, OUTPUT)

Ho corretto gli errori! :cold_sweat: scusatemi

Come faccio ad abilitare la resistenza di pull-up interna per il pulsante, in modo da eliminare quella esterna da 10K?
Scusate per le domande stupide, ma sono agli inizi e sto studiando facendo esperimenti gradualmente più difficili.

Semplice.

pinMode(btn_1, INPUT_PULLUP);

--> pinMode() - Arduino Reference

Però dall'altro lato lo devi mettere a GND e la condizione dell'IF deve essere == LOW.

PaoloP:
Semplice.

pinMode(btn_1, INPUT_PULLUP);

--> pinMode() - Arduino Reference

Però dall'altro lato lo devi mettere a GND e la condizione dell'IF deve essere == LOW.

Non capisco da quale lato devo mettere GND

Grazie mille PaoloP :slight_smile:
L'ultima cosa: perchè la condizione dell'if deve essere per forza LOW?
Ancora grazie mille.

Di norma si scrivono gli IF per fare eseguire una parte del codice solo allo scatenarsi di un evento.
Nella configurazione appena postata il puntante, se non è premuto, è in HIGH (il segnale è tenuto alto dalla pull'up e va a LOW quando lo si preme) quindi l'IF sarebbe sempre eseguito.
E' per questo che ti ho detto di mettere la condizione LOW, ma non è che si deve. Dipende da cosa vuoi fare fare al micro.

Che stupido che sono!!! Adesso ho capito, grazie, grazie, grazie.