Jump to: navigation, search

Système Technique Simple - BA3:Renaud Micheletti

The empty birdcage

Cage1.JPG

Note d'intention artistique

Il s'agit d'une cage à oiseau vide dans laquelle un mécanisme s'active grâce à un capteur de pression. Le but est de faire en sorte que, même si l'oiseau n'est plus là, le perchoir se balance encore et qu'on puisse entendre une brève mélodie qui nous le rappelle. J'ai réaliser ce projet car je voulais montrer que, lorsque l'on perd un animal (ici, un canari) et qu'il ne nous reste que sa cage, il nous arrive d'y repenser et en la regardant, on a parfois ce sentiment de pouvoir encore l'entendre et de voir la balancelle bouger. Il s'agit donc à la fois d'un projet ludique puisqu'il faut toucher la cage pour que le tout s'active et à la fois d'une réflexion sur ce que le manque provoque chez nous.

Synthèse technique détaillant la mise en oeuvre du dispositif technique choisi

  • 1 Arduino Uno;
  • Résistances 1k,10,100 ;
  • Baffle;
  • câbles mâle-mâle;
  • Servo motor;
  • Transistor NPN;
  • LED;
  • Platine d'essai;

Fritzing

Projet cage bb.jpg

Arduino

#include <Servo.h> 
#include "pitches.h"
int sensorPin = A0;   
int ledPin8 = 8;       
Servo myservo;  
int pos = 0;
int sensorValue = 0;   //on crée une variable initialisée à 0
int melody[] = {
 NOTE_B0, NOTE_C1,NOTE_CS1
};
int noteDurations[] = {
 6, 6, 3
};


   void setup() {  
 
pinMode(ledPin8, OUTPUT);        //on définit  la sortie 0
myservo.attach(9);
Serial.begin(9600);
 
}


  void loop() {

sensorValue = analogRead(sensorPin);              //On convertit la valeur lue par l'entrée analogique en un entier, la valeur lue est comprise entre 0 et 1024     
Serial.println(sensorValue);
if (sensorValue>1000){
digitalWrite(ledPin8, LOW); 

    for(pos = 45; pos <= 140; pos += 1) // goes from 0 degrees to 180 degrees 
 {                                  // in steps of 1 degree 
   myservo.write(pos);              // tell servo to go to position in variable 'pos' 
   delay(3);                       // waits 15ms for the servo to reach the position 
 } 
 for(pos = 140; pos>=45; pos-=1)     // goes from 180 degrees to 0 degrees 
 {                                
   myservo.write(pos);              // tell servo to go to position in variable 'pos' 
   delay(3);                       // waits 15ms for the servo to reach the position 
 } 
 
for (int thisNote = 0; thisNote < 3; thisNote++) {

 int noteDuration = 1000 / noteDurations[thisNote];
 tone(7, melody[thisNote], noteDuration);

 int pauseBetweenNotes = noteDuration * 1.50;
 delay(pauseBetweenNotes);

 noTone(7);
   
}
}else {
 digitalWrite(ledPin8, HIGH);                
}
}


pitches.h

#define NOTE_B0  3000
#define NOTE_C1  5000
#define NOTE_CS1 4000

Références

http://electroniqueamateur.blogspot.be/2015/07/brancher-un-haut-parleur-larduino.html

http://www.wikidebrouillard.org/index.php/Capteur_de_pression_pilot%C3%A9_par_Arduino#Que_voit-on_.3F