Page 1 sur 1

[Librairie] Encodeur rotatif

Message non luPosté: Jeu 31 Jan 2013 19:39
de john_lenfr
Une librairie qui m'a bien été utile et qui fonctionne avec les encodeurs rotatifs snootlab

Quadencoder.zip
Librairie encodeur rotatif
(1.31 Kio) Téléchargé 356 fois


Cette librairie permet entre autre de gérer un petit menu très simple avec par exemple un lcd.

Pour inclure la librairie:
Code: Tout sélectionner
// Include Rotary Encoder Library
#include <QuadEncoder.h>


Pour déclarer l'encodeur:
Code: Tout sélectionner
// on utilise 2 pins pour CHA et CHB:
#define ROTENCA 5
#define ROTENCB 6


Pour créer un objet de type encodeur:
Code: Tout sélectionner
// initialize the encoder
QuadEncoder encoder(ROTENCA,ROTENCB); // initialize the encoder
// has the encoder moved on this loop?
boolean moved = false;



Un exemple de menu avec un lcd 2x16:
Code: Tout sélectionner
void displayMenu() {
  int selected = 3;
 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Turn the knob to");
  lcd.setCursor(0,1);
  lcd.print("select an option");
  // display options
  while (!buttonR.pressed()) {
    selected += readEncoder();
    if (selected<0) selected=3;
    if (selected>3) selected=0;
    if (moved) {
      lcd.clear();
      lcd.setCursor(0,0);
      switch(selected) {
        case 0:
          lcd.print("Change Units    ");
          break;
        case 1:
          lcd.print("Backlight On/Off");
          break;
        case 2:
          lcd.print("Logging On/Off  ");
          break;
        case 3:
          lcd.print("Exit Settings   ");
          break;
      }
    }
  }
  // when button is pressed...
  lcd.clear();
  switch(selected) {
    case 0:
      settingsChangeUnits();
      break;
    case 1:
      settingsChangeBacklight();
      break;
    case 2:
      settingsChangeLogging();
  }
}

// returns 1 for right, -1 for left, or 0 for no movement
int readEncoder() {
  moved = true;
  switch(encoder.hb()) {
    case '>': return 1;
    case '<': return -1;
  }
  moved = false;
  return 0;
}