//Déclaration
int btnTest=2; // boutont TEST sur PIN 2
int pot=A0; //potentiometre sur PIN A0
int led0=4; // les LED sur PIN 4 à 13
int led1=5;
int led2=6;
int led3=7;
int led4=8;
int led5=9;
int led6=10;
int led7=11;
int led8=12;
int led9=13;
int broche=0; // la variable broche=0
int pourcent=0; // la variable pourcent=0
// Initialisation
void setup()
{
// PIN 4 à 13 en mode sortie par la boucle for
for(broche=4;broche<14;broche++)
{pinMode(broche, OUTPUT);}
pinMode(pot, INPUT); //PIN A0 en mode entrée
pinMode(btnTest, INPUT); //PIN 2 en mode entrée
Serial.begin(9600); //initialise la fonction Serial.begin à 9600 bauds
}
//Exécution
void loop()
{
pourcent=map(analogRead(pot),0,1023,0,100); // mappage des données entre 0 et 100
if(digitalRead(btnTest)==1){test();} // si btnTest=1 appel la fonction test()
bargraphe(); // appel la fonction bargraphe()
moniteur(); // appel la fonction moniteur()
delay(10); // pause de 10 ms
}
//*******************************************************
// Fonctions personnalisées
void test() //teste les 10 LED
{
for(broche =4;broche <14;broche++) // met les PIN 4 à 13 =1 (LED allumées)
digitalWrite(broche, HIGH);
delay(1000); //pause 1 seconde
}
void bargraphe() // allume les LED selon le % du signal d'entée
{
for(broche=4;broche<14;broche++) // eteint toute les LED
{digitalWrite(broche, LOW);}
if(pourcent >0) digitalWrite(led0, HIGH);
if(pourcent >=10) digitalWrite(led1, HIGH);
if(pourcent >=20) digitalWrite(led2, HIGH);
if(pourcent >=30) digitalWrite(led3, HIGH);
if(pourcent >=40) digitalWrite(led4, HIGH);
if(pourcent >=50) digitalWrite(led5, HIGH);
if(pourcent >=60) digitalWrite(led6, HIGH);
if(pourcent >=70) digitalWrite(led7, HIGH);
if(pourcent >=80) digitalWrite(led8, HIGH);
if(pourcent >=90) digitalWrite(led9, HIGH);
}
void moniteur() // moniteur série
{
Serial.print(pourcent);Serial.print("%");
Serial.println();
}