Okay, blöde Frage... Im Root des LIB Ordner, oder im Lib Ordner einen Unterordner AltSoftSerial erstellen?
Und wenn diese installiert sind, dann einfach den Code eingeben der auf der Seite steht und auf den Uno Hochladen?
Okay, blöde Frage... Im Root des LIB Ordner, oder im Lib Ordner einen Unterordner AltSoftSerial erstellen?
Und wenn diese installiert sind, dann einfach den Code eingeben der auf der Seite steht und auf den Uno Hochladen?
x:\Arduino\libraries
In der .zip Datei ist ein Ordner. Den kopierst du da so wie er ist zu den anderen Bibliotheken
Hast du noch nie etwas in C/C++ programmiert? #include Direktiven stehen immer ganz am Anfang. Schau dir halt den Code auf der Seite an. Bei AltSoftSerial ist das sogar als fertiges Beispiel dabei.
Brauchen davon tust du das:
#include <AltSoftSerial.h>
AltSoftSerial altSerial;
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor to open
Serial.println("AltSoftSerial Test Begin");
altSerial.begin(9600);
}
void loop() {
char c;
if (altSerial.available())
{
c = altSerial.read();
Serial.print(c);
}
}
Baudrate eventuell anpassen wenn nötig
Also das was ich damals mit C programmieren musste ist leider nicht der Rede wert.
Meine Baudrate ist 9600. Das passt.
MIt diesem Code kommt folgendes Ergebnis im seriellen Monitor:
http://www.bilder-upload.eu/show.php?file=22f572-1435153702.jpg
http://www.bilder-upload.eu/show.php?file=3163c5-1435153802.jpg
Wobei die Zeichen, die Vorausgehen sich immer ändern.
Ich musste Fotos mache , da ich des zwar mit strg+c kopieren, aber irgendwie nicht einfügen konnte.
Mhh, etwas seltsam. Am Anfang dürfte eigentlich nichts kommen. Ist aber nicht so schlimm. Und danach kommt nichts mehr? Dann passt irgendwas nicht
Wie gesagt, eventuell mal RX/TX Kabel zum Pegelwandler vertauschen. Und auf dem UNO mit AltSoftSerial ist RX auf Pin 8 und TX auf Pin 9
Danke, das probiere ich direkt mal aus, mit Pin 8 und 9, also tx auf Pin 9 mit der Wellenlinie davor und Rx auf 8 und ggf mal untereinander vertauschen?
Deinen Code habe ich eben einfach mal direkt hochgeladen, also den ursprünglichen, ohne die Modifikation,, die danach kam.
Herausgekommen ist folgendes:
http://www.bilder-upload.eu/show.php?file=7aa496-1435154554.jpg
Versteh erst mal den Code. Der liest nämlich nichts von der seriellen Schnittstelle ein!! Ich habe da die Strings einfach fest reingeschrieben. Da ging es darum das Parsen zu zeigen.
Zum Einlesen brauchst du die read_serial() Funktion hier:
http://forum.arduino.cc/index.php?topic=329469.msg2273780#msg2273780
Und zwar so umschreiben dass es mit softSerial geht. Also statt:
while (Serial.available())
{
char c = Serial.read();
So:
while (softSerial.available())
{
char c = softSerial.read();
Außerdem musst du den Puffer größer machen. Mindestens auf maximale Zeilenlänge + 1
Und dann in loop() erst mal so:
void loop()
{
if (read_serial())
{
Serial.println(serial_buffer));
}
}
Dazu muss aber erst mal die Übertragung so gehen! Deshalb habe ich dir dazu geraten das Schrittweise zu machen. Gerade weil du keinen Plan hast was du machen musst.
Ja, das Schrittweise hat auch absolut Sinn, denn im Moment tu ich mich unheimlich schwer damit. Ich hoffe, das kommt noch.
Wenn ich jetzt an die Pins 8 und 9 gehe erscheint bei der einen Konstellation AltSoftSerial Test Begin ohne die komischen Zeichen davor, wenn ich RX und TX vertausche, dann erscheint erst das gleiche und danach rasten scheinbar Wahllose Buchstaben ziemlich schnell über den Serial Monitor. Etwas wirklich lesbares war leider nicht dabei.
Am Uno leuchtet die TX Lampe, die RX bleibt aus, wenn ich die Pins vertausche bleiben beide LED´s aus.
Ich glaube, irgendwas mache ich da falsch... Wohl bemerkt mit dem Test Code für AltSoftSerial. Deinen habe ich jetzt wieder komplett heraus genommen.
Wenn irgendwelche unlesbaren Zeichen ankommen liegt das i.d.R. an einer falsch eingestellten Baudrate. Also es kommt was an, aber wird mit der falschen Frequenz abgetastet und kann daher nicht dekodiert werden.
Aber das hattest du gesagt stimmt. Was war den die nötige Einstellung in HTerm? Und auch welches Datenformat? Ich hoffe mal 8N1 (8 Datenbits, 1 Stop-Bit, keine Parität). Ein Problem mit AltSoftSerial ist nämlich, dass es nur ein Datenformat beherrscht. 8N1 ist Standard, aber es gibt auch Geräte die was anders haben.
Also die Baudrate in Hterm war 9600. Diese fand sich auch im Code wieder, sowie im Fenster des Seriellen Monitors.
Ich habe gerade noch mal hterm laufen, habe nur den Com ausgewählt, 9600 Baud eingestellt und auf Ascii geklickt. Schon kommen lesbare Daten. Zwar mit den komischen Zeichen dazwischen, wie du sie vielleicht von den Bildern noch kennst Aber es ist Reinschrift.
Sonst hab ich keine Werte gesetzt oder Haken gesetzt
Was vielleicht interessant ist: Unten in Hterm steht: Connect to COM4 (b:9600 d:8 s:1 p:none)
Hat das etwas zu sagen? Anbei ein "screenshot" da mein Netbook zum experimentieren nicht am Netzt hängt und ich schreibe vom Mac aus, da soll es, wie ich gelesen hae etwas umständlicher sein, Adruino zu betreiben...
http://www.bilder-upload.eu/show.php?file=58f988-1435157952.jpg
Gut. Also nichts exotisches. Ganz normal 9600/8N1
Dann sollte es aber eigentlich gehen.... Vielleicht kann jemand anderes mal was dazu sagen.
Zwar mit den komischen Zeichen dazwischen
Das sind keine komischen Zeichen, sondern CR + LF. Also der Zeilenumbruch. Wenn du auf dem Arduino println() machst oder auch in einer Text-Datei eine neue Zeile anfängst ist das genauso.
Hmm um so mehr irritiert mich das nun. Denn pin 8 und 9, Masse und 3,3v... Da hab ich denk ich mal nichts falsch gemacht.
Und viel mehr kann ich ja in diesem Test nicht einstellen. Komisch
3,3V? Das hatte ich ganz übersehen! Schließe da mal 5V an. Dein UNO läuft mit 5V und der MAX3232 geht auch mit 5V
Hmm hab ich gerade getan...
Jetzt rasen die Schriftzeichen nicht mehr so schnell durch den Serial Monitor, sondern aktualisieren sich blockweise im ca. 3 Sekunden Takt. Aber leider ist diesmal auch wieder keine Reinschrift dabei, sondern nur wahllose Buchstaben, die keinen Sinn ergeben
An meinem Stecker sind auch nur 3 Pins belegt, Nämlich 1,3 und 4. Kann es sein, dass der Max3232 das Signal an einem anderen Pin erwartet?
Hmm das passt. Also betrachtet man die Max3232 Platine, dann sind es an diesem Stecker die Ins 2,3 und 5, betrachtet man das Kabel, die von meinem Computer kommen, dann sind es die 1,3 und 4.
Wenn was ankommt wird die wahrscheinlich Verkabelung passen. Irgendwelche Signale werden wohl detektiert. Wobei das auf deinem ursprünglichen Bild mit den Pfeilen nicht so passt:
Du kannst mal probieren die Baudrate der Hardware Schnittstelle (d.h. Serial) höher zu machen. So dass schneller gesendet als empfangen wird. Das gleich schnell zu machen ist vielleicht keine so gute Idee. Aber mit richtigen RS-232 Geräten und dem Arduino habe ich selbst keine große Erfahrung. Wobei das theoretisch ziemlich simpel ist. Und MAX232 habe ich schon öfters auf anderen µC verwendet.
Ja, das ist jetzt anders, dabei ging es mir primär um die TX/RX Anschlüsse... Aber das ist ja jetzt eh anders mit Pin 8 und 9.
Du meinst im Code schon mal auf 19200 baud gehen zum Beispiel? Am Computer, der die Daten liefert kann ich leider nichts einstellen.
Sehe ich das richtig, dass es jetzt im Seriellen Monitor wie in Hterm aussehen müsste?
Phreak2010:
Du meinst im Code schon mal auf 19200 baud gehen zum Beispiel? Am Computer, der die Daten liefert kann ich leider nichts einstellen.
Ich sagte ja die Hardwareschnittstelle. Also USB zum Computer. Das zum Gerät ist nur eine Software-Emulation. Die ist schlechter als Hardware, aber mit AltSoftSerial sollte das gehen.
Sehe ich das richtig, dass es jetzt im Seriellen Monitor wie in Hterm aussehen müsste?
Ja, wobei die CR+LF Zeichen da nicht anzeigt werden und der Zeilenumbruch automatisch gemacht wird.
Du kannst ich aber auch mit HTerm mit dem Arduino verbinden wenn du willst.
Das habe ich gerade probiert. Leider auch ohne Erfolg.Gibgt es noch alternativen zu AltSoftSerial? Vielleicht kommt das AltSoftSerial einfach nicht mit den Daten zurecht?