ENIB 2023 : symphonie des lumières : Différence entre versions
(→Catégories) |
(→Avancée du projet) |
||
(10 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 11 : | Ligne 11 : | ||
* miroir | * miroir | ||
* laser | * laser | ||
− | * haut parleur | + | * haut-parleur |
− | *potentiomètre | + | * potentiomètre |
− | * | + | * résistance |
+ | * écran | ||
+ | * carte Arduinos Wemos D1 mini | ||
+ | * bouton poussoir | ||
==Code== | ==Code== | ||
<pre> | <pre> | ||
− | + | int BP1; | |
+ | int BP2; | ||
+ | int P1; | ||
+ | double F1 = 1; | ||
+ | double F2 = 1; | ||
+ | double F3 = 1; | ||
+ | double freq = 100; | ||
+ | int CPT = 0; | ||
+ | bool pressable = 1; | ||
+ | int compteur = 0; | ||
+ | #include <LiquidCrystal_I2C.h> | ||
+ | LiquidCrystal_I2C lcd(0x27, 16, 2); | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | pinMode(D5, OUTPUT); | ||
+ | pinMode(A0, INPUT); | ||
+ | Serial.begin(9600); | ||
+ | lcd.init(); | ||
+ | lcd.backlight(); | ||
+ | } | ||
+ | //fonctions | ||
+ | |||
+ | int buttonPressed(bool* pressable, int compteur){ | ||
+ | int pButton = digitalRead(D6); | ||
+ | if (pButton && *pressable){ | ||
+ | compteur++; | ||
+ | *pressable = 0; | ||
+ | } | ||
+ | else if(!pButton) | ||
+ | { | ||
+ | *pressable = 1; | ||
+ | } | ||
+ | compteur %=4; | ||
+ | return compteur; | ||
+ | } | ||
+ | |||
+ | void actFrequencies(double* F1, double* F2, double* F3, int compteur) | ||
+ | { | ||
+ | if(compteur < 3) | ||
+ | { | ||
+ | double potar = analogRead(A0); | ||
+ | double f = potar/1024; | ||
+ | switch(compteur) | ||
+ | { | ||
+ | case 0: | ||
+ | { | ||
+ | *F1 = f*10; | ||
+ | break; | ||
+ | } | ||
+ | case 1: | ||
+ | { | ||
+ | *F2 = f*100; | ||
+ | break; | ||
+ | } | ||
+ | case 2: | ||
+ | { | ||
+ | *F3 = f*1000; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | // the loop function runs over and over again forever | ||
+ | void loop() { | ||
+ | //P1 = analogRead(A0); | ||
+ | //Serial.println(P1); | ||
+ | //BP1 = digitalRead(D4); | ||
+ | //Serial.println(BP1); | ||
+ | //delay(100); | ||
+ | |||
+ | compteur = buttonPressed(&pressable,compteur); | ||
+ | actFrequencies(&F1,&F2,&F3,compteur); | ||
+ | lcd.setCursor(0,0); | ||
+ | if(compteur < 3) | ||
+ | { | ||
+ | lcd.print("frequence "); | ||
+ | lcd.print(compteur); | ||
+ | lcd.print(" :"); | ||
+ | lcd.setCursor(0,1); | ||
+ | switch(compteur) | ||
+ | { | ||
+ | case 0: | ||
+ | { | ||
+ | lcd.print(F1); | ||
+ | freq = F1; | ||
+ | break; | ||
+ | } | ||
+ | case 1: | ||
+ | { | ||
+ | lcd.print(F2); | ||
+ | freq = F2; | ||
+ | break; | ||
+ | } | ||
+ | case 2: | ||
+ | { | ||
+ | lcd.print(F3); | ||
+ | freq = F3; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | double period = 1000.0/(2.0*freq); | ||
+ | Serial.println(period); | ||
+ | lcd.print(" Hz "); | ||
+ | digitalWrite(D5,HIGH); | ||
+ | delay(period); | ||
+ | digitalWrite(D5,LOW); | ||
+ | delay(period); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | lcd.clear(); | ||
+ | lcd.print("validé"); | ||
+ | } | ||
+ | } | ||
</pre> | </pre> | ||
==Avancée du projet== | ==Avancée du projet== | ||
+ | |||
+ | Nous avons commencer par faire le montage de notre projet, en vérifiant le bon fonctionnement de tous les composants. | ||
+ | Une fois ceux-ci vérifiés, nous avons codé notre programme. Nous voulons à partir d'une carte Arduinos Wemos D1 mini, fournir 3 fréquences à un haut-parleur pour qu'il puisse emmètre un son. Ces fréquences sont modifiables à partir d'un potentiomètre. Les fréquences sont visibles sur un écran 1602A. Les différentes fréquences sont validés apres l'appui d'un bouton poussoir. | ||
+ | Un laser alimenté en continu 5V par la carte Arduino émet un faisceau de lumière sur un bout de miroir fixé sur la membrane du haut parleur. Ce faisceau lumineux est réfléchi sur la pièce de puzzle et forme une forme lumineuse. | ||
+ | |||
+ | [[Fichier:Pict 2.jpg|600px]] | ||
+ | |||
+ | [[Fichier:Pict 1.jpg|600px]] | ||
+ | |||
+ | [[Fichier:Plaque 2.jpg|600px]] | ||
+ | |||
+ | [[Fichier:Plaque 1.jpg|600px]] | ||
+ | |||
[[Catégorie:Enib2023]] | [[Catégorie:Enib2023]] | ||
+ | |||
+ | [[Catégorie:Arduino]] |
Version actuelle datée du 15 janvier 2024 à 16:00
Sommaire
Photo de l'équipe
Que fait ce projet ?
Le principe du projet est de projeter un laser sur un miroir qui sera fixer sur la membrane d'un haut parleur. En vibrant la membrane dessinera avec le laser une forme, le but étant de reproduire une forme fourni sur le puzzle.
Liste des composants
- miroir
- laser
- haut-parleur
- potentiomètre
- résistance
- écran
- carte Arduinos Wemos D1 mini
- bouton poussoir
Code
int BP1; int BP2; int P1; double F1 = 1; double F2 = 1; double F3 = 1; double freq = 100; int CPT = 0; bool pressable = 1; int compteur = 0; #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { pinMode(D5, OUTPUT); pinMode(A0, INPUT); Serial.begin(9600); lcd.init(); lcd.backlight(); } //fonctions int buttonPressed(bool* pressable, int compteur){ int pButton = digitalRead(D6); if (pButton && *pressable){ compteur++; *pressable = 0; } else if(!pButton) { *pressable = 1; } compteur %=4; return compteur; } void actFrequencies(double* F1, double* F2, double* F3, int compteur) { if(compteur < 3) { double potar = analogRead(A0); double f = potar/1024; switch(compteur) { case 0: { *F1 = f*10; break; } case 1: { *F2 = f*100; break; } case 2: { *F3 = f*1000; break; } } } } // the loop function runs over and over again forever void loop() { //P1 = analogRead(A0); //Serial.println(P1); //BP1 = digitalRead(D4); //Serial.println(BP1); //delay(100); compteur = buttonPressed(&pressable,compteur); actFrequencies(&F1,&F2,&F3,compteur); lcd.setCursor(0,0); if(compteur < 3) { lcd.print("frequence "); lcd.print(compteur); lcd.print(" :"); lcd.setCursor(0,1); switch(compteur) { case 0: { lcd.print(F1); freq = F1; break; } case 1: { lcd.print(F2); freq = F2; break; } case 2: { lcd.print(F3); freq = F3; break; } } double period = 1000.0/(2.0*freq); Serial.println(period); lcd.print(" Hz "); digitalWrite(D5,HIGH); delay(period); digitalWrite(D5,LOW); delay(period); } else { lcd.clear(); lcd.print("validé"); } }
Avancée du projet
Nous avons commencer par faire le montage de notre projet, en vérifiant le bon fonctionnement de tous les composants. Une fois ceux-ci vérifiés, nous avons codé notre programme. Nous voulons à partir d'une carte Arduinos Wemos D1 mini, fournir 3 fréquences à un haut-parleur pour qu'il puisse emmètre un son. Ces fréquences sont modifiables à partir d'un potentiomètre. Les fréquences sont visibles sur un écran 1602A. Les différentes fréquences sont validés apres l'appui d'un bouton poussoir. Un laser alimenté en continu 5V par la carte Arduino émet un faisceau de lumière sur un bout de miroir fixé sur la membrane du haut parleur. Ce faisceau lumineux est réfléchi sur la pièce de puzzle et forme une forme lumineuse.