#include <Wire.h>
#include <U8g2lib.h>
// Skapa display-objekt
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);
// RGB LED pins
#define RED 16
#define GREEN 17
#define BLUE 18
// Button pins
#define BUTTON1 15
#define BUTTON2 14
void setup() {
// Aktivera Pins flr RGB LED
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
// Aktivera pins för knapapr
pinMode(BUTTON1, INPUT_PULLUP);
pinMode(BUTTON2, INPUT_PULLUP);
// Setup screen
Wire.setSDA(4); // GP4
Wire.setSCL(5); // GP5
Wire.begin();
u8g2.begin(); // uppdatera skärmen
// Startfärg på LED
setColor(255, 0, 0);
}
void loop() {
// Läs knappstatus
bool button1 = (digitalRead(BUTTON1) == LOW);
bool button2 = (digitalRead(BUTTON2) == LOW);
// Hantera knappar
buttonPressed(button1, button2);
// Skriv till Skärm
writeToScreen("hej raspberry!", "Text fungerar");
}
// Funktion för att tända färger
void setColor(int R, int G, int B) {
analogWrite(RED, R);
analogWrite(GREEN, G);
analogWrite(BLUE, B);
}
// FUnktion för att skriva til skärmen
void writeToScreen(String row1, String row2) {
u8g2.setI2CAddress(0x3C*2); // viktigt: *2 för U8g2
u8g2.clearBuffer(); // Rensa buffer
u8g2.setFont(u8g2_font_ncenB08_tr); // Välj font
u8g2.drawStr(0,10,row1);
u8g2.drawStr(0,25,row2);
u8g2.sendBuffer(); // Skicka till skärmen
}
// Funktion för att hantera vad som händer när en knapp trycks in
void buttonPressed(bool button1, bool button2) {
if(button1 && !button2) {
setColor(0, 255, 0);
} else if (!button1 && button2) {
setColor(0, 0, 255);
} else if (button1 && button2) {
setColor(255, 100, 0);
} else {
setColor(255, 0, 0);
}
}
// GAMMAL Funktion för att tända rätt färg
/*
void setColor(bool R, bool G, bool B) {
if (R) {digitalWrite(RED, HIGH);}
else {digitalWrite(RED, LOW);}
if (G) {digitalWrite(GREEN, HIGH);}
else {digitalWrite(GREEN, LOW);}
if (B) {digitalWrite(BLUE, HIGH);}
else {digitalWrite(BLUE, LOW);}
}*/