Introduction: Arduino Tutorial 3: Led Fading Effect With Buttons

In questo tutorial forniremo una diversa intensità di corrente al led, in base al pulsante premuto.

Utilizzeremo la funzione analogica , che ci permetterà di dare delle diverse quantità di corrente al led.

In this tutorial we will give the led a different light intensity based on the button pressed.
We will also use the analog function, which will allow us to give different amounts of current to the led.

Step 1: Progettazione / Design

Colleghiamo l'anodo del led(in serie con la resistenza) al pin 13; per quanto riguarda i pulsanti, un piedino va a GND, l'altro va, nel caso del primo pulsante, al pin 7 e attraverso la resistenza da 10kOhm, a GND; nel caso del secondo pulsante, al pin 6 e attraverso la resistenza dsa 10kOhm a GND.

Materiale occorrente:

-led;

-2 pulsanti NA;

-2 resistenze da 10KOhm.


Connect the led anode (and the resistance) to pin 13; As for the buttons, a terminal goes to GND, the other goes in the case of the first button to the pin 7 and through the 10kOhm resistance to GND; in the case of the second button, to the pin 6 and through the resistance dsa 10kOhm to GND.
Material Required:
-Led;
-2 NA buttons;
-2 resistors of 10KOhm.

Step 2: Programmazione / Programming

Attraverso la funzione " #define " andremo a definire il nome del pin di arduino che utilizzeremo, utilizzando la seguente sintassi ( nomevariabile, numeropin);

Con " int luminosita=150" Definiamo una variabile di tipo intero (int) Che chiameremo " luminosita" e a cui assegnamo un valore di 150, Valore che indica una media intensità di luce emessa dal led ( Che si accende al massimo della luminosità al valore 255).Scriviamo" luminosita " senza accento, altrimenti il programma potrebbe generare errori.

Attraverso le funzioni " pinMode" definiamo che compiti dovrà svolgere il pin ( se di Input o Output)

Essendo dei pulsanti, o il e pul1 saranno dichiarati come pinMode(pul,INPUT), mentre il led, essendo dispositivo di Output, con pinMode( led, OUTPUT).

Con " digitalRead()" andiamo a leggere che valori vengono letti dai pin, se il pulsante pul o pul1 sono premuti, questi leggeranno un valore " HIGH", altrimenti il valore resta a LOW.

Se il valore di pul è HIGH, la variabile intera luminosita aumentera il suo valore di 10 ( ad esempio se luminosita=150, dopo aver premuto il pulsante avremo luminosita=160) e quindi il led avrà una maggiore luminescenza. Analoga è la funzione di pul1, Che però, invece di sommare, sottrae 10 dalla variabile luminosità.

Con " analogWrite()" andiamo a far accendere il led con l'intensità descritta dalla variabile " luminosita", la sintassi è: analogWrite(nomepin, valoreporta).

ATTENZIONE: seppur la funzione si dice " analog" e quindi analogica, non si deve però pensare di collegarla alle porte ( A0,A1,...) che sono si porte analogiche, Ma di solo input.

Using the "#define" function, we will define the name of the arduino pin that we will use, using the following syntax (variablename, numberofpin);
With "luminous int = 150" We define an integer variable (int) That we will call "luminous" and assigned a value of 150, a value indicating an average light intensity emitted by the LED (which lights up at maximum brightness to the value 255). We write "brightness" without accent, otherwise the program could generate errors.
Through the "pinMode" functions, we define what tasks should be performed by the pin (whether in input or output)
As buttons, or the and pul1 will be declared as pinMode (pul, INPUT), while the led, being output device, with pinMode (led, OUTPUT).
With "digitalRead ()" let's read that values are read by the pins, if the pul pulpper or pul1 are pressed, they will read a "HIGH" value, otherwise the value will remain at LOW.
If the value of pul is HIGH, the whole brightness variable increases its value to 10 (eg if the light is = 150, after pressing the button it will light = 160) and then the LED will have a higher luminescence. The same is the function of pul1, which, however, instead of adding, subtracts 10 from the brightness variable.
With "analogWrite ()" let's turn on the led with the intensity described by the "bright" variable, the syntax is: analogWrite (pinname, value shift).
WARNING: Although the function is called "analog" and then analog, you do not have to think of connecting it to the ports (A0, A1, ...) that are analog ports, but only inputs.
#define led 13 //Diamo il nome "led" alla porta 13

 #define pul 7 //Chiamiamo "pul" la porta 7 

#define pul1 6 //Chiamiamo "pul1" la porta 6

int luminosita=150; //definiamo una variabile intera
 void setup() { pinMode(led,OUTPUT); //Definiamo la tipologia di funzionamento che dovrà assumere
				     //la porta "led", in questo caso è OUTPUT 

 pinMode(pul,INPUT); //Definiamo la porta "pul" come INPUT

 pinMode(pul1,INPUT); //Definiamo la porta "pul1" come INPUT

 }
void loop() {
 
  digitalRead(pul);             //Leggo in che stato si trova il pin "pul"
  digitalRead(pul1);            //Leggo in che stato si trova il pin "pul1"
  if(pul==HIGH)                 //se  pul è premuto
  { 
   luminosita=luminosita+10;    //la luminosità aumenta di 10
   delay(50);                   //Aspetto 50 millisecondi 
  } 
  
  if(pul1==HIGH)                //se  pul1 è premuto
  {
   luminosita= luminosita-10;   //la luminosità diminuisce di 10
   delay(50);                   //Aspetto 50 millisecondi  
    
    }
  analogWrite(led,luminosita);    //il led viene acceso con un'intesità pari
                                  // al valore dell variabile "luminosità"
  delay(10);
}