[Librairie] Encodeur rotatif

Informations et questions sur les composants tiers de la boutique (émetteur/récepteur RF, capteurs...)

[Librairie] Encodeur rotatif

Message non lude john_lenfr » Jeu 31 Jan 2013 19:39

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é 187 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;
}

Windows XP SP3
IDE 0.22 ou 1.0
Arduino Uno/Mini v4/Mini Pro/Nano
Deuligne/Mémoire/XBee/Ethernet/Stalker/Sablier/Rotoshield
john_lenfr
 
Messages: 32
Inscription: Jeu 3 Jan 2013 19:36

Retourner vers Composants tiers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron