Go Down

Topic: Arduino Uno mit Ethernet shield und i2c Matrix (Read 259 times) previous topic - next topic

heini36

Oct 25, 2013, 06:56 pm Last Edit: Oct 25, 2013, 08:09 pm by uwefed Reason: 1
Guten Abend
ich habe ein Arduino UNO mit einem Ethernet Shield. Zudem habe ich eine 8x8 Matrix von adafruit mit i2c bus.
Wenn ich die Matrix mit dem Arduino betreibe funktioniert alles einwandfrei. Sobald ich den Arduino mit dem Ethernet Shield erweitere und den Webserver anlege startet der Webserver nicht. Wenn ich aber das Board mit Shield betreibe ohne BUS Konfiguration funktioniert der Webserver.


Hier der zusammen gebastelte Code:
Code: [Select]
#include <SPI.h> // Für Arduino Version größer als 0018
#include <Ethernet.h>
#include <TextFinder.h>
#include <SD.h>
#include <Wire.h> // Für Kommunikation mit i2C Bus
#include "Adafruit_LEDBackpack.h" // Für LED Matrix
#include "Adafruit_GFX.h"



byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xAE, 0xAC }; // MAC-Adresse des Ethernet-Shield
byte ip[] = { 192, 168, 1, 50 }; // IP zum aufrufen des Webservers
byte sdPin = 4; // Pin der SD-Karte

EthernetServer server(80); // Server port

File webFile;

Adafruit_8x8matrix matrix = Adafruit_8x8matrix();

void setup()
{
Ethernet.begin(mac, ip); // Client starten
server.begin(); // Server starten
matrix.begin(0x70); // Adressen vergabe i2c
Serial.begin(9600);
Serial.println("ARDUINO - STEUERUNG");

Serial.println("Initialisiere SD-Karte...");
if (!SD.begin(sdPin))
{
Serial.println(" - Initialisierung der SD-Karte fehlgeschlagen!");
return;
}
Serial.println(" - SD-Karte erfolgreich initialisiert.");

if (!SD.exists("index.htm"))
{
Serial.println(" - Datei (index.htm) wurde nicht gefunden!");
return;
}
Serial.println(" - Datei (index.htm) wurde gefunden.");

Serial.println();
Serial.println("Verbraucher schalten");

Serial.println("8x8 LED Matrix Test");
}




void loop()
{
EthernetClient client = server.available(); // Auf Anfrage warten

if(client)
{
/*****************************************
Matrix über das Webformular steuern *
*****************************************/
TextFinder finder(client);

if(finder.find("GET"))
{
while(finder.findUntil("text", "\n\r"))
{
int typ = client.read();
//int pin = finder.getValue();
int val = finder.getValue();
if(typ == '1')
{Serial.print("text1");
//Matrix voreinstellungen für Lauftext
matrix.setTextSize(1); //text grösse
matrix.setTextWrap(false); // kein Umbruch
matrix.setTextColor(LED_ON); //da nur einfarbig on
matrix.setRotation(0); //0 grad

//1. Wort
for (int8_t x=0; x>=-36; x--) {
matrix.clear(); //alle led auf 0 setzen
matrix.setCursor(x,0); // startposition
matrix.print("Stopp"); // text
matrix.writeDisplay(); // ausgabe
delay(100); // laufzeit vom text
}

//2. Wort
matrix.setRotation(0);
for (int8_t x=0; x>=-36; x--) {
matrix.clear();
matrix.setCursor(x,0);
matrix.print("Polizei");
matrix.writeDisplay();
delay(100);
}
}
if (typ == '2')
{Serial.print("text2");

}






}



{
}
}
}

/************************
Webformular anzeigen *
************************/
boolean current_line_is_blank = true; // eine HTTP-Anfrage endet mit einer Leerzeile und einer neuen Zeile

while (client.connected())
{
if (client.available()) // Wenn Daten vom Server empfangen werden
{
char c = client.read(); // empfangene Zeichen einlesen
if (c == '\n' && current_line_is_blank) // wenn neue Zeile und Leerzeile empfangen
{ // Standard HTTP Header senden
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();

// Website von SD-Karte laden
webFile = SD.open("index.htm"); // Website laden
if (webFile)
{
while(webFile.available())
{
client.write(webFile.read()); // Website an Client schicken
}
webFile.close();
}
break;
}
if (c == '\n')
{
current_line_is_blank = true;
}
else if (c != '\r')
{
current_line_is_blank = false;
}
}
}
delay(1);
client.stop();
}


Wo liegt hier der Fehler?
Vielen Dank für die Hilfe

Du musst bedenken das das Ethernet Shield bestimmte Ports zur Kommunikation mit dem Arduino braucht.

Diese sind meist weiss unterstrichen und sie stehen dir für dein Projekt nicht weiter zur Verfügung.

uwefed

Es könnte aber auch nur ein Speicherproblem sein. Passiert das gleiche auch bei einem Arduino Mega?
Grüße Uwe

Go Up