Bonjour,
Nous sommes des élèves de Terminale. Pour le Bac, nous réalisons un projet de Guitare à Led. Les Led s'allument suivant les combinaisons de gamme choisies. Nous avons réalisé un prototype et lors des tests, nous sommes face à deux problèmes.
Tout d'abord, nous désirons choisir la gamme que l'on affiche avec les Led. Nous avons donc réalisé un programme avec des variables mais nous ne parvenons pas à faire s'opérer le changement de gamme grâce à la fenêtre de contrôle. Nous pouvons lancer une gamme mais nous sommes obligés de tout éteindre pour en éclairer une autre. Que faut-il corriger dans le programme ? On prévoit aussi de travailler avec une carte Bluetooth !
Ensuite, de manière à limiter le nombre de câbles, nous avons réalisé un système de démultiplexage : L’intégralité du système est gérée par un Arduino Mega. Tout d’abord, on choisit la barrette de LED à allumer. Pour cela, on « dope » le transistor correspondant à la barrette voulue. Cela permet de fermer le circuit puisque la barrette en question est reliée à la Terre. Ensuite, on choisit les LED que l’on veut allumer sur cette barrette. On éteint ensuite cette barrette en mettant à 0L la sortie correspondant au transistor et les sorties correspondant aux LED. On passe ensuite à la seconde barrette pour laquelle on suit le même protocole en changeant la combinaison de LED à allumer, puis à la troisième barrette, la quatrième,… Ces changements se font à une fréquence très élevée et en boucle de manière à ce que l’œil humain ne perçoive qu’une seule combinaison de LED allumée sur l’intégralité du manche. Ce principe de démultiplexage dépend donc de la programmation. (image attachée)
Le problème rencontré est qu'à haute fréquence, l'intensité lumineuse des Led diminue. Nous ne parvenons pas à l'expliquer... Savez vous ?
Merci d'avance,Code:Programme : char mot[20]; int rangee0 = 11; int rangee1 = 2; int rangee2 = 3; int rangee3 = 4; int rangee4 = 5; int rangee5 = 6; int rangee6 = 7; int rangee7 = 8; int rangee8 = 9; int rangee9 = 10; int corde1 = 22; int corde2 = 24; int corde3 = 26; int corde4 = 28; int corde5 = 30; int corde6 = 32; void setup() // fonction d'initialisation de la carte { Serial.begin(9600); pinMode (rangee0,OUTPUT); pinMode (rangee1,OUTPUT); pinMode (rangee2,OUTPUT); pinMode (rangee3,OUTPUT); pinMode (rangee4,OUTPUT); pinMode (rangee5,OUTPUT); pinMode (rangee6,OUTPUT); pinMode (rangee7,OUTPUT); pinMode (rangee8,OUTPUT); pinMode (rangee9,OUTPUT); pinMode (corde1,OUTPUT); pinMode (corde2,OUTPUT); pinMode (corde3,OUTPUT); pinMode (corde4,OUTPUT); pinMode (corde5,OUTPUT); pinMode (corde6,OUTPUT); } void loop() // fonction principale, elle se répète à l'infini après le setup { if(Serial.available()) { int i = 0; while(Serial.available()!= 0 && i <= 19) { mot[i] = Serial.read(); delay(1); i++; } mot[i] = '\0'; if(strcmp(mot,"1") ==0) { int A = 1; while(digitalRead(A == 1)) { digitalWrite (rangee0,HIGH); // RANGEE 0 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee0,LOW); //RANGEE 0 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee1,HIGH); // RANGEE 1 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee1,LOW); //RANGEE 1 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde3,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee2,HIGH); // RANGEE 2 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee2,LOW); //RANGEE 2 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee3,HIGH); // RANGEE 3 ALLUMEE digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee3,LOW); // RANGEE 3 ETEINTE digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee4,HIGH); // RANGEE 4 ALLUMEE digitalWrite (corde2,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); delay (2); digitalWrite (rangee4,LOW); // RANGEE 4 ETEINTE digitalWrite (corde2,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (rangee5,HIGH); // RANGEE 5 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee5,LOW); // RANGEE 5 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee6,HIGH); // RANGEE 6 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee6,LOW); // RANGEE 6 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde3,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee7,HIGH); // RANGEE 7 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee7,LOW); // RANGEE 7 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee8,HIGH); // RANGEE 8 ALLUMEE digitalWrite (corde1,HIGH); delay (2); digitalWrite (rangee8,LOW); // RANGEE 8 ETEINTE digitalWrite (corde1,LOW); digitalWrite (rangee9,HIGH); // RANGEE 9 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee9,LOW); // RANGEE 9 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); A = Serial.read() ; } } if(strcmp(mot,"2") ==0) { int A = 2; while(digitalRead(A == 2)) { digitalWrite (rangee0,HIGH); // RANGEE 0 ALLUMEE //GAMME PENTATONIQUE MINEURE DE LA digitalWrite (corde1,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee0,LOW); //RANGEE 0 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee2,HIGH); // RANGEE 1 ALLUMEE digitalWrite (corde2,HIGH); delay (2); digitalWrite (rangee2,LOW); //RANGEE 1 ETEINTE digitalWrite (corde2,LOW); digitalWrite (rangee2,HIGH); // RANGEE 2 ALLUMEE digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); delay (2); digitalWrite (rangee2,LOW); //RANGEE 2 ETEINTE digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (rangee3,HIGH); // RANGEE 3 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde5,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee3,LOW); // RANGEE 3 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde5,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee5,HIGH); // RANGEE 5 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee5,LOW); // RANGEE 5 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee7,HIGH); // RANGEE 7 ALLUMEE digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee7,LOW); // RANGEE 7 ETEINTE digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee8,HIGH); // RANGEE 8 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee8,LOW); // RANGEE 8 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee9,HIGH); // RANGEE 9 ALLUMEE digitalWrite (corde3,HIGH); delay (2); digitalWrite (rangee9,LOW); // RANGEE 9 ETEINTE digitalWrite (corde3,LOW); A = Serial.read() ; } } if(strcmp(mot,"3") ==0) { int A = 3; while(digitalRead(A == 3)) { digitalWrite (rangee0,HIGH); // RANGEE 0 ALLUMEE // GAMME PENTATONIQUE MINEURE DE MI digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee0,LOW); //RANGEE 0 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee2,HIGH); // RANGEE 2 ALLUMEE digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); delay (2); digitalWrite (rangee2,LOW); //RANGEE 2 ETEINTE digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (rangee3,HIGH); // RANGEE 3 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee3,LOW); // RANGEE 3 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee4,HIGH); // RANGEE 4 ALLUMEE digitalWrite (corde3,HIGH); delay (2); digitalWrite (rangee4,LOW); // RANGEE 4 ETEINTE digitalWrite (corde3,LOW); digitalWrite (rangee5,HIGH); // RANGEE 5 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde2,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee5,LOW); // RANGEE 5 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde2,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee7,HIGH); // RANGEE 7 ALLUMEE digitalWrite (corde1,HIGH); digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); digitalWrite (corde5,HIGH); digitalWrite (corde6,HIGH); delay (2); digitalWrite (rangee7,LOW); // RANGEE 7 ETEINTE digitalWrite (corde1,LOW); digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); digitalWrite (corde5,LOW); digitalWrite (corde6,LOW); digitalWrite (rangee8,HIGH); // RANGEE 8 ALLUMEE digitalWrite (corde2,HIGH); delay (2); digitalWrite (rangee8,LOW); // RANGEE 8 ETEINTE digitalWrite (corde2,LOW); digitalWrite (rangee9,HIGH); // RANGEE 9 ALLUMEE digitalWrite (corde3,HIGH); digitalWrite (corde4,HIGH); delay (2); digitalWrite (rangee9,LOW); // RANGEE 9 ETEINTE digitalWrite (corde3,LOW); digitalWrite (corde4,LOW); A = Serial.read() ; } } } }
Bien Cordialement,
L'équipe Led'z Guitar
-----