ENIB 2023 : symphonie des lumières

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Photo de l'équipe

Grp pict.jpg

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.

Pict 2.jpg

Pict 1.jpg

Plaque 2.jpg

Plaque 1.jpg