Vélo + Vidéo = Cycloscope ! (Arduino/Processing/Reed Switch)

Bonjour à tous,

Ceci est mon premier message dans la communauté Arduino, et grâce à vos précieux renseignements, j'ai pu très rapidement avancer dans mes recherches sans avoir le sentiment d'être "bloqué"! Merci d'ors et déjà à vous tous!

Pour une petite asso de vidéo expérimental, je souhaiterai réaliser un système combinant un vélo et un vidéoprojecteur, système grâce auquel le pédalage activerait la lecture de la vidéo.

Dans mon idée, Arduino gérerait entre autre de compter le nombre de tour qu' effectue ma roue de vélo (reed switch ou capteur à effet hall)
Processing (ou Pure Data), en amont, s'occuperait de faire défiler la vidéo suivant la vitesse de pédalage.

Le code suivant me permet d'incrémenter ma variable 'blabla' chaque fois que l'aimant passe devant le reed switch (ou hall effect) (aimant sur rayon, capteur sur la fourche)

#define reedpin 2
int blabla = 0;
int reedstate = 0;
void setup() { 
  Serial.begin(9600); 
  pinMode(reedpin, INPUT); 
  digitalWrite(reedpin, HIGH);
  attachInterrupt(0, int_cb, FALLING); 
}
void loop() { 
//  Serial.println(reedstate);
  delay(100); 
  reedstate = digitalRead(reedpin);
}
void int_cb() { 
  Serial.println(blabla);
 blabla = blabla ++;
}

Mes questions :

  • Est-il préférable d'utiliser un reed switch ou un capteur à effet hall ?
    Il me semble qu'un capteur à effet hall serait moins fragile ?

  • Pour la gestion de la vidéo, vaut-il mieux utiliser Pure Data ou Processing ?
    Pure Data me semble plus lourd, notamment dans le cas où plusieurs vidéos s'additionne (en effet, si le pédalage s'arrête ou que la personne n'est plus sur la selle, je prévois d'afficher un compte à rebours)
    En explorant la librairie Processing (Video / Libraries / Processing.org), j'ai bien trouvé la fonction jump() mais elle fait référence à un temps en seconde, n'existe t'il pas une fonction qui agirait sur les frames ?

  • Enfin, j'arrive à envoyer la valeur de ma variable à Processing, mais quand je teste sur Processing la valeur reçu, il me semble "parasité" et me retourne plus d'informations que prévu..

10
10
10
51
48 //la valeur réelle de la variable 'vararduino'
13
10
51
49 //la valeur réelle de la variable 'vararduino'
13
10
10
10

Soit une suite continue de '10', puis '51' et '13' englobant la variable 'vararduino'
Quel pourrait-en être la cause ?

Ci-dessous le code Processing :

import processing.serial.*;
int numero_du_port = 3;
Serial mon_port;     
int vararduino = ' '; 
void setup() {
  println("Liste des ports: \n" + Serial.list());
  String nom_du_port = Serial.list()[3];
  mon_port = new Serial(this, nom_du_port, 9600);
}

void draw() {
  if (mon_port.available() != 0) {
    vararduino = int(mon_port.read());
  }
  println(vararduino);
}

Qu'en pensez-vous ?

D'avance merci !
Colin.