Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@tylerjw
Created October 19, 2017 17:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tylerjw/e1fc43f1bfe1b836e471bff095d2a63f to your computer and use it in GitHub Desktop.
Save tylerjw/e1fc43f1bfe1b836e471bff095d2a63f to your computer and use it in GitHub Desktop.
AMQ desk controller display for Adafruit 5V Trinket
/*
* Tyler's AMQ Desk Controller.
*/
#include <Wire.h>
#include <Adafruit_LEDBackpack.h>
#include <SoftwareSerial.h>
Adafruit_7segment disp = Adafruit_7segment();
SoftwareSerial serial(4,1);
unsigned char payload[4];
unsigned long lastUpdate = 0;
void setup() {
disp.begin(0x70);
serial.begin(9600);
for (int i = 0; i < 4; i++) {
payload[i] = 0;
}
lastUpdate = millis();
}
void loop() {
// put your main code here, to run repeatedly:
if (serial.available()) {
payload[0] = payload[1];
payload[1] = payload[2];
payload[2] = payload[3];
payload[3] = serial.read();
lastUpdate = millis();
if (payload[0] == 1 &&
payload[1] == 1 &&
payload[2] <= 1) {
// number
dispNum();
}
if (payload[0] == 0 &&
payload[1] == 4 &&
payload[2] == 1 &&
payload[3] == 0xAA) {
// ASF error
asfError();
}
if (payload[0] == 1 &&
payload[1] == 6) {
memSet();
}
} else if ((millis() - lastUpdate) > 1000) {
turnOff();
}
}
void turnOff() {
disp.writeDigitRaw(0, 0);
disp.writeDigitRaw(1, 0);
disp.writeDigitRaw(2, 0);
disp.writeDigitRaw(3, 0);
disp.writeDigitRaw(4, 0);
disp.writeDisplay();
}
void dispNum() {
int number = payload[2];
number <<= 8;
number |= payload[3];
float decNumber = (float)number / 10.0;
disp.printFloat(decNumber,1);
disp.writeDisplay();
}
void asfError() {
disp.print(0xA5F, HEX);
disp.writeDisplay();
}
void memSet() {
disp.writeDigitRaw(0, 0);
disp.writeDigitRaw(1, 0x6D);
disp.writeDigitRaw(3, 0x40);
if (payload[2] == 1) {
disp.writeDigitRaw(4, 0x06);
} else if (payload[2] == 2) {
disp.writeDigitRaw(4, 0x5B);
} else if (payload[2] == 4) {
disp.writeDigitRaw(4, 0x4F);
} else {
disp.writeDigitRaw(4, 0);
}
disp.writeDisplay();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment