From deec1b19716f6711bc4a80116c58c8d629d38e40 Mon Sep 17 00:00:00 2001 From: "Sebastian @ HfG" Date: Thu, 27 Jun 2024 18:56:57 +0200 Subject: [PATCH] readme updated --- BME280-BMP280-snippets.ino | 34 ++++++++++ README.md | 135 +++++++++++++++++++++++++++++++++++++ Soil-Moisture-Sensor.ino | 19 ++++++ TSL2591-snippets.ino | 25 +++++++ pico-embed.png | Bin 0 -> 9465 bytes 5 files changed, 213 insertions(+) create mode 100644 BME280-BMP280-snippets.ino create mode 100644 Soil-Moisture-Sensor.ino create mode 100644 TSL2591-snippets.ino create mode 100644 pico-embed.png diff --git a/BME280-BMP280-snippets.ino b/BME280-BMP280-snippets.ino new file mode 100644 index 0000000..5e301af --- /dev/null +++ b/BME280-BMP280-snippets.ino @@ -0,0 +1,34 @@ +// BME280: Suche in Arduino Libraries nach BME280 und installiere Adafruit BME280 +// BMP280: Suche in Arduino Libraries nach BMP280 und installiere Adafruit BMP280 + +// kopiere in die jeweils entsprechenden Funktionen in ui.ino + +#include +#include +#include +#include + +#define SEALEVELPRESSURE_HPA (1013.25) + +Adafruit_BME280 bme; // BME280 +//Adafruit_BMP280 bmp; // BMP280 + +void setup() { + bme.begin(0x76); + //bmp.begin(0x76); +} + +void loop() { + int temp = bme.readTemperature(); + int pressure = bme.readPressure() / 100.0F; + int humidity = bme.readHumidity(); + + //int temp = bmp.readTemperature(); + //int pressure = bmp.readPressure() / 100.0F; + + // Label (oder andere Text-Elemente) + lv_label_set_text(ui_Label1, String(pressure).c_str()); + + // Bar / Arc (alles mit Werten) + lv_bar_set_value(ui_Bar1, humidity, LV_ANIM_ON); // oder LV_ANIM_OFF +} diff --git a/README.md b/README.md index e6fa026..80b2757 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,137 @@ # squareline-howtos +## Arduino Board + +![](pico-embed.png) + +## Squareline - Arduino Verknüpfung + +Namen in Squareline benutzt man in Arduino mit dem Vorsatz ui_. + +Squareline: LabelTemp +Arduino: ui_LabelTemp + +Um den Text in einem Label zu aktualisieren ruft man eine Funktion auf. + +```c++ + +// Text +lv_label_set_text(ui_LabelTemp, "Hallo Welt!"); + +// Numerische Werte +lv_label_set_text(ui_LabelTemp, String(25).c_str()); + +// Numerische Werte aus Variable +int temperature = bme.readTemperature(); +lv_label_set_text(ui_LabelTemp, String(temperature).c_str()); + + +``` + +Welche Funktion man nutzen muss findet man hier: https://docs.lvgl.io/master/widgets/index.html + +Es gibt für jedes Widget eine eigene Funktion. + +## Screenshots + +![alt text]() + +![alt text]() + +![alt text]() + +## Snippets + +### BME280 / BMP280 + +```c++ +// BME280: Suche in Arduino Libraries nach BME280 und installiere Adafruit BME280 +// BMP280: Suche in Arduino Libraries nach BMP280 und installiere Adafruit BMP280 + +// kopiere in die jeweils entsprechenden Funktionen in ui.ino + +#include +#include +#include +#include + +#define SEALEVELPRESSURE_HPA (1013.25) + +Adafruit_BME280 bme; // BME280 +//Adafruit_BMP280 bmp; // BMP280 + +void setup() { + bme.begin(0x76); + //bmp.begin(0x76); +} + +void loop() { + int temp = bme.readTemperature(); + int pressure = bme.readPressure() / 100.0F; + int humidity = bme.readHumidity(); + + //int temp = bmp.readTemperature(); + //int pressure = bmp.readPressure() / 100.0F; + + // Label (oder andere Text-Elemente) + lv_label_set_text(ui_Label1, String(pressure).c_str()); + + // Bar / Arc (alles mit Werten) + lv_bar_set_value(ui_Bar1, humidity, LV_ANIM_ON); // oder LV_ANIM_OFF +} + +``` + +### TSL2591(1) + +```c++ + +// Suche in Arduino Libraries nach TSL2591 und installiere Adafruit TSL2591 +// kopiere in die jeweils entsprechenden Funktionen in ui.ino + +#include +#include +#include "Adafruit_TSL2591.h" + +Adafruit_TSL2591 tsl = Adafruit_TSL2591(2591); + +void setup(){ + tsl.begin() + tsl.setGain(TSL2591_GAIN_MED); + tsl.setTiming(TSL2591_INTEGRATIONTIME_100MS); +} + +void loop(){ + int lux = tsl.getLuminosity(TSL2591_VISIBLE); + + // Label (oder andere Text-Elemente) + lv_label_set_text(ui_Label1, String(lux).c_str()); + + // Bar / Arc (alles mit Werten) + lv_bar_set_value(ui_Bar1, lux, LV_ANIM_ON); // oder LV_ANIM_OFF +} + + +``` + +```c++ + +// kopiere in die jeweils entsprechenden Funktionen in ui.ino +// um analogRead benutzen zu können, muss man das Board "Pico (Arduino MBED)" auswählen + +void setup(){ +} + +void loop(){ + int moisture_raw = analogRead(A0); + int moisture_mapped = map(moisture_raw, 800, 300, 0, 100); + int moisture = constrain(moisture_mapped, 0, 100); + + // Label (oder andere Text-Elemente) + lv_label_set_text(ui_Label1, String(moisture).c_str()); + + // Bar / Arc (alles mit Werten) + lv_bar_set_value(ui_Bar1, moisture, LV_ANIM_ON); // oder LV_ANIM_OFF +} + +``` \ No newline at end of file diff --git a/Soil-Moisture-Sensor.ino b/Soil-Moisture-Sensor.ino new file mode 100644 index 0000000..8710260 --- /dev/null +++ b/Soil-Moisture-Sensor.ino @@ -0,0 +1,19 @@ +// kopiere in die jeweils entsprechenden Funktionen in ui.ino + +// um analogRead benutzen zu können, muss man das Board "Pico (Arduino MBED)" auswählen + +void setup(){ +} + +void loop(){ + int moisture_raw = analogRead(A0); + int moisture_mapped = map(moisture_raw, 800, 300, 0, 100); + int moisture = constrain(moisture_mapped, 0, 100); + + // Label (oder andere Text-Elemente) + lv_label_set_text(ui_Label1, String(moisture).c_str()); + + // Bar / Arc (alles mit Werten) + lv_bar_set_value(ui_Bar1, moisture, LV_ANIM_ON); // oder LV_ANIM_OFF +} + diff --git a/TSL2591-snippets.ino b/TSL2591-snippets.ino new file mode 100644 index 0000000..d660f6c --- /dev/null +++ b/TSL2591-snippets.ino @@ -0,0 +1,25 @@ +// Suche in Arduino Libraries nach TSL2591 und installiere Adafruit TSL2591 +// kopiere in die jeweils entsprechenden Funktionen in ui.ino + +#include +#include +#include "Adafruit_TSL2591.h" + +Adafruit_TSL2591 tsl = Adafruit_TSL2591(2591); + +void setup(){ + tsl.begin() + tsl.setGain(TSL2591_GAIN_MED); + tsl.setTiming(TSL2591_INTEGRATIONTIME_100MS); +} + +void loop(){ + int lux = tsl.getLuminosity(TSL2591_VISIBLE); + + // Label (oder andere Text-Elemente) + lv_label_set_text(ui_Label1, String(lux).c_str()); + + // Bar / Arc (alles mit Werten) + lv_bar_set_value(ui_Bar1, lux, LV_ANIM_ON); // oder LV_ANIM_OFF +} + diff --git a/pico-embed.png b/pico-embed.png new file mode 100644 index 0000000000000000000000000000000000000000..47aa940a66ded8c48986afcf975f14bfc9e0179f GIT binary patch literal 9465 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 R|BxmuRV59@DtWVz{{a~bpick* literal 0 HcmV?d00001