Go Down

Topic: Ethernet Library blockiert Pins (außer 13, 12, 11, 10) ?!?! (Read 6477 times) previous topic - next topic

mrlowalowa


in den Kommentaren von Deinem Link, der übrigens falsch verlinkt ist, wo du den Code her hast, steht im letzten Eintrag auch etwas von einem Problem mit Pins schalten. Irgendwas stimmt damit nicht. Probiere  mal die Bsp. der Ethernet Library durch. Quasi die originale. Wenn die funktionieren, kannste immer noch vergleichen was anders ist.


ehm.. ja... :D könnte daran liegen, dass der Kommentar von mir ist.. :D aber trotzdem danke ^^ Link funktioniert jetzt richtig ;)

@uwefed:

ja ich glaub ich hab das mit dem BUFFSIZ falsch verstanden.. Dieser ist dafür da die "Anfrage" vom Client zwischen zuspeichern, bzw die länge hierfür zu begrenzen. 255 sind keine kb sondern wahrscheinlich eine Angabe von 0 bis 255 auf die 2 KB bezogen??

Aaaaah, wenn ich quasi 2 clients oder mehr gleichzeitig habe, entsteht so ein Fehler.. Ja das ergibt wirklich Sinn.. :) Problem Gelöst! :))


LETZE frage (dann ist auch erstmal Schluss) ^^ :

Ich will jetzt den Vorhanden Code um die PWM Ausgabe "ärmer" machen aber um eine 433 MHz Übermittlung der r, g, b Pins an einen anderen Arduino "reicher" machen. Dies würde ich am besten über die VirtualWire.h lib  realisieren wollen.

die Frage ist nun:
- Wo soll die Sendung der Variablen im Code stattfinden? Am besten gleich in der Subroutine oder nach der vollendeten Subroutine?
- Wie übertrage ich die Daten? (Plan mittels itoa() werte für die Übermittlung aufbereiten und dann atoi() um sie am anderen Arduino wieder lesbar zu machen)

Nur wie mache ich klar, welche werte für welchen integer sind? alles zusammen wie es auf der Website ankommt? also im GET format oder kann man diese in einem String schön darstellen? eventuell ein Array? aber lässt sich ein Array in einen String und wieder zurück umwandeln??

Bin offen für allmögliche Ideen, Vorschläge und vorallem Ratschläge :)

Grüße! Und übrigens einen Happy Arduino Day euch allen :))

uwefed


255 sind keine kb sondern wahrscheinlich eine Angabe von 0 bis 255 auf die 2 KB bezogen??
...
Grüße! Und übrigens einen Happy Arduino Day euch allen


255 ist die Größe des Arrays. Die verbrauchten Bytes im RAM hängt vom verwendeten Variablentyp ab. BYTE, CHAR 1 BYTE, INT 2 BYTE, LONG und FLOAT 4 Byte.

Übrigens: 0 bis 255 sind 256 Zahlen!!1

Der Arduino Tag war am 29. März.

Grüße Uwe

mrlowalowa


255 ist die Größe des Arrays. Die verbrauchten Bytes im RAM hängt vom verwendeten Variablentyp ab. BYTE, CHAR 1 BYTE, INT 2 BYTE, LONG und FLOAT 4 Byte.

...

Der Arduino Tag war am 29. März.


Aha! Vielen dank für die Übersicht :) kann man sich nun deutlich besser vorstellen, wie3 es zu einem Überlaufen des Rand kommen kann.

Das mit dem Arduino Day, war keine Absicht, hat das Arduino Team erst gestern eben noch auf Twitter gepostet!
twitter-Tweet

Gruß

Serenifly


also im GET format oder kann man diese in einem String schön darstellen? eventuell ein Array? aber lässt sich ein Array in einen String und wieder zurück umwandeln??

In C sind Strings nichts anderes als Null-terminierte char Arrays:
http://openbook.galileocomputing.de/c_von_a_bis_z/011_c_arrays_011.htm#mja452663858fd23e86c51cfa3b9139f64
(das ist C Code für den PC. Das printf() geht auf dem Arduino nicht so wie es da steht)

http://www.c-howto.de/tutorial-strings-zeichenketten.html
http://www.c-howto.de/tutorial-strings-zeichenketten-nullterminiert.html

Bei Arduino Code findest du gerade bei Anfänger Sachen oft die String Klasse, aber auf diese solltest du verzichten. Die verursacht weit mehr Probleme als sie löst.

Doc_Arduino

Hallo,

Quote

Bei Arduino Code findest du gerade bei Anfänger Sachen oft die String Klasse, aber auf diese solltest du verzichten. Die verursacht weit mehr Probleme als sie löst.


da muß ich auch nachfragen. Wenn man String-Klassen nicht verwenden soll - was dann? Irgendwie stehe ich da auch gerade auf dem Schlauch.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Serenifly

Klassische C- Strings wie in den Links beschrieben.

Das einzige Problem dabei ist halt dass man einen vorher festgelegten Puffer braucht. Die String Klasse umgeht das mit dynamischem Speicher. Was gerade eines der Probleme damit ist. Wenn man zwei Strings mit + aneinander-hängt wird ein neues String Objekt erzeugt und der Speicher der zwei alten Objekte freigegeben (man kann das u.U. durch reserve() begrenzen, aber das grundlegende Prinzip bleibt). Auf einem PC ist das höchstens ein Problem wenn man das sehr, sehr oft macht (Vergleich in C# zwischen String und StringBuilder), aber auf einem µC mit sehr begrenztem Speicher ist das meistens keine gute Idee.

Mit C-Strings kannst du sogar mehr machen, da die String Klasse nur eine sehr beschränkte Anzahl an Funktionen implementiert, gerade was die Formatierung und Konvertierung betrifft. Für manche Sachen muss man das Objekt also in einen C-String wandeln. Dann kann man auch gleich darauf verzichten.
Das wäre weniger ein Problem wenn es die die Standard C++ Funktion c_str() gäbe:
http://www.cplusplus.com/reference/string/string/c_str/
Die liefert einen Zeiger auf das interne Array des Objekts. Darauf kann man dann lesend zugreifen ohne neuen Speicher zu benötigen

Doc_Arduino

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Go Up