#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(1, 0, 0);
}
void loop() {
// Läs knappstatus
bool button1Pressed = (digitalRead(BUTTON1) == LOW);
bool button2Pressed = (digitalRead(BUTTON2) == LOW);
// Bestäm färg
bool redOn = !button1Pressed && !button2Pressed; // röd om ingen knapp är intryckt
bool greenOn = button1Pressed; // grön om knapp 1 tryckt
bool blueOn = button2Pressed; // blå om knapp 2 tryckt
// Tänd LED
setColor(redOn, greenOn, blueOn);
// Skriv till Skärm
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,"Hej Raspberry!");
u8g2.drawStr(0,25,"OLED funkar!");
u8g2.sendBuffer(); // Skicka till skärmen
}
// 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);}
}