Hallo liebe Community,
ich hab an meine Arduino Nano V3 ein SSD1306 OLED Display und ein Ethernet shield mit dem Chipsatz W5500 angeschlossen. Folgende Libarys sind installiert: SPI, Ethernet2, Wire, Adafruit_GFX und Adafruit_SSD1306. Wenn ich die Beispielprogramme von den Libarys lade und teste, ob die Geräte ansprechbar sind, funktioniert alles. Aus den Beispielen hab ich mir ein eigenes Programm geschrieben, welches am ende nur die ausgelesene IP-Adresse auf dem Display anzeigen soll. In meinem Programm hängt er sich allerdings an einer Stelle im void setup auf und geht dies immer wieder durch.
Hier mein Code:
#include <SPI.h>
#include <Ethernet2.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 SCREEN_ADDRESS 0x3D ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
EthernetClient client;
void setup() {
// put your setup code here, to run once:
//Display
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
// Clear the buffer
Serial.println("Display Buffer wird geleert");
display.clearDisplay();
display.display();
delay(100);
Serial.println("Display Buffer wurde geleert");
Serial.println("Schreibe ersten Text auf Display");
display.setTextSize(1,2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Hello World!");
display.display();
delay(2000);
//EhtnernetShield
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for (;;);
}
// print your local IP address:
Serial.print("My IP address: ");
Serial.println(Ethernet.localIP());
Serial.println("Schreibe IP Adresse aufs Display");
// display.clearDisplay();
// display.display();
delay(100);
display.setTextSize(1,2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,20);
display.println(Ethernet.localIP());
display.display();
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Test");
delay(1000);
}
Hier die serielle Ausgabe:
15:08:32.962 -> Display Buffer wird geleert
15:08:33.056 -> Display Buffer wurde geleert
15:08:33.056 -> Schreibe ersten Text auf Display
15:08:33.524 -> Display Buffer wird geleert
15:08:33.618 -> Display Buffer wurde geleert
15:08:33.618 -> Schreibe ersten Text auf Display
15:08:34.044 -> Display Buffer wird geleert
15:08:34.168 -> Display Buffer wurde geleert
15:08:34.168 -> Schreibe ersten Text auf Display
15:08:34.628 -> Display Buffer wird geleert
15:08:34.721 -> Display Buffer wurde geleert
15:08:34.721 -> Schreibe ersten Text auf Display
15:08:35.189 -> Display Buffer wird geleert
15:08:35.283 -> Display Buffer wurde geleert
15:08:35.283 -> Schreibe ersten Text auf Display
15:08:35.748 -> Display Buffer wird geleert
15:08:35.841 -> Display Buffer wurde geleert
15:08:35.841 -> Schreibe ersten Text auf Display
15:08:36.290 -> Display Buffer wird geleert
15:08:36.383 -> Display Buffer wurde geleert
15:08:36.383 -> Schreibe ersten Text auf Display
15:08:36.851 -> Display Buffer wird geleert
15:08:36.944 -> Display Buffer wurde geleert
15:08:36.944 -> Schreibe ersten Text auf Display
15:08:37.409 -> Display Buffer wird geleert
15:08:37.503 -> Display Buffer wurde geleert
15:08:37.503 -> Schreibe ersten Text auf Display
15:08:37.958 -> Display Buffer wird geleert
15:08:38.051 -> Display Buffer wurde geleert
15:08:38.051 -> Schreibe ersten Text auf Display
15:08:38.516 -> Display Buffer wird geleert
15:08:38.610 -> Display Buffer wurde geleert
15:08:38.610 -> Schreibe ersten Text auf Display
Vielen Dank schonmal für die Hilfe !