From 1cf9ee307aecf6a278cc7b7904d0aa272af44f0a Mon Sep 17 00:00:00 2001 From: DinoMalin Date: Fri, 7 Mar 2025 11:56:32 +0100 Subject: [PATCH] feat: jauge --- Makefile | 12 +++++- jauge/Jauge.h | 10 +++++ jauge/Jauge.ino | 13 +++++++ jauge/LCD.h | 17 +++++++++ jauge/LCD.ino | 17 +++++++++ jauge/characters.h | 12 ++++++ jauge/characters.ino | 88 ++++++++++++++++++++++++++++++++++++++++++++ jauge/jauge.ino | 23 ++++++++++++ 8 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 jauge/Jauge.h create mode 100644 jauge/Jauge.ino create mode 100644 jauge/LCD.h create mode 100644 jauge/LCD.ino create mode 100644 jauge/characters.h create mode 100644 jauge/characters.ino create mode 100644 jauge/jauge.ino diff --git a/Makefile b/Makefile index 6633fa4..c0fac68 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ all: compile upload compile: - arduino-cli compile --fqbn arduino:mbed_nano:nano33ble sketch + arduino-cli compile --fqbn arduino:avr:uno sketch upload: - arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:mbed_nano:nano33ble sketch + arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno sketch listen: bash listen.sh @@ -12,3 +12,11 @@ listen: env: bash --rcfile env.sh +jauge: compile-jauge upload_jauge + +compile-jauge: + arduino-cli compile --fqbn arduino:avr:uno jauge + +upload_jauge: + arduino-cli upload -p /dev/ttyUSB0 --fqbn arduino:avr:uno jauge + diff --git a/jauge/Jauge.h b/jauge/Jauge.h new file mode 100644 index 0000000..e83dac8 --- /dev/null +++ b/jauge/Jauge.h @@ -0,0 +1,10 @@ +#pragma once +#include "LCD.h" + +class Jauge { +private: + LCD lcd; +public: + Jauge(LCD lcd); + void update(int newScore); +}; diff --git a/jauge/Jauge.ino b/jauge/Jauge.ino new file mode 100644 index 0000000..df5e0c1 --- /dev/null +++ b/jauge/Jauge.ino @@ -0,0 +1,13 @@ +#include "Jauge.h" + +Jauge::Jauge(LCD _lcd) : lcd(_lcd) {} + +void Jauge::update(int newScore) { + lcd.clear(); + for (int i = 0; i < newScore*2; i++) { + lcd.drawRectangle(i, 0); + lcd.drawRectangle(i+1, 0); + lcd.drawRectangle(i,1); + lcd.drawRectangle(i+1, 1); + } +} diff --git a/jauge/LCD.h b/jauge/LCD.h new file mode 100644 index 0000000..056ad53 --- /dev/null +++ b/jauge/LCD.h @@ -0,0 +1,17 @@ +#pragma once + +#include +#include +#include + +class LCD { +private: + hd44780_I2Cexp *lcd; +public: + LCD(hd44780_I2Cexp *lcd); + + void drawChar(int x, int y, char c); + void drawRectangle(int x, int y); + void drawBlink(int x, int y); + void clear(); +}; diff --git a/jauge/LCD.ino b/jauge/LCD.ino new file mode 100644 index 0000000..2debe24 --- /dev/null +++ b/jauge/LCD.ino @@ -0,0 +1,17 @@ +#include "LCD.h" + +LCD::LCD(hd44780_I2Cexp *_lcd) : lcd(_lcd) {} + +void LCD::drawChar(int x, int y, char c) { + lcd->setCursor(x,y); + int w = lcd->write(byte(c)); +} + +void LCD::drawRectangle(int x, int y) { + drawChar(x, y, 0); +} +void LCD::drawBlink(int x, int y) { + drawChar(x, y, 1); +} + +void LCD::clear() {lcd->clear();} diff --git a/jauge/characters.h b/jauge/characters.h new file mode 100644 index 0000000..cb20f3f --- /dev/null +++ b/jauge/characters.h @@ -0,0 +1,12 @@ +#pragma once + +extern byte rectangle[8]; +extern byte blink[8]; + +extern byte angryL[8]; +extern byte angryR[8]; + +extern byte Heart1[8]; +extern byte Heart2[8]; +extern byte Heart3[8]; +extern byte Heart4[8]; diff --git a/jauge/characters.ino b/jauge/characters.ino new file mode 100644 index 0000000..d837cb1 --- /dev/null +++ b/jauge/characters.ino @@ -0,0 +1,88 @@ +#include "characters.h" + +byte rectangle[8] = { + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, +}; + +byte blink[8] = { + 0, + 0, + 0, + 0, + 0, + 0b11111, + 0b11111, +}; + +byte angryL[8] = { + 0b10000, + 0b11000, + 0b11100, + 0b11110, + 0b11111, + 0b11111, + 0b11111, + 0b11111, +}; + +byte angryR[8] = { + 0b00001, + 0b00011, + 0b00111, + 0b01111, + 0b11111, + 0b11111, + 0b11111, + 0b11111, +}; + +byte Heart1[8] = { + 0, + 0, + 0, + 0, + 0b01100, + 0b11110, + 0b11111, + 0b11111, +}; + +byte Heart2[8] = { + 0, + 0, + 0, + 0, + 0b00110, + 0b01111, + 0b11111, + 0b11111, +}; + +byte Heart3[8] = { + 0b01111, + 0b00111, + 0b00011, + 0b00001, + 0, + 0, + 0, + 0, +}; + +byte Heart4[8] = { + 0b11110, + 0b11100, + 0b11000, + 0b10000, + 0, + 0, + 0, + 0, +}; diff --git a/jauge/jauge.ino b/jauge/jauge.ino new file mode 100644 index 0000000..e2cc377 --- /dev/null +++ b/jauge/jauge.ino @@ -0,0 +1,23 @@ +#include "Jauge.h" +#include "characters.h" + +hd44780_I2Cexp lcd; +LCD _lcd(&lcd); +Jauge jauge(_lcd); + +void setup() { + lcd.begin(16, 2); + lcd.createChar(0, rectangle); + Serial.begin(9600); + jauge.update(5); +} + +void loop() { + if (Serial.available() > 0) { + char c = Serial.read(); + + if (c >= '0' && c <= '8') { + jauge.update(c - '0'); + } + } +}