Use bit based communication with drawers

This commit is contained in:
C0d3v 2026-01-15 20:04:02 +01:00
parent 7a77347bc2
commit 876b2f0db6

View File

@ -5,15 +5,18 @@ void resetPuzzles();
/* ========================================================= */ /* ========================================================= */
const uint8_t ARCHIV_ADDR = 0x10; const uint8_t ARCHIV_ADDR = 0x10;
const uint8_t CMD_POWER_OFF = 0x01;
const uint8_t CMD_LIGHT_INDEX = 0x02; const uint8_t BITMASK_CMD = 0b00011000;
const uint8_t CMD_DRAWER_INDEX = 0x03; const uint8_t BITMASK_PAYLOAD = 0b00000111;
const uint8_t CMD_POWER_OFF = 0b00001000;
const uint8_t CMD_LIGHT_INDEX = 0b00010000;
const uint8_t CMD_DRAWER_INDEX = 0b00011000;
void setDrawerLight(uint8_t index) void setDrawerLight(uint8_t index)
{ {
Wire.beginTransmission(ARCHIV_ADDR); Wire.beginTransmission(ARCHIV_ADDR);
Wire.write(CMD_LIGHT_INDEX); Wire.write(CMD_LIGHT_INDEX | (index & BITMASK_PAYLOAD));
Wire.write(index);
Wire.endTransmission(); Wire.endTransmission();
} }
@ -27,8 +30,7 @@ void turnLightsOff()
void openDrawer(uint8_t index) void openDrawer(uint8_t index)
{ {
Wire.beginTransmission(ARCHIV_ADDR); Wire.beginTransmission(ARCHIV_ADDR);
Wire.write(CMD_DRAWER_INDEX); Wire.write(CMD_DRAWER_INDEX | (index & BITMASK_PAYLOAD));
Wire.write(index);
Wire.endTransmission(); Wire.endTransmission();
} }
/* ========================================================= */ /* ========================================================= */