working V1

This commit is contained in:
Seth Samuel 2024-11-08 16:49:59 +13:00
parent 6933864dbb
commit 4e52ba30e5
2 changed files with 38 additions and 2 deletions

View file

@ -0,0 +1 @@
[]

View file

@ -1,17 +1,52 @@
#include <Wire.h> //for screen
#include <Adafruit_GFX.h> //for screen
#include "Adafruit_LEDBackpack.h" //for screen
#include <string>
#define outArrSize 100 #define outArrSize 100
#define DISPLAY_ADDRESS 0x70 //I2C address of screen
#define SCREEN_BRIGHTNESS 15
//vars for serial communication
String incomingData; String incomingData;
char outData[outArrSize]; char outData[outArrSize];
//vars for screen
Adafruit_AlphaNum4 disp = Adafruit_AlphaNum4();
void setup() { void setup() {
//serial setup
Serial.begin(115200); Serial.begin(115200);
Serial.println("ready for Data:\n"); Serial.println("ready for Data:\n");
//setup screen
Wire.setSCL(17);
Wire.setSDA(16);
disp.begin(DISPLAY_ADDRESS);
disp.setBrightness(SCREEN_BRIGHTNESS);
} }
void loop() { void loop() {
if (Serial.available() > 0) { if (Serial.available() > 0) {
disp.clear();
incomingData = Serial.readStringUntil(':'); incomingData = Serial.readStringUntil(':');
incomingData.toCharArray(outData, outArrSize); float speed = incomingData.toFloat();
Serial.write(outData); int temp = speed * 10;
//int temp = rand();
if (temp < 10) { temp = 0; } // show 0 when stopped and not noise.
int digit0 = temp / 1000;
int digit1 = (temp / 100) - (digit0 * 10);
int digit2 = (temp / 10) - (digit0 * 100) - (digit1 * 10);
int digit3 = temp - (digit0 * 1000) - (digit1 * 100) - (digit2 * 10);
if (speed > 100) { //dont show leading 0 if going under 100km/h
disp.writeDigitAscii(0, 48 + digit0);
}
if (speed > 10) { //dont show 10s digit if less then 10km/h
disp.writeDigitAscii(1, 48 + digit1);
}
disp.writeDigitAscii(2, 48 + digit2, true);
disp.writeDigitAscii(3, 48 + digit3);
disp.writeDisplay();
} }
} }