feat: jauge

This commit is contained in:
DinoMalin 2025-03-07 11:56:32 +01:00
parent fb7b3bbe01
commit 1cf9ee307a
8 changed files with 190 additions and 2 deletions

View File

@ -1,10 +1,10 @@
all: compile upload all: compile upload
compile: compile:
arduino-cli compile --fqbn arduino:mbed_nano:nano33ble sketch arduino-cli compile --fqbn arduino:avr:uno sketch
upload: 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: listen:
bash listen.sh bash listen.sh
@ -12,3 +12,11 @@ listen:
env: env:
bash --rcfile env.sh 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

10
jauge/Jauge.h Normal file
View File

@ -0,0 +1,10 @@
#pragma once
#include "LCD.h"
class Jauge {
private:
LCD lcd;
public:
Jauge(LCD lcd);
void update(int newScore);
};

13
jauge/Jauge.ino Normal file
View File

@ -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);
}
}

17
jauge/LCD.h Normal file
View File

@ -0,0 +1,17 @@
#pragma once
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
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();
};

17
jauge/LCD.ino Normal file
View File

@ -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();}

12
jauge/characters.h Normal file
View File

@ -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];

88
jauge/characters.ino Normal file
View File

@ -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,
};

23
jauge/jauge.ino Normal file
View File

@ -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');
}
}
}