-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ac88a05
commit cdfb904
Showing
14 changed files
with
479 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
void main_program(void) { | ||
while (1) { | ||
delay(0); | ||
TaskScheduler(); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
void main_code(void) { | ||
|
||
// store the volatge | ||
voltage = SX01.getVoltage(); | ||
|
||
// calculate thermistor resistance | ||
therm_res = ((vcc * series_res) / voltage) - series_res; | ||
|
||
// calculate the actual temperature in kelvin | ||
act_tempK = (room_tempK * B) / (B + room_tempK * log(therm_res / room_res)); | ||
|
||
// convert kelvin to celsius | ||
act_tempC = act_tempK - C_Kelvin; | ||
|
||
// print temperature on OLED display | ||
// manual formatting to display in center | ||
OD01.set2X(); | ||
OD01.print(" "); | ||
OD01.print(act_tempC); | ||
OD01.print(" C"); | ||
OD01.println(""); | ||
OD01.set1X(); | ||
OD01.println(" SX02 is an ADC"); | ||
OD01.println(""); | ||
|
||
OD01.println(" Touch the probe for"); | ||
OD01.println(" temperature change"); | ||
OD01.println(""); | ||
OD01.print(" "); | ||
OD01.print((1.8*act_tempC)+32); | ||
OD01.print(" F"); | ||
|
||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
void red_fade(const long interval, int LED, int limit, int increment) { | ||
currentMilli = millis(); | ||
if (currentMilli - previousMilli1 >= interval) { | ||
previousMilli1 = currentMilli; | ||
if (fade_flag1 == true) { | ||
LED_state1 += increment; | ||
if (LED_state1 == limit) { | ||
fade_flag1 = false; | ||
} | ||
} | ||
if (fade_flag1 == false) { | ||
LED_state1 -= increment; | ||
if (LED_state1 == 0) { | ||
fade_flag1 = true; | ||
ledID++; | ||
} | ||
} | ||
} | ||
analogWrite(LED, LED_state1); | ||
} | ||
void blue_fade(const long interval, int LED, int limit, int increment) { | ||
currentMilli = millis(); | ||
if (currentMilli - previousMilli2 >= interval) { | ||
previousMilli2 = currentMilli; | ||
if (fade_flag2 == true) { | ||
LED_state2 += increment; | ||
if (LED_state2 == limit) { | ||
fade_flag2 = false; | ||
} | ||
} | ||
if (fade_flag2 == false) { | ||
LED_state2 -= increment; | ||
if (LED_state2 == 0) { | ||
fade_flag2 = true; | ||
ledID = 0; | ||
} | ||
} | ||
} | ||
analogWrite(LED, LED_state2); | ||
} | ||
void green_fade(const long interval, int LED, int limit, int increment) { | ||
currentMilli = millis(); | ||
if (currentMilli - previousMilli3 >= interval) { | ||
previousMilli3 = currentMilli; | ||
if (fade_flag3 == true) { | ||
LED_state3 += increment; | ||
if (LED_state3 == limit) { | ||
fade_flag3 = false; | ||
} | ||
} | ||
if (fade_flag3 == false) { | ||
LED_state3 -= increment; | ||
if (LED_state3 == 0) { | ||
fade_flag3 = true; | ||
ledID++; | ||
} | ||
} | ||
} | ||
analogWrite(LED, LED_state3); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
void setup_program(void) { | ||
|
||
#if defined(ESP8266) | ||
WiFi.forceSleepBegin(); | ||
Wire.begin(2, 14); | ||
Wire.setClockStretchLimit(15000); | ||
|
||
#elif defined(ARDUINO_SAMD_ZERO) | ||
Wire.begin(); | ||
|
||
#elif defined(ARDUINO_AVR_PRO) | ||
Wire.begin(); | ||
|
||
#elif defined(ESP32) | ||
Wire.begin(); | ||
|
||
#endif | ||
|
||
voltage = 0; | ||
therm_res = 0; | ||
act_tempK = 0; | ||
act_tempC = 0; | ||
|
||
// start sensor | ||
SX01.begin(); | ||
|
||
// start oled | ||
OLED.begin(); | ||
|
||
// clear oled | ||
OD01.clear(); | ||
|
||
// set output leds | ||
pinMode(CW01_RED, OUTPUT); | ||
pinMode(CW01_GREEN, OUTPUT); | ||
pinMode(CW01_BLUE, OUTPUT); | ||
|
||
// turn rgb on | ||
digitalWrite(CW01_RED, HIGH); | ||
digitalWrite(CW01_GREEN, HIGH); | ||
digitalWrite(CW01_BLUE, HIGH); | ||
|
||
delay(2000); | ||
|
||
// turn rgb off | ||
digitalWrite(CW01_RED, LOW); | ||
digitalWrite(CW01_GREEN, LOW); | ||
digitalWrite(CW01_BLUE, LOW); | ||
|
||
delay(1000); | ||
t.tick_main = millis(); | ||
t.tick_poll = millis(); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
#include <xCore.h> | ||
#include <xOD01.h> | ||
#include "TIMER_CTRL.h" | ||
#include <xSX01.h> // include analogue input sensor library | ||
#include <math.h> // include maths functions | ||
|
||
#if defined(ESP8266) | ||
#define RED RED | ||
#define GREEN GREEN | ||
#define BLUE BLUE | ||
#include <ESP8266WiFi.h> | ||
#define Serial Serial | ||
|
||
#elif defined(ARDUINO_SAMD_ZERO) | ||
#define RED CC03_RED | ||
#define GREEN CC03_GREEN | ||
#define BLUE CC03_BLUE | ||
#define Serial SerialUSB | ||
|
||
#elif defined(ARDUINO_AVR_PRO) | ||
#define RED CC01_RED | ||
#define GREEN CC01_GREEN | ||
#define BLUE CC01_BLUE | ||
#define Serial Serial | ||
|
||
#elif defined(ESP32) | ||
#define RED CW02_RED | ||
#define GREEN CW02_GREEN | ||
#define BLUE CW02_BLUE | ||
#define Serial Serial | ||
#endif | ||
|
||
#define C_Kelvin 273.15 // for conversion from kelvin to celsius | ||
#define series_res 10000 // value of series resistor in ohms | ||
#define B 3950 // B parameter for thermistor | ||
#define room_tempK 298.15 // room temperature in kelvin | ||
#define room_res 10000 // resistance at room temperature in ohms | ||
#define vcc 3.3 // supply voltage | ||
|
||
xSX01 SX01(0x55); // set the i2c address | ||
|
||
float voltage; // variable containing the measured voltage (0 - 3.3V) | ||
float therm_res; // thermistor resistance | ||
float act_tempK; // actual temperature kelvin | ||
float act_tempC; // actual temperature in celsius | ||
|
||
unsigned long currentMilli = 0; | ||
int ledID = 0; | ||
bool fade_flag1 = true; | ||
unsigned long previousMilli1 = 0; // timing variable for LEDS | ||
int LED_state1 = 0; | ||
bool fade_flag2 = true; | ||
unsigned long previousMilli2 = 0; // timing variable for LEDS | ||
int LED_state2 = 0; | ||
bool fade_flag3 = true; | ||
unsigned long previousMilli3 = 0; // timing variable for LEDS | ||
int LED_state3 = 0; | ||
|
||
|
||
void setup() { | ||
// put your setup code here, to run once: | ||
setup_program(); | ||
} | ||
|
||
void loop() { | ||
// put your main code here, to run repeatedly: | ||
main_program(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
void TaskScheduler(void) { | ||
if (ledID == 0) { | ||
red_fade(30, CW01_RED, 255, 5); | ||
} else if (ledID == 1) { | ||
green_fade(30, CW01_GREEN, 255, 5); | ||
} else if (ledID == 2) { | ||
blue_fade(30, CW01_BLUE, 255, 5); | ||
} | ||
if((millis() - t.tick_main) > 1000) { | ||
OD01.clear(); | ||
main_code(); | ||
t.tick_main = millis(); | ||
} | ||
|
||
if((millis() - t.tick_poll) > 30) { | ||
SX01.poll(); | ||
t.tick_poll = millis(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#ifndef timer_h | ||
#define timer_h | ||
|
||
struct TIMER_CTRL { | ||
unsigned long tick_main; | ||
unsigned long tick_poll; | ||
}t; | ||
|
||
#endif | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
void main_program(void) { | ||
while (1) { | ||
delay(0); | ||
TaskScheduler(); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
void main_code(void) { | ||
|
||
// store the volatge | ||
voltage = SX01.getVoltage(); | ||
|
||
// calculate thermistor resistance | ||
therm_res = ((vcc * series_res) / voltage) - series_res; | ||
|
||
// calculate the actual temperature in kelvin | ||
act_tempK = (room_tempK * B) / (B + room_tempK * log(therm_res / room_res)); | ||
|
||
// convert kelvin to celsius | ||
act_tempC = act_tempK - C_Kelvin; | ||
|
||
// print temperature on OLED display | ||
// manual formatting to display in center | ||
OD01.set2X(); | ||
OD01.print(" "); | ||
OD01.print(act_tempC); | ||
OD01.print(" C"); | ||
OD01.println(""); | ||
OD01.set1X(); | ||
OD01.println(" SX02 is an ADC"); | ||
OD01.println(""); | ||
|
||
OD01.println(" Touch the probe for"); | ||
OD01.println(" temperature change"); | ||
OD01.println(""); | ||
OD01.print(" "); | ||
OD01.print((1.8*act_tempC)+32); | ||
OD01.print(" F"); | ||
|
||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
void red_fade(const long interval, int LED, int limit, int increment) { | ||
currentMilli = millis(); | ||
if (currentMilli - previousMilli1 >= interval) { | ||
previousMilli1 = currentMilli; | ||
if (fade_flag1 == true) { | ||
LED_state1 += increment; | ||
if (LED_state1 == limit) { | ||
fade_flag1 = false; | ||
} | ||
} | ||
if (fade_flag1 == false) { | ||
LED_state1 -= increment; | ||
if (LED_state1 == 0) { | ||
fade_flag1 = true; | ||
ledID++; | ||
} | ||
} | ||
} | ||
analogWrite(LED, LED_state1); | ||
} | ||
void blue_fade(const long interval, int LED, int limit, int increment) { | ||
currentMilli = millis(); | ||
if (currentMilli - previousMilli2 >= interval) { | ||
previousMilli2 = currentMilli; | ||
if (fade_flag2 == true) { | ||
LED_state2 += increment; | ||
if (LED_state2 == limit) { | ||
fade_flag2 = false; | ||
} | ||
} | ||
if (fade_flag2 == false) { | ||
LED_state2 -= increment; | ||
if (LED_state2 == 0) { | ||
fade_flag2 = true; | ||
ledID = 0; | ||
} | ||
} | ||
} | ||
analogWrite(LED, LED_state2); | ||
} | ||
void green_fade(const long interval, int LED, int limit, int increment) { | ||
currentMilli = millis(); | ||
if (currentMilli - previousMilli3 >= interval) { | ||
previousMilli3 = currentMilli; | ||
if (fade_flag3 == true) { | ||
LED_state3 += increment; | ||
if (LED_state3 == limit) { | ||
fade_flag3 = false; | ||
} | ||
} | ||
if (fade_flag3 == false) { | ||
LED_state3 -= increment; | ||
if (LED_state3 == 0) { | ||
fade_flag3 = true; | ||
ledID++; | ||
} | ||
} | ||
} | ||
analogWrite(LED, LED_state3); | ||
} |
Oops, something went wrong.