Hallo, ich habe mir das MKR Iot Carrier Rev2 kit als Neuling in der programmierung des Arduinos gekauft.
Ich habe die ersten Tutorials, getting Starteds und online Kurse soweit fertig und wollte anfangen einen vorhandenen Code nach meinen Wünschen zu bearbeiten.
Als Basis habe ich den Code der Personal Weather Station verwendet.
Soweit funktioniert auch alles nur das die Werte wie z.b Temperatur sich erst aktualisieren wenn ich den angewählten Button drücke.
Mein erster Gedankengang war das er ja in der "if" funktion von oben nach unten arbeitet und dann am ende stehen bleibt und wartet bis was passiert, d.h im Endeffekt das er 1x die temp mit Print schreibt.
Ich kann ja in der "if" funktion keinen weitern loop machen, wie kann ich es dann anders anstellen das er die werte aktualisiert.
Der Code ist noch recht durcheinander, das muss ich noch ordentlich machen, dafür muss ich erstmal das Gerüst verstehen.
LG Tim
#include "arduino_secrets.h"
#include "thingProperties.h"
#include <Arduino_MKRIoTCarrier.h>
MKRIoTCarrier carrier;
unsigned int threshold = 10;
unsigned int threshold_btn_0 = 10;
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(2000);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
//Get Cloud Info/errors , 0 (only errors) up to 4
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
//Wait to get cloud connection to init the carrier
while (ArduinoCloud.connected() != 1) {
ArduinoCloud.update();
delay(500);
}
delay(500);
CARRIER_CASE = true;
carrier.begin();
carrier.display.setRotation(0);
}
void loop() {
ArduinoCloud.update();
carrier.Buttons.update();
while(!carrier.Light.colorAvailable()) {
delay(5);
}
int none;
carrier.Light.readColor(none, none, none, light);
temperature = carrier.Env.readTemperature();
humidity = carrier.Env.readHumidity();
pressure = carrier.Pressure.readPressure();
float co2 = carrier.AirQuality.readCO2();
float volatileOrgan = carrier.AirQuality.readVOC();
float gasResistor = carrier.AirQuality.readGasResistor();
carrier.leds.setBrightness(80);
if (carrier.Buttons.onTouchDown(TOUCH2)) {
carrier.leds.setPixelColor(2, 0, 125, 0);
carrier.leds.setPixelColor(1, 0, 0, 0);
carrier.leds.setPixelColor(0, 0, 0, 0);
carrier.leds.show();
carrier.display.fillScreen(ST77XX_BLACK);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(3);
carrier.display.setCursor(30, 110);
carrier.display.print("Temp:");
carrier.display.print(temperature);
carrier.display.print("C");
}
if (carrier.Buttons.onTouchDown(TOUCH1)) {
carrier.leds.setPixelColor(1, 125, 0, 0);
carrier.leds.setPixelColor(2, 0, 0, 0);
carrier.leds.setPixelColor(0, 0, 0, 0);
carrier.leds.show();
carrier.display.fillScreen(ST77XX_BLACK);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(3);
carrier.display.setCursor(30, 110);
carrier.display.print("Licht:");
carrier.display.print(light);
}
if (carrier.Buttons.onTouchDown(TOUCH0)) {
carrier.leds.setPixelColor(0, 0, 0, 125);
carrier.leds.setPixelColor(1, 0, 0, 0);
carrier.leds.setPixelColor(2, 0, 0, 0);
carrier.leds.show();
carrier.display.fillScreen(ST77XX_BLACK);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(3);
carrier.display.setCursor(20, 80);
carrier.display.print("Temp:");
carrier.display.print(temperature);
carrier.display.setCursor(20, 110);
carrier.display.print("Feucht:");
carrier.display.print(humidity);
carrier.display.setCursor(20, 140);
carrier.display.print("Druck:");
carrier.display.print(pressure);
}
if (carrier.Buttons.onTouchDown(TOUCH3)) {
carrier.leds.setPixelColor(0, 0, 0, 125);
carrier.leds.setPixelColor(1, 0, 0, 0);
carrier.leds.setPixelColor(2, 0, 0, 0);
carrier.leds.show();
carrier.display.fillScreen(ST77XX_BLACK);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(3);
carrier.display.setCursor(20, 80);
carrier.display.print("CO2:");
carrier.display.print(co2);
carrier.display.setCursor(20, 110);
carrier.display.print("Volatile:");
carrier.display.print(volatileOrgan);
carrier.display.setCursor(20, 140);
carrier.display.print("Gas:");
carrier.display.print(gasResistor);
}
if (carrier.Buttons.onTouchDown(TOUCH4)){
carrier.leds.clear();
carrier.leds.show();
carrier.display.fillScreen(0x0000);
}
if (humidity >= 60 && temperature >= 15) {
weather_report = "It is very humid outside";
}
else if (temperature >= 15 && light >= 700) {
weather_report = "Warm and sunny outside";
}
else if (temperature <= 16 && light >= 700) {
weather_report = "A little cold, but sunny outside";
}
else{
weather_report = "Weather is normal";
}
}
/*
Since WeatherReport is READ_WRITE variable, onWeatherReportChange() is
executed every time a new value is received from IoT Cloud.
*/
void onWeatherReportChange() {
// Add your code here to act upon WeatherReport change
}