Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Electronique/Hardware/Divers/Télécommandes RF/Everflourish

De Ordinoscope.net
Sauter à la navigation Sauter à la recherche

Réception avec un Arduino

Test de réception d'un code. L'interprétation est brute de décoffrage, puisqu'aucune librairie existante semble fonctionner avec ces modules. Le code est un string contenant le nombre de pulses.

#ifndef NULL
#  define NULL 0
#endif
 
#include <PinChangeIntConfig.h>
#include <PinChangeInt.h>
 
int pin = 3;

void setup () {
  Serial.begin (115200);
  Serial.println ("start");
  pinMode (2, INPUT);
  PCattachInterrupt (pin, pulse_isr, FALLING);
}

void loop () {
}

void pulse_isr () {
  static int pos;
  static int counter;
  static char msg[24];
  unsigned long now = micros ();
  static unsigned long last;
  unsigned long period = now - last;
  unsigned long i;
  last = now;
  
  if (period > 3000) {         // bad frame
    pos = 0;
    counter = 1;
    msg[0] = 0;
  } else if (period < 1500) {  // increment
    counter++;
} else {                       // new character
    msg[pos] = counter + 48;   // +48 to be an ASCII number
    counter = 1;
    pos++;
    if (pos == 24) {
      if (pulseIn (pin, HIGH, 1500)) counter++;
      msg[pos] = counter + 48;
      Serial.println (msg);
    }
  }
}