INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Uno mit Ethernet shield und i2c Matrix
25.10.2013, 17:29
Beitrag #1
Arduino Uno mit Ethernet shield und i2c Matrix
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:
#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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.10.2013, 19:56
Beitrag #2
RE: Arduino Uno mit Ethernet shield und i2c Matrix
Hallo heini36,
stell mal bitte die Zeile
Code:
EthernetServer server(80); // Server port
hinter Serial.begin und mache ein Serial.println um zu sehen ob du wirklich nicht über den Serverstart hinaus kommst.

Bist du dir mit der I2C-Adresse sicher? Bau mal die volle Schaltung auf und lasse einen I2C Scanner rüberlaufen. Siehe http://playground.arduino.cc/Main/I2cScanner

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.10.2013, 17:43 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2014 07:47 von heini36.)
Beitrag #3
RE: Arduino Uno mit Ethernet shield und i2c Matrix
Guten Abend

habe den Scanner laufen lassen und die I2c Adresse stimmt (0x70).
Meines Erachtens wird der Server gestartet. Weil wenn ich die Befehle direkt in den Browser mit der IP Adresse eingebe, funktionieren die Befehle.
Stimmt vielleicht die Reihenfolge der Konfigurierungen nicht?

Vielen Dank und Freundliche Grüsse
heini36
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.10.2013, 18:38
Beitrag #4
RE: Arduino Uno mit Ethernet shield und i2c Matrix
Yup, freundlichen guten Abend!

Wenn ich mir die Beispiele im Netz angucke muss ich sagen, dass mir die Textfinder-Geschichte nicht so passend erscheint.
Generell ist Server + Client auf einem Arduino kein Problem.
Allerdings gab es auch mal ein Problem mit dem internen DNS-Teil der Ethernet Library.
Guck dir mal dieses Beispiel an: http://forum.arduino.cc/index.php?topic=90210.0
Die benutzen die String-Klasse für den Client und zeigen auch gleich noch die Korrektur in der Ethernet Library (falls es nicht die aktuelle Version ist).

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.10.2013, 18:44
Beitrag #5
RE: Arduino Uno mit Ethernet shield und i2c Matrix
Vielen dank für die Rasche Antwort.
Kann es auch sein das mein Arduino UNO leistungsmässig am Anschlag ist mit WEBserver, Matrix usw.?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.10.2013, 20:44
Beitrag #6
RE: Arduino Uno mit Ethernet shield und i2c Matrix
Zitat:Kann es auch sein das mein Arduino UNO leistungsmässig am Anschlag ist mit WEBserver, Matrix usw.?
Naja, ich sage mal entschieden "Jain" Big Grin
An sich sollte er es schon recht locker nehmen, aber es kommt, wie so oft, auf den Code an.
Im Loop würde ich zB. kein delay() verwenden. Lieber über millis() abfangen.
Generell würde ich über die Time - Library "Scheduler" bauen, die eigentlichen Funktionen in Unterfunktionen verlagern und von den Schedulern zeitgesteuert aufrufen lassen.

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.03.2014, 19:22
Beitrag #7
RE: Arduino Uno mit Ethernet shield und i2c Matrix
Hallo

Sorry für die Verspätete Antwort.
Schlussendlich war es wirklich an der Leistung des Arduino UNO.

Vielen Dank für dein Tipp.

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  CP2102 und USB Host Shield ?? DL1AKP 0 40 01.12.2016 08:55
Letzter Beitrag: DL1AKP
  matrix display elegoo uno R3 starter set lecker16 7 133 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  Arduino UNO und Ethernet Shield 2 POE und Fritzbox 3272 tr3 2 152 19.11.2016 10:46
Letzter Beitrag: tr3
  Kommunikation über das WiFi-Shield Flap 3 230 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Ethernet Modul Enc28j60 Pin13 LED Schalten BennIY 16 499 27.09.2016 20:30
Letzter Beitrag: BennIY
  Arduino Lan Shield - Visual Basic ZackiE 6 214 20.09.2016 19:26
Letzter Beitrag: ZackiE
  adafruit V2.3 Shield Hangloose 6 290 08.09.2016 17:13
Letzter Beitrag: rpt007
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.533 01.09.2016 14:17
Letzter Beitrag: Clubsport
  Arduino mega 2560 mit TFT LCD Touch Shield V1 Clemens55555 17 932 02.08.2016 20:51
Letzter Beitrag: Clemens55555
  SainSmart 3.2 TFT + 5" TFT/SD Shield + Due SAM3X8E ARM (Arduino Due) Techniker_UE 13 3.219 24.07.2016 14:34
Letzter Beitrag: Eichner

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste