Add Files
This commit is contained in:
29
RoomyState/Counter.cpp
Normal file
29
RoomyState/Counter.cpp
Normal 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
19
RoomyState/Counter.h
Normal 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
119
RoomyState/RoomyState.ino
Normal 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
89
RoomyState/lcd.cpp
Normal 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
21
RoomyState/lcd.h
Normal 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
25
RoomyState/led.cpp
Normal 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
11
RoomyState/led.h
Normal 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
12
RoomyState/lib.h
Normal 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
|
||||
Reference in New Issue
Block a user