-
Notifications
You must be signed in to change notification settings - Fork 0
/
differential_temp_controller_w_10k_thermistor_w_serlcd.ino
62 lines (46 loc) · 1.65 KB
/
differential_temp_controller_w_10k_thermistor_w_serlcd.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
The program has been written by Elad Nachmias
Based on schematics ideas by reuk.co.uk November 2013
For information and the schematic circuit diagram for this
solar water heating pump controller design, visit:
http://www.reuk.co.uk/wordpress/arduino-solar-water-heating-pump-controller-design-and-code/
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "SolarSystemSettings.h"
// set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_COLS, LCD_ROWS);
#include "SolarSystem/SolarSystem.h"
SolarSystem solarSystem(PANEL_SENSOR_PIN, TANK_SENSOR_PIN, PUMP_RELAY_PIN);
#if USE_SOLAR_SYSTEM_UI
#include "SolarSystemUI/SolarSystemUI.h"
UILcdInterfaceImpl<LiquidCrystal_I2C> lcdInterface(&lcd);
SolarSystemUI solarSystemUI(&solarSystem, &lcdInterface, MODE_BUTTON_PIN,
UPPER_BUTTON_PIN, LOWER_BUTTON_PIN, SET_BUTTON_PIN);
#endif /* USE_SOLAR_SYSTEM_UI */
/* Main Arduino setup() method */
void setup() {
#if DEBUG_PRINT_TEMP_TO_SERIAL
Serial.begin(9600);
#endif /* DEBUG_PRINT_TEMP_TO_SERIAL */
lcd.init(); // initialize the LCD
lcd.backlight(); // open the back-light
solarSystem.init();
#if USE_SOLAR_SYSTEM_UI
solarSystemUI.init();
#endif /* USE_SOLAR_SYSTEM_UI */
}
/* Main Arduino loop() method */
void loop() {
solarSystem.loop();
#if USE_SOLAR_SYSTEM_UI
solarSystemUI.loop();
#else
// Simple printing without the `SolarSystemUI`:
solarSystem.printStatusToLCD(lcd);
#endif /* USE_SOLAR_SYSTEM_UI */
#if DEBUG_PRINT_TEMP_TO_SERIAL
solarSystem.printStatusToSerial();
#endif /* DEBUG_PRINT_TEMP_TO_SERIAL */
delay(MAIN_LOOP_DELAY_MS);
}