#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define BUZZER_PIN 2
#define SD_CS_PIN 10 // SD Card CS Pin
#define OLED_I2C_ADDRESS 0x3C // Typical I2C address for SSD1306
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
// Initialisierung der seriellen Kommunikation
Serial.begin(9600);
// Überprüfung der I2C-Verbindung
Wire.begin();
Serial.println("I2C scanner. Scanning ...");
byte count = 0;
for (byte i = 8; i < 120; i++) {
Wire.beginTransmission(i);
if (Wire.endTransmission() == 0) {
Serial.print("Found address: ");
Serial.print(i, DEC);
Serial.print(" (0x");
Serial.print(i, HEX);
Serial.println(")");
count++;
}
}
Serial.print("Found ");
Serial.print(count, DEC);
Serial.println(" device(s).");
// Initialisierung des OLED-Displays
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_I2C_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Endlosschleife
}
display.display();
delay(2000);
display.clearDisplay();
Serial.println("OLED initialized successfully.");
// Initialisierung der SD-Karte
if (!SD.begin(SD_CS_PIN)) {
Serial.println("SD Card initialization failed!");
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("SD init failed!");
display.display();
return;
}
Serial.println("SD Card initialized.");
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("SD initialized!");
display.display();
// Speichern von Daten auf der SD-Karte
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Log entry");
dataFile.close();
Serial.println("Data written to SD.");
display.setCursor(0, 10);
display.println("Data written to SD");
display.display();
} else {
Serial.println("Error opening datalog.txt");
display.setCursor(0, 10);
display.println("Error opening datalog.txt");
display.display();
}
// Buzzer Testton
pinMode(BUZZER_PIN, OUTPUT);
tone(BUZZER_PIN, 1000); // 1kHz Ton
delay(1000);
noTone(BUZZER_PIN);
// Abschließende Meldung auf dem Display
display.setCursor(0, 20);
display.println("Setup complete!");
display.display();
}
void loop() {
// Hier könnte der Code für die Hauptlogik hinzugefügt werden.
}