2017年12月11日 星期一

Week13 ShiRo

旋轉編碼器(rotary encoder)

網址: https://brainy-bits.com/blogs/tutorials/stepper-motor-rotary-encoder-p1

Rotary Encoder介紹:

CLK : 可讀取DT資料腳位 
SW   : 開關腳位 
+       : 需接正電源 
GND: 接地。

電路:
CLK→腳位2 
DT→腳位3 
SW→腳位4 
+→腳位5v 
GND→腳位GND



引用網址: http://yehnan.blogspot.tw/2014/02/arduino.html



程式碼 :

#define SERIAL_BAUDRATE 115200
#define CLK_PIN 2 // 定義連接腳位
#define DT_PIN 3
#define SW_PIN 4

#define interruptA 0 // UNO腳位2是interrupt 0,其他板子請見官方網頁

volatile long count = 0;
unsigned long t = 0;

void setup() {
  Serial.begin(SERIAL_BAUDRATE);
  // 當狀態下降時,代表旋轉編碼器被轉動了
  attachInterrupt(interruptA, rotaryEncoderChanged, FALLING);
  pinMode(CLK_PIN, INPUT_PULLUP); // 輸入模式並啟用內建上拉電阻
  pinMode(DT_PIN, INPUT_PULLUP); 
  pinMode(SW_PIN, INPUT_PULLUP); 
}
void loop() {
  if(digitalRead(SW_PIN) == LOW){ // 按下開關,歸零
     count = 0;  
     Serial.println("count reset to 0");
     delay(300);
  }
}
void rotaryEncoderChanged(){ // when CLK_PIN is FALLING
  unsigned long temp = millis();
  if(temp - t < 200) // 去彈跳
    return;
  t = temp;
  
  // DT_PIN的狀態代表正轉或逆轉
  count += digitalRead(DT_PIN) == HIGH ? 1 : -1;
  Serial.println(count);
}


使用Python :

做硬體的應用,旋轉rotary encoder,即有圓圈做左右移動互動。



馬達






沒有留言:

張貼留言