Ar(t)duino : Un contrôleur vidéo et son par Arduino et Max7

Envoyé par le 23 Fév 2015

   Contexte

Ce projet a été réalisé dans le cadre de la première semaine d’intersemestre 2015 au Téléfab par : Saad Belkhadir Mellas, Mehdi Mouayad étudiants de Télécom Bretagne, et  Chloé Amiot, Léa Geay, Ronan Lecrosnier, Sarah Penanhoat étudiants de l’EESAB.

Téléfab

Etudiants de Télécom Bretagne et de l’EESAB – Site de Brest

Du 19 janvier au 23 janvier 2015

   de quoi s’agit-il ?

Ce projet est une interface qui permet, via interaction avec les différents capteurs, le contrôle de certains paramètres d’une vidéo ou d’un son. Ce projet met en œuvre deux parties, qui fonctionnent d’une façon synchrone, partie matérielle et partie logicielle.

Dispositif final

 

code MAX final

 

   Matériels Utilisés :

  • Deux cartes arduino
  • Deux capteurs à ultrasons (distance)
  • Un accéléromètre
  • Un capteur d’inclinaison
  • Boîte
  • Ordinateur pour utiliser Max7
  • Des fils, câbles usb
  • Une boite de carton
  • Plastique
  • Peinture

 

   Mise en oeuvre :

1 – Partie Logicielle :

A – Logiciel Max :

Sur le logiciel Max, une playlist est chargée avec au choix des vidéos ou des sons. Un premier capteur à ultrasons, réagissant à la distance, permet la lecture d’un des extraits de la playlist.

Le capteur d’inclinaison sert à choisir entre le mode accélérer ou le mode rembobiner et un second capteur de distance permet de faire varier la vitesse.

Enfin l’accéléromètre permet d’interrompre la vidéo ou le son en cours, et d’en choisir une nouvelle.MAX

 

Perspectives d’améliorations

Le système à tendance à ralentir et se figer dès lors que les cartes arduino sont connectées. Nous n’avons pas réussi à isoler le problème mais il doit être possible de rendre le fonctionnement plus fluide.

Notre patcher sous Max est conçu pour autoriser trois éléments dans sa playlist mais il est bien sur possible de le modifier pour ajouter davantage de fichiers. La limitation est que le capteur de distance étant assez  peu précis, plus il y aura d’éléments, plus le choix entre eux sera hasardeux.

En connectant un clavier midi à l’ordinateur, il est possible de rajouter des effets. Il faut alors appuyer sur une touche du clavier pour ordonner à Max de router les données arduino vers un autre effet. (voir l’image suivante)

3

  B – Microcontrôleurs:
Nous avons utilisé deux cartes Arduino, la première sert à récupérer la distance calculée par les deux capteurs ultrasons et les mettre en entrée du logiciel Max, pour les fonctions citées en haut. La 2ème carte met en entrée la valeur de l’inclinaison et les accélérations suivant les 3 axes de l’espace.
Voilà les codes utilisés :

pour la 1ere carte :


int duration1;

int distance1;

int srfPin1 = 2;

int duration2;

int distance2;

int srfPin2 = 4;

int led=13;

 

void setup()

{

Serial.begin(9600);

pinMode(led,OUTPUT);

}

 

void loop()

{

pinMode(srfPin1, OUTPUT);

digitalWrite(srfPin1, LOW);

delayMicroseconds(2);

digitalWrite(srfPin1, HIGH);

delayMicroseconds(10);

digitalWrite(srfPin1, LOW);

pinMode(srfPin1, INPUT);

duration1 = pulseIn(srfPin1, HIGH);

distance1 = duration1 / 58;

Serial.print('a');

Serial.println(distance1);

 

 

 

pinMode(srfPin2, OUTPUT);

digitalWrite(srfPin2, LOW);

delayMicroseconds(2);

digitalWrite(srfPin2, HIGH);

delayMicroseconds(10);

digitalWrite(srfPin2, LOW);

pinMode(srfPin2, INPUT);

duration2 = pulseIn(srfPin2, HIGH);

distance2 = duration2 / 58;

Serial.print('b');

Serial.println(distance2);

 

if(distance1<190)

{

digitalWrite(led, HIGH); // allume la LED

}

else{

digitalWrite(led, LOW); // éteinds la LED

&nbsp;

}

&nbsp;

delay(10);

}

pour la 2ème carte:


#include <Wire.h>

#include "MMA7660.h"

MMA7660 accelemeter;

int t;

void setup()

{

accelemeter.init();

Serial.begin(9600);

pinMode(13, OUTPUT);

pinMode(5, INPUT);

pinMode(7, INPUT);

}

void loop()

{

int8_t x;

int8_t y;

int8_t z;

float ax,ay,az;

accelemeter.getXYZ(&x,&y,&z);

&nbsp;

Serial.print("x = ");

Serial.println(x);

Serial.print("y = ");

Serial.println(y);

Serial.print("z = ");

Serial.println(z);

&nbsp;

accelemeter.getAcceleration(&ax,&ay,&az);

Serial.println("accleration of X/Y/Z: ");

Serial.print(ax);

Serial.println(" g");

Serial.print(ay);

Serial.println(" g");

Serial.print(az);

Serial.println(" g");

int s = (ax*ax)+ ay*ay + az*az;

Serial.print('a');

int r = abs(ax)*60;

Serial.println(r);

Serial.println("*************");

if (digitalRead(5)==HIGH)

{

&nbsp;

t=0;

Serial.print('b');

Serial.println(t);

delay(200);

}

&nbsp;

if (digitalRead(5)==LOW)

{

t=1;

Serial.print('b');

Serial.println(t);

delay(200);

&nbsp;

}

delay(500);

}

 2 – Partie Matérielle :

les deux capteurs ultrason, accéléromètre et inclinomètre ont été branché avec les Arduino comme le montre les images en dessous :

Sonar

 

accelerometre

 

inclinometre

 

Finalement l’ensemble des pièces a été  monté dans une boite et branché avec l’ordinateur :

photo (12)

 

Conclusion

Une démonstration publique a été réalisé le vendredi 23 janvier, au centre vie, après 4 jours de préparation. une faiblesse a été constaté: les liaisons port série avec les cartes Arduino et l’exécution du logiciel MAX font planter l’ordinateur utilisé après un certain temps d’utilisation.

 

 

Un commentaire

  1. quelle est la fonction principale de « serial begin »
    Et MERCI
    en attendant une réponse le plus vite possible s’il vous plait

Laisser une réponse

Votre adresse e-mail ne sera pas publiée.