#include "TM1637.h"
#include <dht.h>
#define DHT22_PIN 2
TM1637 TM1;
TM1637 TM2;
TM1637 TM3;
dht DHT;
const int nxtbut = A0;
const int upbut = A1;
const int dwnbut = A2;
const int ackbut = A3;
bool nxtbutval = 0;
int nxtlightON = 0;
int nxtpushed = 0;
bool upbutval = 0;
int uplightON = 0;
int uppushed = 0;
bool dwnbutval = 0;
int dwnlightON = 0;
int dwnpushed = 0;
bool ackbutval = 0;
int acklightON = 0;
int ackpushed = 0;
int currentMenu = 0;
int currentSercetMenu = 0;
int lowtemp = 18;
int hightemp = 27;
int lowpa = 10;
int highpa = 20;
int lowhud = 70;
int highhud = 80;
int temperr = 0;
int paerr = 0;
int huderr = 0;
void setup()
{
Serial.begin(9600);
// Serial.println(__FILE__);
TM1.begin(3, 4, 4); // clockpin, datapin, #digits
TM2.begin(5, 6, 4);
TM3.begin(7, 8, 4);
pinMode(nxtbut, INPUT_PULLUP);
pinMode(upbut, INPUT_PULLUP);
pinMode(dwnbut, INPUT_PULLUP);
pinMode(ackbut, INPUT_PULLUP);
TM1.displayClear();
delay(200);
TM2.displayClear();
delay(200);
TM3.displayClear();
delay(200);
TM1.setBrightness(1);
TM1.displayPChar("RJIS");
delay(1000);
TM2.setBrightness(1);
TM2.displayPChar("CS 1");
delay(1000);
// TM3.setBrightness(1);
// TM3.displayPChar("");
// delay(1000);
}
// mimick clock, not ok under 10 seconds
// left as exercise for the programmer ;)
void loop()
{
nxtbutval = 1 - digitalRead(nxtbut);
upbutval = 1 - digitalRead(upbut);
dwnbutval = 1 - digitalRead(dwnbut);
ackbutval = 1 - digitalRead(ackbut);
if (nxtbutval == HIGH && nxtlightON == LOW) {
nxtpushed = 1 - nxtpushed;
currentMenu++;
delay(100);
}
nxtlightON = nxtbutval;
if (dwnbutval == HIGH && dwnlightON == LOW && currentSercetMenu == 0 && currentMenu == 0) {
dwnpushed = 1 - dwnpushed;
currentSercetMenu++;
delay(100);
}
// dwnlightON = dwnbutval;
if (upbutval == HIGH && uplightON == LOW && currentSercetMenu == 1 && currentMenu == 0) {
uppushed = 1 - uppushed;
currentSercetMenu++;
delay(100);
}
uplightON = upbutval;
if (dwnbutval == HIGH && dwnlightON == LOW && currentSercetMenu == 2 && currentMenu == 0) {
dwnpushed = 1 - dwnpushed;
currentSercetMenu++;
delay(100);
}
dwnlightON = dwnbutval;
if (currentMenu == 0) {
int chk = DHT.read22(DHT22_PIN);
Serial.print(int(DHT.humidity), 1);
Serial.print(",\t");
Serial.print(DHT.temperature, 1);
Serial.print(",\t");
Serial.print(currentSercetMenu);
Serial.print(",\t");
Serial.print(dwnlightON);
Serial.print(",\t");
Serial.println();
if (currentSercetMenu == 3) {
if (currentMenu == 0) {
reptupdwn(currentSercetMenu, "temp", "err", temperr);
}
else if (currentMenu == 1) {
reptupdwn(currentSercetMenu, "temp", "err", huderr);
}
else if (currentMenu == 2) {
reptupdwn(currentSercetMenu, "temp", "err", paerr);
}
else if (currentMenu == 3) {
currentSercetMenu=0;
currentMenu = 0;
}
}
else{
TM1.displayInt(int(DHT.humidity));
// TM1.displayFloat(DHT.humidity);
// TM2.displayFloat(DHT.temperature);
TM2.displayCelsius(DHT.temperature, false);
TM3.displayInt(23);
}
}
else if (currentMenu == 1) {
reptupdwn(currentMenu, "temp", "loo", lowtemp);
}
else if (currentMenu == 2) {
reptupdwn(currentMenu, "temp", "high", hightemp);
}
else if (currentMenu == 3) {
reptupdwn(currentMenu, "hud", "loo", lowhud);
}
else if (currentMenu == 4) {
reptupdwn(currentMenu, "hud", "high", highhud);
}
else if (currentMenu == 5) {
reptupdwn(currentMenu, "pres", "loo", lowpa);
}
else if (currentMenu == 6) {
reptupdwn(currentMenu, "pres", "high", highpa);
}
else if (currentMenu >= 7) {
currentMenu = 0;
}
// int chk = DHT.read22(DHT22_PIN);
// TM1.displayInt(int(DHT.humidity));
// // TM1.displayFloat(DHT.humidity);
// // TM2.displayFloat(DHT.temperature);
// TM2.displayCelsius(DHT.temperature,false);
// Serial.print(int(DHT.humidity), 1);
// Serial.print(",\t");
// Serial.print(DHT.temperature, 1);
// Serial.print(",\t");
// Serial.println();
}
void reptupdwn(int currentMenu, char senName[], char value[], int &varr) {
nxtbutval = 1 - digitalRead(nxtbut);
upbutval = 1 - digitalRead(upbut);
dwnbutval = 1 - digitalRead(dwnbut);
ackbutval = 1 - digitalRead(ackbut);
TM1.displayPChar(senName);
TM3.displayPChar(value);
TM2.displayInt(varr);
if (upbutval == HIGH && uplightON == LOW) {
uppushed = 1 - uppushed;
varr++;
delay(100);
}
uplightON = upbutval;
if (dwnbutval == HIGH && dwnlightON == LOW) {
dwnpushed = 1 - dwnpushed;
varr--;
delay(100);
}
dwnlightON = dwnbutval;
// TM1.displayRaw(data,-1);
// TM1.displayPChar('t');
Serial.print(currentMenu);
}
// a: 0x0a
// b: 0x0b
// c: 0x0c
// d: 0x0d
// e: 0x0e
// f: 0x0f
// g: 0x12
// h: 0x13
// i: 0x14
// j: 0x15
// k: 0x16
// l: 0x17
// m: 0x18
// n: 0x19
// o: 0x1a
// p: 0x1b
// q: 0x1c
// r: 0x1d
// s: 0x1e
// t: 0x1f
// u: 0x20
// v: 0x21
// w: 0x22
// x: 0x23
// y: 0x24
// z: 0x25