Du könntest jetzt den Nano an den Seriellen Eingang des PCs über den Selbstbauadapter anschließen. Du könntest dann sowohl die Hardware-Schnittstelle wie auch die Softwareschnittstelle testen können. Du könntest auch mal am Selbstbauadapter mit einem Oszilloskop kontrollieren, ob die Signale durchgehen.
Habe von kontinuierlich umkonfiguriert auf Tastenmodus B. So kommt immer ein Wert wenn Print gedrückt oder Q gesendet wird. Funktioniert über HTerm wunderbar.
Habe das ganze nun wieder an der Waage und den AltSoftSerial Beispielcode leicht editiert.
Wenn ich keinen Denkfehler habe, sollte "Q" sowohl an den realen Serialport als auch an den virtuellen(Waage) gesendet werden.
// AltSoftSerial Receive Test
//
// Transmit data with Serial1 and try to receive
// it with AltSoftSerial. You must connect a wire
// from Serial1 TX to AltSoftSerial RX.
#include <AltSoftSerial.h>
AltSoftSerial altser;
const int mybaud = 4800;
// Board Serial1 TX AltSoftSerial RX
// ----- ---------- ----------------
// Teensy 3.x 1 20
// Teensy 2.0 8 (D3) 10 (C7)
// Teensy++ 2.0 3 (D3) 4 (D4)
// Arduino Leonardo 1 13
// Arduino Mega 18 48
// Serial1 on AVR @ 16 MHz minimum baud is 245
// Serial1 on Teensy 3.2 @ 96 MHz minimum baud is 733
byte sentbyte=81;
unsigned long prevmillis;
byte testbyte=0xF0;
void setup() {
delay(200);
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
altser.begin(mybaud); // to AltSoftSerial RX
Serial.println("AltSoftSerial Receive Test");
prevmillis = millis();
}
void loop() {
// transmit a test byte on Serial 1
if (millis() - prevmillis > 2000) {
Serial.write(sentbyte);
altser.write(sentbyte);
prevmillis = millis();
}
// attempt to receive it by AltSoftSerial
if (altser.available() > 0) {
byte b = altser.read();
Serial.println(b);
if (b != sentbyte) Serial.println("***** ERROR *****");
}
}
Die Ausgabe des Serialmonitor:
AltSoftSerial Receive Test
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
Von der Waage kommt nichts.
Edit:
Nano über Bastelplatine an COM1 des PCs angeschlossen. Wenn ich nun einen Sketch hochladen möchte funktioniert dies nicht über COM1.
Wir haben nun einen fertigen RS232/TTL Adapter bestellt, hoffe der hilft:
Das Hochladen von Programmen solltest du weiter über die USB-Schnittstelle des Nano machen. Du müsstest sonst genau zum Hochladen eines Sketch im passenden Moment einen Reset auslösen.
Ich dachte eher, du schaust, ob er brav "Hallo Welt" oder was du auch immer im Programm stehen hast, ausgibt. Schließe die Bastelplatine auch erst dann an den Nano an, wenn du ihn programmiert hast.
Theseus:
Das Hochladen von Programmen solltest du weiter über die USB-Schnittstelle des Nano machen. Du müsstest sonst genau zum Hochladen eines Sketch im passenden Moment einen Reset auslösen.
Theseus:
Schließe die Bastelplatine auch erst dann an den Nano an, wenn du ihn programmiert hast.
Es gibt einige Dinge die ich über den Arduino noch nicht weiß. Zum Glück funktioniert er noch.
Theseus:
Ich dachte eher, du schaust, ob er brav "Hallo Welt" oder was du auch immer im Programm stehen hast, ausgibt. Schließe die Bastelplatine auch erst dann an den Nano an, wenn du ihn programmiert hast.
Wenn der selbstgebastelte Adapter am PC hängt, kann keine Waage mehr ran.^^
Demnach würde doch maximal
"AltSoftSerial Receive Test
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"
ausgegeben werden.
Shadow27374:
Es gibt einige Dinge die ich über den Arduino noch nicht weiß. Zum Glück funktioniert er noch.
Dabei sollte auch nichts kaputt gehen. Es funktioniert ur nicht.
Shadow27374:
Wenn der selbstgebastelte Adapter am PC hängt, kann keine Waage mehr ran.^^Demnach würde doch maximal
"AltSoftSerial Receive Test
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"
ausgegeben werden.
Klar, aber dann weißt du wenigstens, ob die serielle Schnittstelle des Arduinos plus Selbstbaubasteladapter funktionieren.
Theseus:
Dabei sollte auch nichts kaputt gehen. Es funktioniert ur nicht.
Habe den bisher immer geflasht wärend er angeschlossen war. Funktioniert nur nicht wenn man RX und TX tauscht.
Theseus:
Klar, aber dann weißt du wenigstens, ob die serielle Schnittstelle des Arduinos plus Selbstbaubasteladapter funktionieren.
Gerade noch mal probiert und ich kann höchstens
"AltSoftSerial Receive Test
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"
sehen.
Ich gehe also davon aus, dass die Platine nicht korrekt ist und warte auf die Lieferung aus China.
Sobald sie da ist werde ich mich wieder melden.
Wenn du eh auf Teile aus China wartest, dann bestelle dir doch auch einen Leonardo (oder Micro mit 32u4) oder einen Mega2560. Der Leonardo hat serielle Schnittstelle und USB-Seriell unabhängig, der Mega hat mehrere serielle Hardwareschnittstellen, so dass du keine Software-Serielle-Schnittstelle benutzen musst.
Ich geh jetzt mal davon aus, dass Du die Terminaleinstellung am HT genau so eingestellt hast, wie es auch am Nano programmiert ist. Kann es sein, dass ein Software Handshake verwendet wird (XON /XOFF)?
Sind die handshakeleitungen (RTS / CTS ...) an der Waage gebrückt, auch wenn diese nicht ausdrücklich verwendet werden?
Sind alles Fehlerquellen, die ich schon beobachtet hab'.
Hallo zusammen da bin ich wieder.
Der RS232 zu TTL Konverter ist endlich angekommen und angestöpselt. Leider bin ich nicht weiter als Mitte April. Ich kann auf der Nano Platine TX aufleuchten sehen, also sendet er mein "Q", nur es kommt nie eine Antwort auch nicht wenn ich "Print" betätige.
hajos118:
Ich geh jetzt mal davon aus, dass Du die Terminaleinstellung am HT genau so eingestellt hast, wie es auch am Nano programmiert ist.
Ich habe lediglich den vorhandenen Quellcode.
hajos118:
Kann es sein, dass ein Software Handshake verwendet wird (XON /XOFF)?
Konnte ich im Handbuch der Waage nichts finden. Wüsste auch nicht was ich in dem Fall tun müsste.
hajos118:
Sind die handshakeleitungen (RTS / CTS ...) an der Waage gebrückt, auch wenn diese nicht ausdrücklich verwendet werden?
Habe sie gestern testweise gebrückt, kein Erfolg.
Da wir noch einen Arduino Uno haben probiere ich es momentan mit diesem. Dort kenne ich die Pins (8 und 9) für AltSoftSerial.
Es kommen keine Werte der Waage sondern nur:
"AltSoftSerial Receive Test
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"
Poste doch bitte deinen aktuellen Sketch und Schaltplan.
Foto: Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 7); // RX, TX
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("USB vorhanden");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}
void loop() { // run over and over
Serial.println(mySerial.read());
mySerial.write('Q');
delay(1000);
}
Als Pins nutze ich 7 und 8, die sind digital ohne PWM.
Ausgabe:
USB vorhanden
-1
-1
-1
-1
-1
Gibt es einen Grund, warum du den Adapter mit 3,3V betreibst. TTL heißt eigentlich 5V. Deie sich ändernden Kabelfarben sind verwirrend. Kann es sein, dass TX und RX auf dem Weg zw. Adapter und Arduino vertauscht werden? Wenn muss zw. Waage und Adapter gekreuzt werden. Ist die Waage auf 9600Baud, richtige Stopbits usw. umkonfiguriert?
Die 3,3 V nutze ich, da ich das so laß, funktioniert aber auch nicht mit 5 V. RX/TX hatte ich bereits getauscht, das ist es also auch nicht.
Konfig der Waage:
- 4800 bps
- 8 Bit
- keine Parität
- Datenformat: CSV (also Text)
- Autoprintmodus B
Habe das Sketch auf 4800 korrigiert, kein Erfolg.
Hier ist nochmal die Schnittstellenbeschreibung: http://info.smartlux.lu/aandd/hc-i_op-03.pdf
Wenn die Waage ungefragt sendet, dann kannst du die Signale sichtbar machen. Nimm dazu das Sketch Button aus den Beispielen der IDE und setze den RX-Pin als Button ein. Dann sollte die 13er Led im Takt der empfangenen Daten blinken.
Auf ein neues, mit einem Arduino Mega.
RS232 - TTL Adapter
- TX zu Pin 19(RX1)
- RX zu Pin 18(TX1)
- GND zu GND
- VCC zu 5V
void setup() {
Serial.begin(4800);
Serial1.begin(4800);
}
void loop() {
if (Serial1.available()) {
float fGewicht = Serial1.read();
Serial.println(fGewicht);
}
delay(2000);
}
Ausgabe ist 0.00 gleichgültig ob ein Gegestand auf der Waage steht oder nicht.
Ist doch hervorragend, wenn der Sketch dieses Ergebnis liefert. Ganz im Ernst: Wenn du als Ergebnis eine richtig formatierte Ausgabe "0.00" erhältst, dürfte die Arduinoseite schonmal richtig funktionieren. Dass die Waage eine Nullmenge überträgt liegt wohl an dieser.
Ach Quark, wieder schneller getippt als verstanden...
Die serielle Schnittstelle übergibt die Werte byteweise, direkt in eine Float-Variable zu schreiben ist daher ungünstig. Was passiert denn, wenn du aus fGewicht ein byte machst?
Dann gibt er mir eine 0 aus.
Lass das Delay weg. So ist der Arduino nur alle 2sekunden aufnahmebereit. Die Waage müsste in dem Moment gerade was senden und du empfängst auch nur ein einzelnes Byte davon.