Retour d'expérience carte Annikken Andee

Bonjour a tous,

Je me permets de réaliser un petit post suite à mon achat d’une carte “Andee”. Pour ceux qui ne connaissent pas, cela se trouve ici : http://www.annikken.com/andee/.

Il faut avant tout télécharger les librairies pour l’Arduino :
http://www.annikken.com/getstarted/

Et l’appli Android depuis le Google Playstore (dans mon cas puisque j’étais intéressé par une commande via un téléphone Android, mais ils font également la même chose pour iOs).

Ensuite, en reliant cette carte à une carte Arduino (Leonardo dans mon cas), il est possible de programmer des applications en lien avec un périphérique Android (via Bluetooh), en utilisant la syntaxe C++ Arduino.

Forcément, le premier test qui me vient à l’idée, après avoir fait quelques tutos fournis par le site du fabriquant, est de mettre cela dans mon fameux Bateau Pirate.

Le code (fortement inspiré des exemples fournis par Annikken) :

#include <SPI.h>
#include <Andee.h>
#include <Servo.h> 

AndeeHelper displaybox;
AndeeHelper sliderAvance;
AndeeHelper sliderDirection;

// declaration des "servos"
Servo servoAvance;
Servo servoDir;
int currentPosition1, currentPosition2; // memorise la position courante du servo
const int servoAvancePin = 5; // pin's des servos
const int servoDirPin = 3;

void setup()
{
  Andee.begin();  // Demarre la communication entre Arduino et Andee
  Andee.clear();  // Efface l'ecran
  currentPosition1, currentPosition2 = 90; // Initialise position a 90
  servoAvance.attach(servoAvancePin); // on attribue les sorties aux servos
  servoDir.attach(servoDirPin);
  
  
  setInitialData(); // Fonction definissant l'affichage (aparence) sur le peripherique Android
}

// Ici sont definits les types d'objets et leur apparence sur le peripherique Android
void setInitialData()
{
  displaybox.setId(0);
  displaybox.setType(DATA_OUT); // definit l'objet comme un "text input button"
  displaybox.setLocation(0,0,FULL); // position
  displaybox.setTitle("Le Hollandais Vollant");
  // displaybox.setData("Viens avec moi...");
  
  // Dessin du slider pour la commande d'avancement
  sliderAvance.setId(1);  
  sliderAvance.setType(SLIDER_IN); // c'est un slider
  sliderAvance.setLocation(1, 0, FULL);
  sliderAvance.setTitle("Controle d'avancement");
  sliderAvance.setSliderMinMax(0, 180); // valeurs mini et maxi
  sliderAvance.setSliderInitialValue(90);  //valeur d'init
  sliderAvance.setSliderNumIntervals(181); 
  sliderAvance.setSliderReportMode(ON_VALUE_CHANGE); // on met a jour les valeurs lorsque le slider bouge 
  
   // Dessin du slider pour la commande de direction
  sliderDirection.setId(2);  
  sliderDirection.setType(SLIDER_IN);
  sliderDirection.setLocation(2, 0, FULL); 
  sliderDirection.setTitle("Controle de direction");
  sliderDirection.setSliderMinMax(0, 180);
  sliderDirection.setSliderInitialValue(90);  
  sliderDirection.setSliderNumIntervals(181); 
  sliderDirection.setSliderReportMode(ON_VALUE_CHANGE);
}


void loop()
{
  currentPosition1 = sliderAvance.getSliderValue(INT); // on récupere la valeur courante du slider d'avancement (INT)
  servoAvance.write(currentPosition1); // et on la communique au servo concerne

  currentPosition2 = sliderDirection.getSliderValue(INT); // idem pour le servo de direction
  servoDir.write(currentPosition2);

  displaybox.update(); // on met a jour l'affichage
  sliderAvance.update();
  sliderDirection.update();
  
  delay(100); // Un delais pour la communication bluetooh et les servos
  
}

Ce code donne l’interface visible photo ci-jointe.

Comme on peut le voir, c’est bien plus simple que de créer une appli Android avec Eclipse…

J’ai pas encore testé “sur le terrain” (en navigation) car un peu frais dehors… Mais j’ai une portée d’environ 10 m en intérieur, avec 1 cloison entre l’émetteur et le récepteur.

Bien sûr, c’est plus cher à l’achat qu’un simple module bluetooh, mais quelle facilité de conception ensuite !

Voilà, c’était juste pour faire profiter la communauté de ma petite expérience. Si vous avez des commentaires… J’essaierai de répondre dans la mesure de mes compétences.