// Amélioration Scanner Knight Rider à LED
// Constantes:
#define LED1 5 // défini GPIO5
#define LED2 18 // défini GPIO18
#define LED3 19 // défini GPIO19
#define LED4 21 // défini GPIO21
#define LED5 22 // défini GPIO22
#define LED6 23 // défini GPIO23
#define bas_p 0.1 // Rapport cyclique bas en %
#define mil_p 2.5 // Rapport cyclique milieu en %
#define haut_p 100 // Rapport cyclique max en %
#define frequence 5000 // Fréquence du PWM 5000 Hz
#define resolution 11 // Résolution de 11 bits (0 à 1023) pour le PWM
#define L 6 // Nombre de lignes du tableau
#define C 6 // Nombre de colonnes du tableau
// Tableau des GPIOs dans l'ordre d'affichage
int LEDS[] = {LED1, LED2, LED3, LED4, LED5, LED6};
int ledChannel[] = {1,2,3,4,5,6};
// Variable:
const int bas = 1;
//const int bas = map(bas_p, 0, 100, 0, 1023); // Changement d'échelle de la valeur basse de luminosité
const int mil = map(mil_p, 0, 100, 0, 1023); // Changement d'échelle de la valeur milieu de luminosité
const int haut = map(haut_p, 0, 100, 0, 1023); // Changement d'échelle de la valeur haute de luminosité
// Tableau des différents états succeccifs des leds
int aff[6][6] = {
{haut,mil,bas,bas,bas,bas},
{mil,haut,mil,bas,bas,bas},
{bas,mil,haut,mil,bas,bas},
{bas,bas,mil,haut,mil,bas},
{bas,bas,bas,mil,haut,mil},
{bas,bas,bas,bas,mil,haut},
};
void setup() {
// put your setup code here, to run once:
// Initialisation des canaux PWM et attachement des GPIOs aux canaux PWM
for (int i = 0; i < 6; i++)
{
// Configure les paramètres des canaux PWM
ledcSetup(ledChannel[i], frequence, resolution);
// Attache un canal PWM à une GPIO
ledcAttachPin(LEDS[i], ledChannel[i]);
}
Serial.begin(115200);
Serial.println("Scanner Knight Rider à LED");
}
void loop()
{
// put your main code here, to run repeatedly:
for (int li = 0; li < L; li++) // Index de la ligne depuis la première à la dernière
{
for (int co = 0; co < C; co++) // Index de la colonne dans la ligne
{
ledcWrite(ledChannel[co], aff[li][co]);
}
delay(150); // Delai entre affichages
}
for (int li = L-1; li >= 0; li--) // Index de la ligne depuis la dernière à la première
{
for (int co = 0; co < C; co++) // Index de la colonne dans la ligne
{
ledcWrite(ledChannel[co], aff[li][co]);
}
delay(150); // Delai entre affichages
}
}