I have a problem. I wanted to build an OS for MKR IoT Carrier Rev2 using MKR WiFi 1010. But now I've already written some code: Carrier OS - Hackster.io. I wanted to update this now, and whenever I upload the following code, nothing works anymore. Why is that? I hope for help!
#include <Arduino_MKRIoTCarrier.h>
#include <FastLED.h>
MKRIoTCarrier carrier;
float temperature = 0;
float humidity = 0;
unsigned long lastTempUpdate = 0;
int currentPage = 0;
bool inSubMenu = false;
int subMenuPage = 0;
bool ledState = false;
int brightness = 0;
void printDashboard() {
carrier.display.fillScreen(ST77XX_BLACK);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
carrier.display.getTextBounds("SCHAECHNER", 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print("SCHAECHNER");
}
void printTemperature() {
carrier.display.fillScreen(ST77XX_BLUE);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
String tempStr = "Temp: " + String(temperature) + " C";
carrier.display.getTextBounds(tempStr, 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print(tempStr);
}
void printHumidity() {
carrier.display.fillScreen(ST77XX_GREEN);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
String humidityStr = "Humidity: " + String(humidity) + " %";
carrier.display.getTextBounds(humidityStr, 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print(humidityStr);
}
void printWeather() {
carrier.display.fillScreen(ST77XX_YELLOW);
carrier.display.setTextColor(ST77XX_BLACK);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
carrier.display.getTextBounds("WEATHER", 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print("WEATHER");
}
void printTemperatureSubMenu() {
carrier.display.fillScreen(ST77XX_BLUE);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
String tempStr = "Temp: " + String(temperature) + " C";
carrier.display.getTextBounds(tempStr, 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print(tempStr);
}
void printHumiditySubMenu() {
carrier.display.fillScreen(ST77XX_GREEN);
carrier.display.setTextColor(ST77XX_WHITE);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
String humidityStr = "Humidity: " + String(humidity) + " %";
carrier.display.getTextBounds(humidityStr, 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print(humidityStr);
}
void printSettings() {
carrier.display.fillScreen(ST77XX_MAGENTA);
carrier.display.setTextColor(ST77XX_BLACK);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
carrier.display.getTextBounds("Settings", 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print("Settings");
}
void printLight() {
carrier.display.fillScreen(ST77XX_ORANGE);
carrier.display.setTextColor(ST77XX_BLACK);
carrier.display.setTextSize(2);
int16_t x, y;
uint16_t width, height;
String text = "LED: ";
// Check if the button 0 is pressed
if (digitalRead(0) == HIGH) {
// Increase the brightness by 10% until it reaches 100%
brightness += 10;
if (brightness > 100) {
// Reset the brightness to 0%
brightness = 0;
ledState = false;
} else {
ledState = true;
}
}
if (ledState) {
text += "ON";
} else {
text += "OFF";
}
carrier.display.getTextBounds(text, 0, 0, &x, &y, &width, &height);
carrier.display.setCursor((carrier.display.width() - width) / 2, (carrier.display.height() - height) / 2);
carrier.display.print(text);
if (ledState) {
// Set the LED brightness according to the global variable
carrier.leds.fill(CRGB::White);
carrier.leds.setBrightness(brightness);
carrier.leds.show();
} else {
// Set the LED color to black
carrier.leds.fill(CRGB::Black);
carrier.leds.show();
}
}
void setup() {
// Start sound
carrier.display.setRotation(0);
carrier.Buzzer.sound(523);
delay(100);
carrier.Buzzer.sound(659);
delay(100);
carrier.Buzzer.sound(784);
delay(100);
carrier.Buzzer.sound(880);
delay(100);
carrier.Buzzer.sound(1047);
delay(500);
carrier.Buzzer.noSound();
CARRIER_CASE = false;
carrier.begin();
temperature = carrier.Env.readTemperature();
humidity = carrier.Env.readHumidity();
}
void loop() {
if (carrier.Buttons.onTouchDown(TOUCH0)) {
if (inSubMenu && currentPage == 2 && subMenuPage == 0) {
ledState = !ledState;
printLight();
}
else if (currentPage == 2) {
inSubMenu = true;
subMenuPage = 0;
printLight();
}
}
carrier.Buttons.update();
unsigned long now = millis();
if(now - lastTempUpdate > 60000){
temperature = carrier.Env.readTemperature();
humidity = carrier.Env.readHumidity();
lastTempUpdate = now;
}
if (carrier.Buttons.onTouchDown(TOUCH2)) {
currentPage = 0;
inSubMenu = false;
printDashboard();
}
else if (carrier.Buttons.onTouchDown(TOUCH1) || carrier.Buttons.onTouchDown(TOUCH3)) {
if (!inSubMenu) {
currentPage = (currentPage + 1) % 4;
switch(currentPage) {
case 0:
printDashboard();
break;
case 1:
printWeather();
break;
case 2:
printSettings();
break;
}
}
else {
subMenuPage = (subMenuPage + 1) % 2;
switch(currentPage) {
case 1:
switch(subMenuPage) {
case 0:
printTemperatureSubMenu();
break;
case 1:
printHumiditySubMenu();
break;
}
break;
case 2:
switch(subMenuPage) {
case 0:
printLight();
break;
case 1:
printTemperature();
break;
}
break;
}
}
}
else if (carrier.Buttons.onTouchDown(TOUCH4)) {
if ((currentPage == 1 || currentPage ==2) && !inSubMenu) {
inSubMenu = true;
subMenuPage = (subMenuPage + 1) %2;
switch(currentPage) {
case 1:
switch(subMenuPage) {
case 0:
printTemperatureSubMenu();
break;
case 1:
printHumiditySubMenu();
break;
}
break;
case 2:
switch(subMenuPage) {
case 0:
printLight();
break;
case 1:
printTemperature();
break;
}
break;
}
}
else if (inSubMenu) {
inSubMenu = false;
switch(currentPage) {
case 1:
printWeather();
break;
case 2:
printSettings();
break;
}
}
}}