mirror of
https://github.com/DinoMalin/paranoia-1.0.git
synced 2025-10-30 11:06:00 +00:00
improvment: object oriented face
This commit is contained in:
parent
4caff40708
commit
4068f02fb2
17
LCD.h
Normal file
17
LCD.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <hd44780.h>
|
||||||
|
#include <hd44780ioClass/hd44780_I2Cexp.h>
|
||||||
|
|
||||||
|
class LCD {
|
||||||
|
public:
|
||||||
|
hd44780_I2Cexp lcd;
|
||||||
|
|
||||||
|
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();
|
||||||
|
};
|
||||||
12
sketch/Face.h
Normal file
12
sketch/Face.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "LCD.h"
|
||||||
|
|
||||||
|
class Face {
|
||||||
|
private:
|
||||||
|
int x;
|
||||||
|
LCD lcd;
|
||||||
|
public:
|
||||||
|
void blink();
|
||||||
|
void drawEyes();
|
||||||
|
Face(LCD lcd);
|
||||||
|
};
|
||||||
25
sketch/Face.ino
Normal file
25
sketch/Face.ino
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "Face.h"
|
||||||
|
|
||||||
|
Face::Face(LCD _lcd) : x(3), lcd(_lcd) {}
|
||||||
|
|
||||||
|
void Face::blink() {
|
||||||
|
lcd.clear();
|
||||||
|
lcd.drawBlink(x, 0);
|
||||||
|
lcd.drawBlink(x+1, 0);
|
||||||
|
lcd.drawRectangle(x+7, 0);
|
||||||
|
lcd.drawRectangle(x+8, 0);
|
||||||
|
lcd.drawRectangle(x+7, 1);
|
||||||
|
lcd.drawRectangle(x+8, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Face::drawEyes() {
|
||||||
|
lcd.clear();
|
||||||
|
lcd.drawRectangle(x, 0);
|
||||||
|
lcd.drawRectangle(x+1, 0);
|
||||||
|
lcd.drawRectangle(x+7, 0);
|
||||||
|
lcd.drawRectangle(x+8, 0);
|
||||||
|
lcd.drawRectangle(x, 1);
|
||||||
|
lcd.drawRectangle(x+1, 1);
|
||||||
|
lcd.drawRectangle(x+7, 1);
|
||||||
|
lcd.drawRectangle(x+8, 1);
|
||||||
|
}
|
||||||
17
sketch/LCD.h
Normal file
17
sketch/LCD.h
Normal 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
sketch/LCD.ino
Normal file
17
sketch/LCD.ino
Normal 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();}
|
||||||
@ -1,9 +1,8 @@
|
|||||||
|
#include "Face.h"
|
||||||
#include <Wire.h>
|
|
||||||
#include <hd44780.h>
|
|
||||||
#include <hd44780ioClass/hd44780_I2Cexp.h>
|
|
||||||
|
|
||||||
hd44780_I2Cexp lcd; // auto-detects the I2C address
|
hd44780_I2Cexp lcd; // auto-detects the I2C address
|
||||||
|
LCD _lcd(&lcd);
|
||||||
|
Face face(_lcd);
|
||||||
|
|
||||||
byte rectangle[8] = {
|
byte rectangle[8] = {
|
||||||
0xff,
|
0xff,
|
||||||
@ -26,45 +25,6 @@ byte blink[8] = {
|
|||||||
0b11111,
|
0b11111,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RECTANGLE 0
|
|
||||||
#define BLINK 1
|
|
||||||
|
|
||||||
#define draw_rectangle(x, y) draw_char(x, y, RECTANGLE);
|
|
||||||
#define draw_blink(x, y) draw_char(x, y, BLINK);
|
|
||||||
|
|
||||||
void draw_char(int x, int y, char c) {
|
|
||||||
lcd.setCursor(x,y);
|
|
||||||
lcd.write(byte(c));
|
|
||||||
}
|
|
||||||
|
|
||||||
void draw_eyes(int x) {
|
|
||||||
draw_rectangle(x, 0);
|
|
||||||
draw_rectangle(x+1, 0);
|
|
||||||
draw_rectangle(x+7, 0);
|
|
||||||
draw_rectangle(x+8, 0);
|
|
||||||
//draw_char(x, 1, '\n');
|
|
||||||
//draw_char(x+1, 1, '\n');
|
|
||||||
//draw_char(x+7, 1, '\n');
|
|
||||||
//draw_char(x+8, 1, '\n');
|
|
||||||
draw_rectangle(x, 1);
|
|
||||||
draw_rectangle(x+1, 1);
|
|
||||||
draw_rectangle(x+7, 1);
|
|
||||||
draw_rectangle(x+8, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void do_blink(int x) {
|
|
||||||
draw_blink(x, 0);
|
|
||||||
draw_blink(x+1, 0);
|
|
||||||
draw_rectangle(x+7, 0);
|
|
||||||
draw_rectangle(x+8, 0);
|
|
||||||
draw_rectangle(x+7, 1);
|
|
||||||
draw_rectangle(x+8, 1);
|
|
||||||
//draw_char(x, 1, '\n');
|
|
||||||
//draw_char(x+1, 1, '\n');
|
|
||||||
//draw_char(x+7, 1, '\n');
|
|
||||||
//draw_char(x+8, 1, '\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
lcd.begin(16, 2);
|
lcd.begin(16, 2);
|
||||||
lcd.createChar(0, rectangle);
|
lcd.createChar(0, rectangle);
|
||||||
@ -73,29 +33,17 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
draw_eyes(3);
|
face.drawEyes();
|
||||||
delay(1200);
|
delay(1200);
|
||||||
lcd.clear();
|
|
||||||
|
|
||||||
do_blink(3);
|
face.blink();
|
||||||
delay(300);
|
delay(300);
|
||||||
lcd.clear();
|
|
||||||
|
|
||||||
draw_eyes(3);
|
face.drawEyes();
|
||||||
delay(1200);
|
delay(1200);
|
||||||
lcd.clear();
|
|
||||||
|
|
||||||
// look to the sides
|
|
||||||
draw_eyes(1);
|
|
||||||
delay(800);
|
|
||||||
lcd.clear();
|
|
||||||
draw_eyes(5);
|
|
||||||
delay(800);
|
|
||||||
lcd.clear();
|
|
||||||
|
|
||||||
Serial.print("[CMD]");
|
Serial.print("[CMD]");
|
||||||
Serial.println("[firefox --new-window 'https://www.terre-plate.org/terre-plate-preuve-ultime/']");
|
Serial.println("[firefox --new-window 'https://www.terre-plate.org/terre-plate-preuve-ultime/']");
|
||||||
|
|
||||||
Serial.print("[CMD]");
|
Serial.print("[CMD]");
|
||||||
Serial.println("[pwd]");
|
Serial.println("[pwd]");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user