Add Files

This commit is contained in:
Vasily Davydov
2022-01-10 13:40:28 +02:00
committed by GitHub
parent 94f0987224
commit 6dd9a9e9a7
60 changed files with 4516 additions and 0 deletions

29
RoomyState/Counter.cpp Normal file
View File

@@ -0,0 +1,29 @@
#include "Counter.h"
void Counter::inc() {
if(init >= up_lim){
init = 0;
} else{
++init;
}
}
int Counter::getInit(){
return this->init;
}
Counter::Counter(int i, int up) {
up_lim = up;
if(i > up){
init = up;
}else if(i < 0){
init = 0;
}else{
init = i;
}
}
void Counter::setInit(int i){
init = i;
}

19
RoomyState/Counter.h Normal file
View File

@@ -0,0 +1,19 @@
#ifndef Counter_h
#define Counter_h
class Counter {
public:
Counter(int i, int up);
void inc();
int getInit();
void setInit(int i);
~Counter() = default;
private:
int init;
int up_lim;
};
#endif

119
RoomyState/RoomyState.ino Normal file
View File

@@ -0,0 +1,119 @@
#include "lcd.h"
#include "led.h"
int initial = 0;
int buttonState = 0;
int curr;
float temp, humid;
DHT sens(THERM_I, DHT11);
bool conn = true;
int incom = 0;
char *mess;
unsigned long lastTime;
Counter c (initial, 3);
bool sent = true;
void setup() {
Serial.begin(57600);
pinMode(BI, INPUT);
initial = EEPROM.read(0);
if(initial!= 255){
c.setInit(initial);
}
sens.begin();
lcdAwake();
RGBinit();
hexToRGB("ffffff");
while(conn){
setText("Waking up...");
if (Serial.available() > 0){
incom = Serial.read();
if((char)incom == '#'){
Serial.print("$");
conn = false;
setText("USB connected");
}
}
}
switch(c.getInit()){
case 0:
hexToRGB("0000ff");
//delay(AFT_FUN);
break;
case 1:
hexToRGB("ff5200");
//delay(AFT_FUN);
break;
case 2:
hexToRGB("ff0000");
//delay(AFT_FUN);
break;
case 3:
hexToRGB("00FF00");
//delay(AFT_FUN);
break;
default:
break;
}
}
void loop() {
buttonState = digitalRead(BI);
temp = sens.readTemperature();
humid = sens.readHumidity();
curr = c.getInit();
if(millis() - lastTime > 5000 && !sent){
switch(curr){
case 0:
setHome(temp, humid);
//delay(AFT_FUN);
break;
case 1:
setAway(temp, humid);
//delay(AFT_FUN);
break;
case 2:
setBusy(temp, humid);
//delay(AFT_FUN);
break;
case 3:
setCome(temp, humid);
//delay(AFT_FUN);
break;
default:
break;
}
sent = true;
}
if(buttonState){
while(buttonState) buttonState = digitalRead(BI);
c.inc();
curr = c.getInit();
lastTime = millis();
switch(curr){
case 0:
hexToRGB("0000ff");
//delay(AFT_FUN);
break;
case 1:
hexToRGB("ff5200");
//delay(AFT_FUN);
break;
case 2:
hexToRGB("ff0000");
//delay(AFT_FUN);
break;
case 3:
hexToRGB("00FF00");
//delay(AFT_FUN);
break;
default:
break;
}
sent = false;
}
displayFloat(temp, true);
displayFloat(humid, false);
}

89
RoomyState/lcd.cpp Normal file
View File

@@ -0,0 +1,89 @@
#include "lcd.h"
#include "Arduino.h"
LiquidCrystal lcd(RS, ENA, D4, D5, D6, D7);
void lcdAwake(){
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(1, 0);
}
void setHome(float temp, float hum){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Currently Home");
Serial.print('#');
Serial.print('H');
Serial.print('#');
Serial.print(temp, 2);
Serial.print('#');
Serial.print(hum, 2);
Serial.print(';');
EEPROM.write(0, 0);
}
void setAway(float temp, float hum){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Not Home");
Serial.print('#');
Serial.print('A');
Serial.print('#');
Serial.print(temp, 2);
Serial.print('#');
Serial.print(hum, 2);
Serial.print(';');
EEPROM.write(0, 1);
}
void setBusy(float temp, float hum){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Currently Busy");
Serial.print('#');
Serial.print('B');
Serial.print('#');
Serial.print(temp, 2);
Serial.print('#');
Serial.print(hum, 2);
Serial.print(';');
EEPROM.write(0, 2);
}
void setCome(float temp, float hum){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Come in!");
Serial.print('#');
Serial.print('C');
Serial.print('#');
Serial.print(temp, 2);
Serial.print('#');
Serial.print(hum, 2);
Serial.print(';');
EEPROM.write(0, 3);
}
void setText(char *s){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(s);
}
void displayFloat(float num, bool row){
if(row){
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.setCursor(2, 1);
lcd.print(num);
}else{
lcd.setCursor(8, 1);
lcd.print("H:");
lcd.setCursor(10,1);
lcd.print(num);
lcd.setCursor(15,1);
lcd.print("%");
}
}

21
RoomyState/lcd.h Normal file
View File

@@ -0,0 +1,21 @@
#ifndef lcd_h
#define lcd_h
#include "lib.h"
void lcdAwake();
//Displaying functions
void setHome(float temp, float hum);
void setAway(float temp, float hum);
void setBusy(float temp, float hum);
void setCome(float temp, float hum);
void setText(char* s);
void displayFloat(float num, bool row);
#endif

25
RoomyState/led.cpp Normal file
View File

@@ -0,0 +1,25 @@
#include "led.h"
void RGBinit() {
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
setColor(255, 0 ,0);
}
void setColor(int Rv, int Gv, int Bv){
analogWrite(R, Rv);
analogWrite(G, Gv);
analogWrite(B, Bv);
}
void hexToRGB(char* hex){
int r, g, b;
if(sscanf(hex, "%02x%02x%02x", &r, &g, &b) == 3){
setColor(r, g, b);
}else{
setColor(255, 255, 255);
}
}

11
RoomyState/led.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef led_h
#define led_h
#include "lib.h"
#include "Arduino.h"
enum RGBpins {R = 9, G = 10, B = 11};
void RGBinit();
void setColor(int Rv, int Gv, int Bv);
void hexToRGB(char* hex);
#endif

12
RoomyState/lib.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef lib_h
#define lib_h
#include <LiquidCrystal.h>
#include "Counter.h"
#include <Adafruit_Sensor.h>
#include <EEPROM.h>
#include "DHT.h"
enum pinOut { RS = 12, ENA = 8, D4 = 5, D5 = 4, D6 = 3, D7 = 2, BI = 7, THERM_I = 13};
enum time_val {AFT_FUN = 700, BUT_VAL = 25};
#endif