First init.
This commit is contained in:
124
TempOLED/TempOLED.ino
Normal file
124
TempOLED/TempOLED.ino
Normal file
@@ -0,0 +1,124 @@
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_GFX.h>
|
||||
#include <Adafruit_SSD1306.h>
|
||||
#include <OneWire.h>
|
||||
#include <DallasTemperature.h>
|
||||
|
||||
// Define OLED display parameters
|
||||
#define SCREEN_WIDTH 128
|
||||
#define SCREEN_HEIGHT 64
|
||||
#define OLED_RESET -1
|
||||
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
||||
|
||||
// Define DS18B20 data pin
|
||||
#define ONE_WIRE_BUS 2
|
||||
OneWire oneWire(ONE_WIRE_BUS);
|
||||
DallasTemperature sensors(&oneWire);
|
||||
|
||||
// Define digital output pins
|
||||
const int outputPin1 = 3;
|
||||
const int outputPin2 = 4;
|
||||
|
||||
// Define digital input pins for overrides
|
||||
const int inputPin1 = 5;
|
||||
const int inputPin2 = 6;
|
||||
|
||||
// Variables to track digital input states
|
||||
bool input1State = false;
|
||||
bool input2State = false;
|
||||
|
||||
void setup() {
|
||||
// Initialize the OLED display
|
||||
if(!display.begin(0x3C, OLED_RESET, SDA, SCL)) {
|
||||
Serial.println(F("SSD1306 allocation failed"));
|
||||
for(;;);
|
||||
}
|
||||
|
||||
// Initialize DS18B20 sensor
|
||||
sensors.begin();
|
||||
|
||||
// Set digital output pins as OUTPUT
|
||||
pinMode(outputPin1, OUTPUT);
|
||||
pinMode(outputPin2, OUTPUT);
|
||||
|
||||
// Set digital input pins as INPUT_PULLUP
|
||||
pinMode(inputPin1, INPUT_PULLUP);
|
||||
pinMode(inputPin2, INPUT_PULLUP);
|
||||
|
||||
// Initialize Serial communication
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Request temperature from DS18B20 sensor
|
||||
sensors.requestTemperatures();
|
||||
float temperatureC = sensors.getTempCByIndex(0);
|
||||
|
||||
// Display temperature on OLED
|
||||
display.clearDisplay();
|
||||
display.setTextSize(1);
|
||||
display.setTextColor(SSD1306_WHITE);
|
||||
display.setCursor(0,0);
|
||||
display.print(F("Temperature: "));
|
||||
display.print(temperatureC);
|
||||
display.print(F("C"));
|
||||
|
||||
// Display blank line
|
||||
display.setCursor(0, 20);
|
||||
display.println();
|
||||
|
||||
// Display digital output status
|
||||
display.print(F("Fan 1: "));
|
||||
display.setTextColor(digitalRead(outputPin1) == HIGH ? SSD1306_WHITE : SSD1306_WHITE);
|
||||
display.println(digitalRead(outputPin1) == HIGH ? "On" : "Off");
|
||||
display.setTextColor(SSD1306_WHITE);
|
||||
|
||||
display.print(F("Fan 2: "));
|
||||
display.setTextColor(digitalRead(outputPin2) == HIGH ? SSD1306_WHITE : SSD1306_WHITE);
|
||||
display.println(digitalRead(outputPin2) == HIGH ? "On" : "Off");
|
||||
display.setTextColor(SSD1306_WHITE);
|
||||
|
||||
display.display();
|
||||
|
||||
// Check temperature thresholds and control digital outputs
|
||||
if (temperatureC >= 97) {
|
||||
digitalWrite(outputPin1, HIGH);
|
||||
} else if (temperatureC <= 86) {
|
||||
digitalWrite(outputPin1, LOW);
|
||||
}
|
||||
|
||||
if (temperatureC >= 106) {
|
||||
digitalWrite(outputPin2, HIGH);
|
||||
} else if (temperatureC <= 94) {
|
||||
digitalWrite(outputPin2, LOW);
|
||||
}
|
||||
|
||||
// Check digital input overrides
|
||||
bool newInput1State = digitalRead(inputPin1) == HIGH;
|
||||
bool newInput2State = digitalRead(inputPin2) == HIGH;
|
||||
|
||||
if (newInput1State && !input1State) {
|
||||
// Digital input 1 turned on, turn on Fan 1
|
||||
digitalWrite(outputPin1, HIGH);
|
||||
} else if (newInput2State && !input2State && !newInput1State) {
|
||||
// Digital input 2 turned on (and input 1 is off), turn on Fan 1 and Fan 2
|
||||
digitalWrite(outputPin1, HIGH);
|
||||
digitalWrite(outputPin2, HIGH);
|
||||
}
|
||||
|
||||
// Update input states
|
||||
input1State = newInput1State;
|
||||
input2State = newInput2State;
|
||||
|
||||
// Print temperature and output status to Serial Monitor
|
||||
Serial.print(F("Temperature: "));
|
||||
Serial.print(temperatureC);
|
||||
Serial.println(F("C"));
|
||||
Serial.print(F("Fan 1: "));
|
||||
Serial.println(digitalRead(outputPin1) == HIGH ? "On" : "Off");
|
||||
Serial.print(F("Fan 2: "));
|
||||
Serial.println(digitalRead(outputPin2) == HIGH ? "On" : "Off");
|
||||
|
||||
// Delay for a moment to avoid rapid updates
|
||||
delay(1000);
|
||||
}
|
||||
Reference in New Issue
Block a user