2021年5月4日火曜日

ESP8266 Multi encorder

ESP8266を使って、Multi encorder(2個)の動作確認を行った。割込みでencorderを読み取る事とし、Rotary.hを使った。Rotary.hは、バージョンによる違いが有るので、比較的新しいバージョンを使った。



動作確認用なので、結果はモニタ表示する事にした。

ESP8266固有の所は、

void ICACHE_RAM_ATTR enc1_proc();

void ICACHE_RAM_ATTR enc2_proc();

である。





スケッチ

Rotaly.hを含め、スケッチはJA2GQP's Download siteのesp8266フォルダからダウンロードできる。

//-------------------------------------------------------------

//  ESP8266 Multi encorder test

//                                              2010/5/4

//                                              JA2GQP

//-------------------------------------------------------------


#include "src/Rotary.h"


Rotary r1 = Rotary(D3,D4);               // encorder 1

void ICACHE_RAM_ATTR enc1_proc();


Rotary r2 = Rotary(D1,D2);               // encorder 2

void ICACHE_RAM_ATTR enc2_proc();


//---------- setup --------------------------------------------


void setup() {

  Serial.begin(115200);

  r1.begin(0);

  attachInterrupt(digitalPinToInterrupt(D3), enc1_proc, CHANGE);

  attachInterrupt(digitalPinToInterrupt(D4), enc1_proc, CHANGE);


  r2.begin(1);

  attachInterrupt(digitalPinToInterrupt(D1), enc2_proc, CHANGE);

  attachInterrupt(digitalPinToInterrupt(D2), enc2_proc, CHANGE);

}


//---------- main loop ----------------------------------------


void loop() {

}


//----------  encorder 1 proc ---------------------------------


void enc1_proc() {                     // rotary encoder events

  unsigned char result = r1.process();

  if (result == DIR_NONE) {

    // do nothing

  }

  else if (result == DIR_CW) {

    Serial.println("Enc 1 CW");

  }

  else if (result == DIR_CCW) {

    Serial.println("Enc 1 CCW");

  }

}


//----------  encorder 2 proc ---------------------------------


void enc2_proc() {                     // rotary encoder events

  unsigned char result = r2.process();

  if (result == DIR_NONE) {

    // do nothing

  }

  else if (result == DIR_CW) {

    Serial.println("Enc 2 CW");

  }

  else if (result == DIR_CCW) {

    Serial.println("Enc 2 CCW");

  }

}   


    




     



1 件のコメント:

Alex, US5EVD さんのコメント...

interesting solution.
tnx.