Boite à mots doux : Différence entre versions
(→Étape 1 : Réalisation du câblage Arduino) |
(→Étape 2 : Réalisation du code Arduino) |
||
Ligne 43 : | Ligne 43 : | ||
===Étape 2 : Réalisation du code Arduino === | ===Étape 2 : Réalisation du code Arduino === | ||
− | + | /// MP3 PLAYER PROJECT | |
− | + | /// http://educ8s.tv/arduino-mp3-player/ | |
− | + | ////////////////////////////////////////// | |
− | |||
− | |||
− | |||
− | |||
− | + | #include "SoftwareSerial.h" | |
− | #include | + | SoftwareSerial mySerial(10, 11); |
− | + | # define Start_Byte 0x7E | |
− | / | + | # define Version_Byte 0xFF |
− | + | # define Command_Length 0x06 | |
+ | # define End_Byte 0xEF | ||
+ | # define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info] | ||
− | + | # define ACTIVATED LOW | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | int buttonNext = 2; | ||
+ | int buttonPause = 3; | ||
+ | int buttonPrevious = 4; | ||
+ | boolean isPlaying = false; | ||
− | + | const int led = 8; | |
− | + | ||
− | + | void setup () { | |
+ | |||
+ | pinMode(buttonPause, INPUT); | ||
+ | digitalWrite(buttonPause,HIGH); | ||
+ | pinMode(buttonNext, INPUT); | ||
+ | digitalWrite(buttonNext,HIGH); | ||
+ | pinMode(buttonPrevious, INPUT); | ||
+ | digitalWrite(buttonPrevious,HIGH); | ||
+ | |||
+ | mySerial.begin (9600); | ||
+ | delay(1000); | ||
+ | playFirst(); | ||
+ | isPlaying = true; | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | void loop () { | ||
+ | |||
+ | if (digitalRead(buttonPause) == ACTIVATED) | ||
+ | { | ||
+ | if(isPlaying) | ||
+ | { | ||
+ | pause(); | ||
+ | isPlaying = false; | ||
+ | }else | ||
+ | { | ||
+ | isPlaying = true; | ||
+ | play(); | ||
+ | } | ||
+ | //contenu du programme | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | |||
+ | if (digitalRead(buttonNext) == ACTIVATED) | ||
+ | { | ||
+ | if(isPlaying) | ||
+ | { | ||
+ | playNext(); | ||
+ | } | ||
} | } | ||
− | + | ||
− | + | if (digitalRead(buttonPrevious) == ACTIVATED) | |
− | + | { | |
− | + | if(isPlaying) | |
− | + | { | |
+ | playPrevious(); | ||
+ | } | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | |||
− | |||
− | |||
− | + | void playFirst() | |
− | + | { | |
− | + | execute_CMD(0x3F, 0, 0); | |
− | + | delay(500); | |
− | + | setVolume(20); | |
− | + | delay(500); | |
− | + | execute_CMD(0x11,0,1); | |
− | + | delay(500); | |
} | } | ||
− | |||
− | |||
− | + | void pause() | |
− | + | { | |
− | + | execute_CMD(0x0E,0,0); | |
− | + | delay(500); | |
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | |||
− | |||
− | + | void play() | |
− | + | { | |
− | + | execute_CMD(0x0D,0,1); | |
− | + | delay(500); | |
− | + | } | |
− | |||
− | |||
− | + | void playNext() | |
− | + | { | |
− | + | execute_CMD(0x01,0,1); | |
− | + | delay(500); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | void playPrevious() | |
− | + | { | |
− | + | execute_CMD(0x02,0,1); | |
+ | delay(500); | ||
+ | } | ||
− | + | void setVolume(int volume) | |
− | + | { | |
− | + | execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30) | |
+ | delay(2000); | ||
+ | } | ||
− | + | void execute_CMD(byte CMD, byte Par1, byte Par2) | |
− | + | // Excecute the command and parameters | |
− | + | { | |
− | + | // Calculate the checksum (2 bytes) | |
− | + | word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2); | |
− | + | // Build the command line | |
− | + | byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, | |
− | + | Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}; | |
− | + | //Send the command line to the module | |
− | + | for (byte k=0; k<10; k++) | |
− | + | { | |
− | + | mySerial.write( Command_line[k]); | |
+ | } | ||
} | } | ||
− | |||
− | |||
===Étape 3 : Réalisation du phare à la découpe laser=== | ===Étape 3 : Réalisation du phare à la découpe laser=== |
Version du 18 janvier 2019 à 14:30
Le groupe a décidé de réaliser une boite à mots doux.
Ce projet a été conçu par des élèves de l'ENIB.
Sommaire
Description du projet
La boite à mots doux est une boite possédant un haut-parleur et un bouton poussoir pour pouvoir changer de piste. Dans la boite il y a un Arduino et un lecteur MP3.
Objectifs pédagogiques
Ce projet a pour ambition de nous faire découvrir de nouvelles façons d'utiliser le numérique et plus particulièrement de pouvoir utiliser un Arduino.
Équipe en charge du projet
- William LE CORRE
- Tony CUILLANDRE
- Damien CRENN
- Quentin LE FRANC
Matériel nécessaire
- Arduino
- Résistance 1k
- Fils
- Breadboard
- Bois
- Découpe Laser
- Colle
- Vis
- Haut-parleur
- cable USB
- Ordinateur
- Lecteur MP3
Réalisation
Étape 1 : Réalisation du câblage Arduino
On utilise un Breadboard pour pouvoir réaliser notre câblage. On place le lecteur MP3 dessus ainsi qu'une résistance.
Étape 2 : Réalisation du code Arduino
/// MP3 PLAYER PROJECT /// http://educ8s.tv/arduino-mp3-player/ //////////////////////////////////////////
- include "SoftwareSerial.h"
SoftwareSerial mySerial(10, 11);
- define Start_Byte 0x7E
- define Version_Byte 0xFF
- define Command_Length 0x06
- define End_Byte 0xEF
- define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
- define ACTIVATED LOW
int buttonNext = 2; int buttonPause = 3; int buttonPrevious = 4; boolean isPlaying = false;
const int led = 8;
void setup () {
pinMode(buttonPause, INPUT); digitalWrite(buttonPause,HIGH); pinMode(buttonNext, INPUT); digitalWrite(buttonNext,HIGH); pinMode(buttonPrevious, INPUT); digitalWrite(buttonPrevious,HIGH);
mySerial.begin (9600); delay(1000); playFirst(); isPlaying = true;
}
void loop () {
if (digitalRead(buttonPause) == ACTIVATED) { if(isPlaying) { pause(); isPlaying = false; }else { isPlaying = true; play(); } //contenu du programme
}
if (digitalRead(buttonNext) == ACTIVATED) { if(isPlaying) { playNext(); } }
if (digitalRead(buttonPrevious) == ACTIVATED) { if(isPlaying) { playPrevious(); } }
}
void playFirst() {
execute_CMD(0x3F, 0, 0); delay(500); setVolume(20); delay(500); execute_CMD(0x11,0,1); delay(500);
}
void pause() {
execute_CMD(0x0E,0,0); delay(500);
}
void play() {
execute_CMD(0x0D,0,1); delay(500);
}
void playNext() {
execute_CMD(0x01,0,1); delay(500);
}
void playPrevious() {
execute_CMD(0x02,0,1); delay(500);
}
void setVolume(int volume) {
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30) delay(2000);
}
void execute_CMD(byte CMD, byte Par1, byte Par2) // Excecute the command and parameters { // Calculate the checksum (2 bytes) word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2); // Build the command line byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}; //Send the command line to the module for (byte k=0; k<10; k++) { mySerial.write( Command_line[k]); } }
Étape 3 : Réalisation du phare à la découpe laser
Nous avons trouvez sur le site Thingiverse des plans pour un phare que nous avons ensuite utilisé puis fabriqué à la découpe laser. Les plans que nous avions trouvé en premier lieux sont trouvables ici. Cependant, nous avons modifié les plans de base pour qu'ils conviennent à notre projet. Vous pourrez trouver ces plans ci-dessous.Notez qu'une des faces du phare contient une porte que nous avons réalisé nous même pour pouvoir faire passer le câble d'alimentation de la carte Arduino. Le phare seul, sans les éléments numériques que nous lui rajoutons, ressemble initialement à cela :
Étape 4 : Assemblage
Nous avons fixé la LED à un petit bout de carton que nous avons placé à l'emplacement de l'optique du phare et nous avons utilisé les pinces crocodiles pour lier la lampe à la Breadboard qui se situe dans la base du phare avec la carte Arduino. Nous avons ensuite placé une feuille de calque enroulée à l'intérieure de l'optique du phare, autours de la LED RGB.