Après quel que jour de travaille sur mon robot , j'ai pu encore modifier le chassie de mon robot Jardise , voici quelque
photos.



Donc j'ai du racheté un module pour pouvoir faire parlé mon robot , car le module Amplificateur Audio DFRobot n'aller pas du
tout.
Donc j'ai prix se module un lecteur Audio: DFrduino Player que microrupteurman2 ma conseillé , grand merci a lui , voici une
image du module audio:

Donc j'ai commencé a créé un programme pour le faire parlé , mes j'ai rencontré quelque difficulté , donc j'ai fait appèle a
un ami qui se nome julkien qui m’a beaucoup aidé sur cette programmation et je lui en remercie.
Nous avoue pue terminé le programme , nous l'avons fusionné avec le programme de ma pince aluminium.
Donc je vais vous mètre le programme , il consiste bien sûr , a contrôle ma pince aluminium avec la télécommande IR , et
aussi a faire parlé mon robot grâce a la télécommande IR.
Voici le code:
#include <Servo.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <Wire.h>
#include <stdlib.h>
#define ArduinoPlayer_address 0x35 //Arduino Lecteur 0x35 adresse I2C (par défaut)
Servo servo1; // créer un objet d'asservissement pour commander le servo1
Servo servo2; // créer un objet d'asservissement pour commander le servo2
int possition1 ; // variable pour stocker la position1 d'asservissement
int possition2 = 90; //variable pour stocker la position2 d'asservissement
int RECV_PIN = 5;
int current; //conserver la trace de la position actuelle du servo
int codeValue; //les code de la télécommande
IRrecv irrecv(RECV_PIN);
decode_results results;
int derniermp3 = 0; //declaration du dernier mp3 qui a était lu
void TwiSend(const char *cmd) //I2C Command
{
char len = 0;
len = strlen(cmd); //Calculer la longueur de la commande
Wire.beginTransmission(ArduinoPlayer_address); // Arduino Lecteur adresse I2C
while(len--)
{
Wire.send(*(cmd++));
}
Wire.endTransmission(); // stop transmission
}
void jouermorceauscpecifique (int numeromp3)
{
if (numeromp3 >= derniermp3)// si le numero du mp3 desirer est superieur ou egale au dernier mp3 jouer
{
for (int i=derniermp3; i < derniermp3; i++){ // boucle pour passer jusqu'au morceau voulu
TwiSend("\\:n\r\n"); // Play prochain
derniermp3 = i;
}
}
if (numeromp3 <= derniermp3)
{
for (int i=derniermp3; i > derniermp3; i--){ // boucle pour passer jusqu'au morceau voulu
TwiSend("\\:u\r\n"); // Play précédent
derniermp3 = i;
}
}
}
void setup()
{
Wire.begin(); // rejoindre le bus I2C (adresse en option pour le maître)
Serial.begin(9600); // lancer un port série sur le serial monitor
servo1.attach(7); // attache le servo sur la broche 7 à l'objet d'asservissement
servo1.write(possition1); // mis en position1 de départ servo1
servo2.attach(6); // attache le servo sur la broche 6 à l'objet d'asservissement
servo2.write(possition2);// mis en position2 de départ servo2
irrecv.enableIRIn(); // Démarrer le récepteur
delay(2000);//Attendez 2 secondes
Serial.println("Ready");
TwiSend("\\:v 255\r\n");// régler le volume, de 0 (minimum) -255 (maximum)
}
void loop()
{
Serial.println(results.value, DEC);
if (irrecv.decode(&results))
{
codeValue = results.value;
switch (codeValue)
{
case 16615543: // touche 4 de la télécomande ouvre la pince
current +=80;
if (current > 180) current = 0;
servo1.write(current);
break;
case 16582903:// bouton touche 1 de la télécommande ( envoie une parole prochain )
jouermorceauscpecifique(4);
TwiSend("\\:n\r\n");
break;
case 16599223:// bouton touche 3 de la télécommande ( envoie une parole précédente )
jouermorceauscpecifique(4);
TwiSend("\\:u\r\n");
break;
case 16586983:// bouton touche 7 de la télécommande ( pour monté le + volume )
jouermorceauscpecifique(4);
TwiSend("\\:v 255\r\n");
break;
case 16619623: // touche 6 de la télécommande ferme la pince
current -=80;
if (current < 0) current = 180;
servo1.write(current);
break;
case 16591063: // touche 2 de la télécommande décend la pince
current +=40;
if (current > 180) current = 0;
servo2.write(current);
break;
case 16607383: // touche 8 de la télécommande léve la pince
current -=40;
if (current < 0) current = 180;
servo2.write(current);
break;
int sensorValue = analogRead(1); // analogique 1, a 10k
while (sensorValue > 255) { //valeur peut être ajustée, 255 très sensible
sensorValue = analogRead(1); //lit la valeur du capteur à nouveau pour la boucle
}
servo1.write(possition2);
current = possition2;
servo1.write(possition1);
current = possition1;
servo2.write(possition2);
current = possition2;
servo2.write(possition1);
current = possition1;
}
irrecv.resume();
}
}
La suite bientôt , pour de nouvelle modification ou autre.
Bientôt je métré une vidéo.
@Cordialement.