diff --git a/README.md b/README.md index e53b3d5..5f76c73 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,21 @@ -# MiniEncoderC +# M5Hat-Mini-EncoderC ## Overview -Contains case programs of M5Stack MiniEncoderC. +### SKU:U157 + +Arduino library to control M5Stack Hat-Mini-EncoderC. + +## Related Link + +- [Hat Mini EncoderC](https://docs.m5stack.com/en/hat/MiniEncoderC%20Hat) +- [M5Unified (optional)](https://github.com/m5stack/M5Unified) ## Related Link -- [Docment - MiniEncoderC](https://docs.m5stack.com/en/hat/MiniEncoderC%20Hat) - [I2C Protocol](https://github.com/m5stack/M5Unit-MiniEncoderC/blob/main/docs/MiniEncoderC_I2C_Protocol.pdf) ## License -[MiniEncoderC - MIT](LICENSE) +[M5HatMiniEncoderC - MIT](LICENSE) + diff --git a/examples/getValue/getValue.ino b/examples/getValue/getValue.ino index f1cef61..4f4d149 100644 --- a/examples/getValue/getValue.ino +++ b/examples/getValue/getValue.ino @@ -1,64 +1,62 @@ -#include -#include "Unit_MiniEncoderC.h" +#include "M5Unified.h" +#include "M5HatMiniEncoderC.h" -TFT_eSprite tftSprite = TFT_eSprite(&M5.Lcd); -UNIT_MINIENCODERC sensor; +M5Canvas canvas(&M5.Lcd); +M5HatMiniEncoderC encoder; -uint16_t delay_time = 0; -int32_t last_value = 0; +int32_t last_value = 0; uint8_t i2c_address = 0; void page_get_encoder(void) { - int32_t encoder_value = sensor.getEncoderValue(); - bool btn_status = sensor.getButtonStatus(); + int32_t encoder_value = encoder.getEncoderValue(); + bool btn_status = encoder.getButtonStatus(); Serial.println(encoder_value); if (last_value != encoder_value) { if (last_value > encoder_value) { - sensor.setLEDColor(1, 0x000011); + encoder.setLEDColor(0x000011); // Blue } else { - sensor.setLEDColor(2, 0x110000); + encoder.setLEDColor(0x110000); // Red } last_value = encoder_value; } else { - // sensor.setLEDColor(0, 0x001100); + // encoder.setLEDColor(0x001100); } if (!btn_status) { - sensor.setLEDColor(0, 0x001100); + encoder.setLEDColor(0x001100); } - tftSprite.fillRect(0, 0, 135, 90, BLACK); - tftSprite.setTextColor(WHITE); - tftSprite.drawString("BTN:" + String(btn_status), 10, 10); - tftSprite.drawString("ENCODER:", 10, 40); - tftSprite.setCursor(10, 65); - tftSprite.setTextColor(GREEN); - tftSprite.printf("%d", encoder_value); - tftSprite.setTextColor(WHITE); - tftSprite.drawString("btnA:", 10, 120); - tftSprite.setTextColor(ORANGE); - tftSprite.drawString("get inc", 10, 150); - tftSprite.setTextColor(WHITE); - tftSprite.drawString("btnB:", 10, 180); - tftSprite.setTextColor(ORANGE); - tftSprite.drawString("reset", 10, 210); - tftSprite.pushSprite(0, 0); + canvas.fillRect(0, 0, 135, 90, BLACK); + canvas.setTextColor(WHITE); + canvas.drawString("BTN:" + String(btn_status), 10, 10); + canvas.drawString("ENCODER:", 10, 40); + canvas.setCursor(10, 65); + canvas.setTextColor(GREEN); + canvas.printf("%d", encoder_value); + canvas.setTextColor(WHITE); + canvas.drawString("btnA:", 10, 120); + canvas.setTextColor(ORANGE); + canvas.drawString("get inc", 10, 150); + canvas.setTextColor(WHITE); + canvas.drawString("btnB:", 10, 180); + canvas.setTextColor(ORANGE); + canvas.drawString("reset", 10, 210); + canvas.pushSprite(0, 0); } void get_inc_value(void) { - int32_t inc_value = sensor.getIncrementValue(); + int32_t inc_value = encoder.getIncrementValue(); Serial.printf("Inc:%d", inc_value); } void setup() { M5.begin(); // Init M5Stack. 初始化M5Stack - sensor.begin(&Wire, MINIENCODERC_ADDR, 0, 26, 100000UL); - tftSprite.setRotation(1); - tftSprite.createSprite(135, 240); - tftSprite.setTextSize(2); - delay_time = 20; - i2c_address = sensor.getI2CAddress(); - // sensor.setEncoderValue(97900); + encoder.begin(&Wire, MiniEncoderC_ADDR, 0, 26, 100000UL); + canvas.setRotation(0); + canvas.createSprite(135, 240); + canvas.setTextSize(2); + i2c_address = encoder.getI2CAddress(); + // encoder.setEncoderValue(0); } void loop() { @@ -66,7 +64,7 @@ void loop() { if (M5.BtnA.wasPressed()) { get_inc_value(); } else if (M5.BtnB.wasPressed()) { - sensor.resetCounter(); + encoder.resetCounter(); } page_get_encoder(); } diff --git a/library.json b/library.json index 1ce01d7..f345107 100644 --- a/library.json +++ b/library.json @@ -1,16 +1,17 @@ { - "name": "MiniEncoderC", - "description": "Library for M5Stack MiniEncoderC", - "keywords": "M5Stack MiniEncoderC", + "name": "M5Hat-Mini-EncoderC", + "description": "M5Stack Library of Hat Mini EncoderC", + "keywords": "M5Stack, Hat, Mini EncoderC, MiniEncoderC", "authors": { "name": "M5Stack", "url": "http://www.m5stack.com" }, "repository": { "type": "git", - "url": "https://github.com/m5stack/M5Unit-MiniEncoderC.git" + "url": "https://github.com/m5stack/M5Hat-Mini-EncoderC.git" }, "version": "0.0.1", "frameworks": "arduino", - "platforms": "espressif32" + "platforms": "espressif32", + "headers": "M5HatMiniEncoderC.h" } diff --git a/library.properties b/library.properties index 52104fa..e8ec5b4 100644 --- a/library.properties +++ b/library.properties @@ -1,10 +1,10 @@ -name=MiniEncoderC +name=M5Hat-Mini-EncoderC version=0.0.1 author=M5Stack maintainer=M5Stack -sentence=Library for M5Stack UNIT MiniEncoderC -paragraph=See more on http://M5Stack.com +sentence=M5Stack Library of Hat Mini EncoderC +paragraph=M5Stack, M5HatMiniEncoderC, See more on http://M5Stack.com category=Device Control -url=https://github.com/m5stack/M5Unit-MiniEncoderC +url=https://github.com/m5stack/M5Hat-Mini-EncoderC architectures=esp32 -includes=Unit_MiniEncoderC.h \ No newline at end of file +includes=M5HatMiniEncoderC.h \ No newline at end of file diff --git a/src/Unit_MiniEncoderC.cpp b/src/M5HatMiniEncoderC.cpp similarity index 74% rename from src/Unit_MiniEncoderC.cpp rename to src/M5HatMiniEncoderC.cpp index 382eb72..3a54032 100644 --- a/src/Unit_MiniEncoderC.cpp +++ b/src/M5HatMiniEncoderC.cpp @@ -1,6 +1,6 @@ -#include "Unit_MiniEncoderC.h" +#include "M5HatMiniEncoderC.h" -void UNIT_MINIENCODERC::writeBytes(uint8_t addr, uint8_t reg, uint8_t *buffer, +void M5HatMiniEncoderC::writeBytes(uint8_t addr, uint8_t reg, uint8_t *buffer, uint8_t length) { _wire->beginTransmission(addr); _wire->write(reg); @@ -10,7 +10,7 @@ void UNIT_MINIENCODERC::writeBytes(uint8_t addr, uint8_t reg, uint8_t *buffer, _wire->endTransmission(); } -void UNIT_MINIENCODERC::readBytes(uint8_t addr, uint8_t reg, uint8_t *buffer, +void M5HatMiniEncoderC::readBytes(uint8_t addr, uint8_t reg, uint8_t *buffer, uint8_t length) { uint8_t index = 0; _wire->beginTransmission(addr); @@ -22,7 +22,7 @@ void UNIT_MINIENCODERC::readBytes(uint8_t addr, uint8_t reg, uint8_t *buffer, } } -bool UNIT_MINIENCODERC::begin(TwoWire *wire, uint8_t addr, uint8_t sda, +bool M5HatMiniEncoderC::begin(TwoWire *wire, uint8_t addr, uint8_t sda, uint8_t scl, uint32_t speed) { _wire = wire; _addr = addr; @@ -40,7 +40,7 @@ bool UNIT_MINIENCODERC::begin(TwoWire *wire, uint8_t addr, uint8_t sda, } } -void UNIT_MINIENCODERC::setEncoderValue(int32_t value) { +void M5HatMiniEncoderC::setEncoderValue(int32_t value) { uint8_t data[4]; data[0] = value & 0xff; @@ -50,7 +50,7 @@ void UNIT_MINIENCODERC::setEncoderValue(int32_t value) { writeBytes(_addr, ENCODER_REG, data, 4); } -int32_t UNIT_MINIENCODERC::getEncoderValue() { +int32_t M5HatMiniEncoderC::getEncoderValue() { uint8_t data[4]; readBytes(_addr, ENCODER_REG, data, 4); int32_t value = @@ -58,7 +58,7 @@ int32_t UNIT_MINIENCODERC::getEncoderValue() { return value; } -uint32_t UNIT_MINIENCODERC::getIncrementValue() { +uint32_t M5HatMiniEncoderC::getIncrementValue() { uint8_t data[4]; readBytes(_addr, INCREMENT_REG, data, 4); uint32_t value = @@ -66,27 +66,27 @@ uint32_t UNIT_MINIENCODERC::getIncrementValue() { return value; } -bool UNIT_MINIENCODERC::getButtonStatus() { +bool M5HatMiniEncoderC::getButtonStatus() { uint8_t data; readBytes(_addr, BUTTON_REG, &data, 1); return data; } -void UNIT_MINIENCODERC::setLEDColor(uint8_t index, uint32_t color) { +void M5HatMiniEncoderC::setLEDColor(uint32_t rgb888color) { uint8_t data[4]; - data[2] = color & 0xff; - data[1] = (color >> 8) & 0xff; - data[0] = (color >> 16) & 0xff; + data[2] = rgb888color & 0xff; + data[1] = (rgb888color >> 8) & 0xff; + data[0] = (rgb888color >> 16) & 0xff; writeBytes(_addr, RGB_LED_REG, data, 3); } -void UNIT_MINIENCODERC::resetCounter(void) { +void M5HatMiniEncoderC::resetCounter(void) { uint8_t data[4]; data[0] = 1; writeBytes(_addr, RESET_COUNTER_REG, data, 1); } -uint8_t UNIT_MINIENCODERC::setI2CAddress(uint8_t addr) { +uint8_t M5HatMiniEncoderC::setI2CAddress(uint8_t addr) { _wire->beginTransmission(_addr); _wire->write(I2C_ADDRESS_REG); _wire->write(addr); @@ -95,7 +95,7 @@ uint8_t UNIT_MINIENCODERC::setI2CAddress(uint8_t addr) { return _addr; } -uint8_t UNIT_MINIENCODERC::getI2CAddress(void) { +uint8_t M5HatMiniEncoderC::getI2CAddress(void) { _wire->beginTransmission(_addr); _wire->write(I2C_ADDRESS_REG); _wire->endTransmission(); @@ -107,7 +107,7 @@ uint8_t UNIT_MINIENCODERC::getI2CAddress(void) { return RegValue; } -uint8_t UNIT_MINIENCODERC::getFirmwareVersion(void) { +uint8_t M5HatMiniEncoderC::getFirmwareVersion(void) { _wire->beginTransmission(_addr); _wire->write(FIRMWARE_VERSION_REG); _wire->endTransmission(); diff --git a/src/Unit_MiniEncoderC.h b/src/M5HatMiniEncoderC.h similarity index 71% rename from src/Unit_MiniEncoderC.h rename to src/M5HatMiniEncoderC.h index d974816..2e2308b 100644 --- a/src/Unit_MiniEncoderC.h +++ b/src/M5HatMiniEncoderC.h @@ -1,10 +1,10 @@ -#ifndef __UNIT_MINIENCODERC_H -#define __UNIT_MINIENCODERC_H +#ifndef __M5HATMINIENCODERC_H +#define __M5HATMINIENCODERC_H #include "Arduino.h" #include "Wire.h" -#define MINIENCODERC_ADDR 0x42 +#define MiniEncoderC_ADDR 0x42 #define ENCODER_REG 0x00 #define INCREMENT_REG 0x10 #define BUTTON_REG 0x20 @@ -13,7 +13,7 @@ #define FIRMWARE_VERSION_REG 0xFE #define I2C_ADDRESS_REG 0xFF -class UNIT_MINIENCODERC { +class M5HatMiniEncoderC { private: uint8_t _addr; TwoWire* _wire; @@ -24,13 +24,14 @@ class UNIT_MINIENCODERC { void readBytes(uint8_t addr, uint8_t reg, uint8_t* buffer, uint8_t length); public: - bool begin(TwoWire* wire = &Wire, uint8_t addr = MINIENCODERC_ADDR, - uint8_t sda = 21, uint8_t scl = 22, uint32_t speed = 100000L); + bool begin(TwoWire* wire = &Wire, uint8_t addr = MiniEncoderC_ADDR, + uint8_t sda = 0, uint8_t scl = 26, + uint32_t speed = 200000L); // Default StickC Plus int32_t getEncoderValue(); void setEncoderValue(int32_t value); uint32_t getIncrementValue(); bool getButtonStatus(); - void setLEDColor(uint8_t index, uint32_t color); + void setLEDColor(uint32_t rgb888color); uint8_t setI2CAddress(uint8_t addr); uint8_t getI2CAddress(void); uint8_t getFirmwareVersion(void);