//demo
//R.J.Tidey 5 Oct 2020
//Note text co-ordinates are by pixel in x direction and by 8 pixels in Y direction
#include <Arduino.h>
#include <TinyDebug.h>
#include "bar.h"
#include "ssd1306BB.h"
#define SSD1306_SCL 1 // SCL
#define SSD1306_SDA 0 // SDA
#define SSD1306_SA 0X3C // Slave address
#define SSDI2C_DELAY 1 // sets i2c speed
// // default PIN configuration is as below
// // VCC ---- vcc
// // GND ---- gnd
// // SCL ---- pb1
// // SDA ---- pb0
#define BLANK " "
#define INTERVAL 1000
int pt = 0;
int pt_old = 0;
int pt_drain;
int kgb = 0;
int kgb_old = 0;
int st = 0;
int st_old = 0;
long timer;
bool timer_on = false;
bool pt_full = false;
long timer_st;
bool timer_st_on = false;
bool st_full = false;
int loopCount = 0;
char strArray[8];
void displayInit() {
SSD1306.ssd1306_fillscreen(0);
SSD1306.ssd1306_setscale(0);
SSD1306.ssd1306_string(0, 0, " )..............*");
SSD1306.ssd1306_string(0, 1, "PORT $ %");
SSD1306.ssd1306_string(0, 2, " &(((((((((((((('");
SSD1306.ssd1306_string(0, 3, "KGB $ %");
SSD1306.ssd1306_string(0, 4, " &(((((((((((((('");
SSD1306.ssd1306_string(0, 5, "STBD $ %");
SSD1306.ssd1306_string(0, 6, " !--------------#");
SSD1306.ssd1306_string(0, 7, " MasterCdgfhbc");
}
char display(int d, int row) {
int offset = 26;
for (int i = 1; i <= d; i++) {
SSD1306.ssd1306_string(offset + i * 6, row, "+");
}
for (int i = d + 1; i <= 15; i++) {
SSD1306.ssd1306_string(offset + i * 6, row, " ");
}
}
char display_bag(int d, int row) {
int offset = 26;
for (int i = 1; i <= 7; i++) {
SSD1306.ssd1306_string(offset + i * 6, row, "+");
}
for (int i = 8; i <= d; i++) {
SSD1306.ssd1306_string(offset + i * 6, row, ",");
}
for (int i = d + 1; i <= 15; i++) {
SSD1306.ssd1306_string(offset + i * 6, row, " ");
}
}
void setup() {
delay(400);
Debug.begin();
SSD1306.ssd1306_init(SSD1306_SDA, SSD1306_SCL, SSD1306_SA, SSDI2C_DELAY);
SSD1306.ssd1306_fillscreen(0);
//SSD1306.ssd1306_draw_bmp(0,0,128,13,epd_bitmap_bar);
displayInit();
//display(10, 1);
//display(5, 3);
//display_bag(10, 5);
}
void port_read() {
pt = analogRead(A1);
pt_drain = analogRead(A2);
int data = map(pt, 0, 1020, 0, 7);
if (pt != pt_old) {
display(data, 1);
pt_old = pt;
}
if (timer_on == false && pt_full == false) {
if (data >= 7) {
timer_on = true;
timer = millis();
}
} else if (timer_on == true) {
long delta = (millis() - timer) / 1000;
if (delta <= 8) {
display_bag(data + delta, 1);
} else {
timer_on = false;
pt_full = true;
}
}
if (data < 7) {
pt_full = false;
timer_on = false;
}
}
void kgb_read() {
kgb = analogRead(A0);
if (kgb != kgb_old) {
int data = map(kgb, 0, 1023, 0, 15);
display(data, 3);
kgb_old = kgb;
}
}
void starboard_read() {
st = analogRead(A3);
int data_st = map(st, 0, 1020, 0, 7);
if (st != st_old) {
display(data_st, 5);
st_old = st;
}
if (timer_st_on == false && st_full == false) {
if (data_st >= 7) {
timer_st_on = true;
timer_st = millis();
}
} else if (timer_st_on == true) {
long delta = (millis() - timer_st) / 1000;
if (delta <= 8) {
display_bag(data_st + delta, 5);
} else {
timer_st_on = false;
st_full = true;
}
}
if (data_st < 7) {
st_full = false;
timer_st_on = false;
}
}
void loop() {
port_read();
kgb_read();
starboard_read();
//Debug.print(analogRead(A0));
//Debug.print(analogRead(A1));
Debug.println(analogRead(A2));
//Debug.println(analogRead(A3));
/* itoa(loopCount, strCount, 10);
SSD1306.ssd1306_string(64,6,strCount);
loopCount++;
if(loopCount > 9999) loopCount = 0;
*/
delay(100);
}