Kod:
#include "SSD1306.h"
#include <WiFi.h>
#include <DallasTemperature.h>
#include <OneWire.h>
int one_wire = 2;
OneWire oneWire(one_wire);
DallasTemperature sensors(&oneWire);
SSD1306 display(0x3c, 5,4);
int sensor_cmH2O = 0;
int sensor_temp;
// replace with your channel?s thingspeak API key,
String apiKey = "";
const char* ssid = "";
const char* password = "";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
sensors.begin();
pinMode(26, INPUT);
Serial.begin(115200);
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_16);
}
void wyslij () {
WiFi.begin(ssid, password);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
delay(1000);
if (client.connect(server,80)) { // "184.106.153.149" or api.thingspeak.com
String postStr = apiKey;
postStr +="&field1=";
postStr += String(sensor_cmH2O);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.print("cmH2O - ");
//Serial.print(t);
Serial.println(sensor_cmH2O);
//Serial.print(h);
Serial.println("% send to Thingspeak");
}
client.stop();
Serial.println("Waiting?");
// thingspeak needs minimum 15 sec delay between updates
delay(20000);
}
void temp_wody() {
sensors.requestTemperatures();
sensor_temp = sensors.getTempCByIndex(0);
String tekst2;
tekst2 = String(sensor_temp);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setFont(ArialMT_Plain_24);
display.drawString(64, 6, tekst2 + " 'C");
display.drawString(64, 35, "H2O");
}
void oled_cmH2O() {
sensor_cmH2O = analogRead(26) * (4.7 / 4096) * 216.6994;
String tekst1;
tekst1 = String(sensor_cmH2O);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setFont(ArialMT_Plain_24);
display.drawString(64, 0, tekst1 + " cm");
display.drawString(64, 25, "H2O");
}
void linijka_cmH2O() {
display.drawProgressBar(0, 53, 120, 10, sensor_cmH2O / 10);
}
void loop() {
Serial.print("cm - ");
Serial.println(sensor_cmH2O);
Serial.println (analogRead(26));
Serial.print("Temperatura: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" C");
Serial.println();
display.clear();
oled_cmH2O();
linijka_cmH2O();
display.display();
delay(2000);
display.clear();
temp_wody();
display.display();
wyslij();
delay(2000);
}