Roue encodeuse, Processing et Arduino

KY-040

Roue encodeuse

Pin Description Rang
CLK Fait office du signal carré de référence A low ->0v hight->5v
DT Si c'est égale à A , on avance dans le sens positif. Si non c'est en sens négatif low ->0v hight->5v
avec un dephasage de 90°
SW Lié au boutton low ->0v hight->5v
+ +Vcc 5-3.3 v
GND Ground 0v

Code Arduino UNO

 #define sortieA 6
 #define sortieB 7
 int compteur = 0; 
 int A_actuel;
 int A_precdent;  

 void setup() { 
 pinMode (sortieA,INPUT);pinMode (sortieB,INPUT);
 A_precdent = digitalRead(sortieA);// lis l'etat initial de sortieA 
 } 

 void loop() { 
A_actuel = digitalRead(sortieA); // Lis l'état actuel sortieA
if (A_actuel != A_precdent){ 
//quand  l'état  précedent et actuel sont differents on une impulsion    
if (digitalRead(sortieB) != A_actuel) { 
//Si sortieB est different de sortieA sens de gauche à droite
compteur ++;
} else {
//Si sortieB est égale à sortieA sens de droite à gauche
compteur --;
}
Serial.begin (9600);
Serial.print(String(compteur)+",");
Serial.end();} 
A_precdent = A_actuel; // Updates the previous state of the sortieA with the current state
 }

Montage

Code processing

import processing.serial.*;
Serial monPort;//Le port série
int i = 0;
void setup(){
  printArray(Serial.list()[0]);
  monPort = new Serial(this, Serial.list()[0], 9600);
  size(500, 700);colorMode(HSB, 360);
  background(0);noFill();
  strokeCap(SQUARE);stroke(360);
}
void draw()
{strokeWeight(1);
  while (monPort.available() > 0){
    String data = monPort.readStringUntil(44);
    if (data!=null && data.length()!=0) {
      String val = data.substring(0, data.length()-1);
      float ang = Float.parseFloat(val);
      arcMe(ang, ang+9);i+=ang/abs(ang);
      strokeWeight(1);stroke(300);fill(0);
      ellipse(250, 300, 100, 100);
      fill(250);textSize(14);textAlign(CENTER);
      text(ang*9%360,250,300); stroke(360);
      if(abs(i*9)==360){background(0);i=0;ang=0;}
    }delay(5);}}
void arcMe(float x, float y)
{arc(250, 300, 350, 350, radians((9*-y+9)%369), radians((9*-x)%369));}

 

Interface Processing

Les frais de transport ne sont pas inclus

Composant Quantité Prix(DTN TTC)
Arduino Uno 1 37
Fil de connexion Femelle Femelle (10) 1 1.5
Module Encodeur 1 8
Totale 46.500 DTN TTC

Smart Innovation