UselessBox29
Sommaire
UselessBox29
Le Projet
Le principe est le suivant:
Un support de portable qui fait du bruit quand il n'a pas de portable sur lui et qui arrête de faire du bruit lorsque l'on pose un portable dessus, mais qu'il jette au bout d'un certain temps;
Un bouton détecte la présence du portable.
Deux servomoteur effectue la rotation du support.
Un buzzer est utilisé pour faire du bruit.
Le tout est géré par une carte arduino uno alimentée à l'aide d'une batterie externe.
Les 3 sous parties
Il y a 3 parties globales pour ce projet:
Le gabarit de la boite
Fabriquer une boite ou réutiliser une boite sans couvercle, vide (ex: boite à vin)
Découper une forme de "porte" dans la boite
Fabriquer une "porte" qui tourne par rapport à son axe horizontal , donc avec un axe au milieu, et avec aussi un pied pour retenir le portable
La réalisation du code
Il y a différentes variantes possible pour l'éjection du portable, nous avons fait en sorte que le portable soit éjecté vers l'arrière par la rotation du support grâce à deux servomoteur.
le code :
- include <Servo.h>
- include "pitches.h"
const int buzzer = 8 ; //pin 8 int pushButton = 2;
Servo monServomoteur; // create a servo object Servo monServomoteur2; // notes in the melody: int melody[] = {
NOTE_C4, 0, 0, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};
// note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4
}; void setup() {
// put your setup code here, to run once: // initialize serial communication at 9600 bits per second: Serial.begin(9600); // make the pushbutton's pin an input: pinMode(pushButton, INPUT); digitalWrite(pushButton, HIGH); monServomoteur.attach(9); // attaches the servo on pin 9 to the servo object monServomoteur.write(120); monServomoteur2.attach(10); // attaches the servo on pin 9 to the servo object monServomoteur2.write(0);
}
void loop() {
// put your main code here, to run repeatedly: int buttonState = digitalRead(pushButton); while (digitalRead(pushButton) == 1) { Serial.println(digitalRead(pushButton)); for (int thisNote = 0; thisNote < 8; thisNote++) {
// to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(8, melody[thisNote], noteDuration);
// to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(8); } } delay(500); monServomoteur.write(0); monServomoteur2.write(120); delay(500); monServomoteur.write(120); monServomoteur2.write(0);
}
pitches.h :
code disponible sur le site arduino
test avec le montage suivant :