Price:
US$7.95

Free Shipping

M5Stack® Encoder Module for M5Stack FACES ESP32 Pocket Computer with 12pcs NeoPixel LED MEGA328 Inside I2C for Arduino

Compatibility

To confirm that this part fits your vehicle, please enter your vehicle's details below.

  • Year:

    Select

    • Make:

      Select

      • Model:

        Select

        • Submodel:

          Select

          • Trim:

            Select

            • Engine:

              Select

              • Clear All
              This part is compatible with 0 vehicle(s).
              Show all compatible vehicles
              This part is compatible with 1 vehicle(s) matching
              This part is not compatible with
              Recent searches

                • Year
                • Make
                • Model
                • Submodel
                • Trim
                • Engine

                  Description:

                  ENCODER is compatible with FACE Kit. You can have it replace the keycoard panel inside the FACE kit. It is designed for rotary encoder control, integrated Mega328 microprocessor inside and LEDs around the encoder.

                  The series communication protocol between M5 core and ENCODER is IIC (adress: 0x5E)

                  Product Features:

                  • 12 RGB Led
                  • IIC communication
                  • Simple API for programming
                  • Mega328 inside
                  • Encoder detection
                  • Product Size: 58.2mm x 54.2mm x 10mm
                  • Product weight: 17g

                  EasyLoader

                  2.After downloading the software, double-click to run the application, connect the M5 device to the computer via the data cable, select the port parameters, and click "Burn" to start burning.

                       3.The CP210X (USB driver) needs to be installed before the EasyLoader is burned. Click here to view the driver installation tutorial

                  Function:

                  Control single RGB

                  /*
                      Parameter:
                          led_index: 0 ~ 11
                          r, g, b: 0 ~ 254
                  */
                  void Led(int led_index, int r, int g, int b){
                      // IIC send data
                      Wire.beginTransmission(Faces_Encoder_I2C_ADDR);
                      Wire.write(led_index);
                      Wire.write(r);
                      Wire.write(g);
                      Wire.write(b);
                      Wire.endTransmission();
                  }

                  Read encoder increment

                  void get_encoder_increment(void){
                      int temp_encoder_increment;
                  
                      // IIC read data
                      Wire.requestFrom(Faces_Encoder_I2C_ADDR, 3);
                      if(Wire.available()){
                         temp_encoder_increment = Wire.read();// get increment
                         button_state = Wire.read();// get button value
                      }
                      if(temp_encoder_increment > 127){//anti-clockwise
                          direction = 1;// flag for encoder direction
                          encoder_increment = 256 - temp_encoder_increment;
                      }
                      else{// clockwise
                          direction = 0;
                          encoder_increment = temp_encoder_increment;
                      }
                  }

                  Package Included:

                  • 1x M5Stack ENCODER Module
                  • Encoder turnpanel

                   

                  Example:

                  for Arduino IDE

                  If you want the complete code faces_encoder.ino, please click here.

                  /*
                  * faces_encoder.ino
                  */
                  #include <M5Stack.h>
                  
                  #define Faces_Encoder_I2C_ADDR     0X5E
                  
                  // declaration
                  int encoder_increment;//positive: clockwise nagtive: anti-clockwise
                  uint16_t encoder_value=0;
                  int button_state;
                  uint8_t direction;//0: clockwise 1: anti-clockwise
                  int temp_encoder_increment;
                  
                  // initialization
                  M5.begin();
                  Wire.begin();
                  
                  // get data from ENCONDER
                  Wire.requestFrom(Faces_Encoder_I2C_ADDR, 3);
                  if(Wire.available()){
                      temp_encoder_increment = Wire.read();// the first byte: increment
                      button_state = Wire.read();// the second byte: button value
                  }
                  
                  // IIC send data, 4bytes
                  Wire.beginTransmission(Faces_Encoder_I2C_ADDR);
                  Wire.write(led_index);
                  Wire.write(r);
                  Wire.write(g);
                  Wire.write(b);
                  Wire.endTransmission();


                  Leave a Comment