Système Technique Simple - BA3:Renaud Micheletti
Contents
The empty birdcage
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
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