Hallo
Ich verzweifel an einer vermeintlich simplen Aufgabe...
2 Arduinos über die TX/RX Pins kommunizieren zu lassen...
Ich habe hier einen Uno und einen Micro.
Der Uno so programmiert dass er jede Sekunde eine Zahl sendet mit
Am Laptop kann ich die Zahl empfangen.
Der Micro soll diese empfangen, die Pin 13 LED kurz flashen lassen wenn Daten zum Lesen da sind und eine LED entsprechen der Zahl dimmen...
byte Value;
void setup() {
Serial.begin(9600);
Serial.setTimeout(5);
pinMode(9,OUTPUT);
pinMode(13,OUTPUT);
pinMode(0,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available())
{
digitalWrite(13,HIGH);
string = Serial.readStringUntil('\n');
Value = string.toInt();
analogWrite(9,Value);
}
digitalWrite(13,LOW);
}
Sende ich ihm das vom Laptop aus klappt das Prima.
Versorge ich die beiden mit einem 5V Netzteil, und verbinde den Tx des Uno mit dem Rx des Micro und die Massen passiert.........Garnichts......
Habe sogar am Tx des Uno eine LED dran die auch Flackert wenn er sendet und wenn er nicht sendet dauerhaft an ist.
Der Uno hat Probleme wenn du D0 und D1 (RX und TX) verwendest, da hier auch der USB-Serialwandler angeschlossen ist.
Das solltest du ändern und evtl. SoftwareSerial verwenden.
Davon habe ich schonmal gehört, daher hatte ich die beiden Arduinos nicht über USB versorgt. Würde das ganze mit z.B. 2 Micros so funktionieren wie ich mir das vorstelle?
Ich hatte gehofft dass ganze ohne softwareserial zu lösen, da das eigentliche projekt dass ich damit realisieren will mit einigen Servos und Schrittmotoren im Modellbaubereich meiner Meinung nach recht Rechenintensiv ist und ich vermeiden möchte dass durch softwarekommunikation sichtebare Einschränkungen in den flüssigen Bewegungen der Schrittmotoren auftreten.
Ich würde erstmal den String Kram rausschmeißen. Readuntil blockiert und den ganzen String Funktionen traue ich sowieso nicht übern Weg.
Wenn ich mit seriell rumspiele, nehme ich zum testen immer Megas
knautschkissen:
Davon habe ich schonmal gehört, daher hatte ich die beiden Arduinos nicht über USB versorgt. Würde das ganze mit z.B. 2 Micros so funktionieren wie ich mir das vorstelle?
Das hat mit der Spannungsversorgung nichts zu tun.
Da kommt dir einfach der Baustein (IC) in die Quere, der onBoard die Wandlung vornimmt.
Und ja, mit den Micros sollte das funktionieren.
Da ist die UART getrennt herausgeführt.
P.S.
Ich habe schon größere Projekte mit der SoftwareSerial gelöst und konnte keine Probleme feststellen.
Beim Arduino MICRO sind die Pins TX und RX die Schnittstelle Serial1 (Serial EINS). Die USB Schnittstelle ist Serial (Serial ohne Zahl).
https://www.arduino.cc/en/Reference/Serial:
The Arduino Leonardo board uses Serial1 to communicate via TTL (5V) serial on pins 0 (RX) and 1 (TX). Serial is reserved for USB CDC communication. For more information, refer to the Leonardo getting started page and hardware page.
HotSystems:
Der Uno hat Probleme wenn du D0 und D1 (RX und TX) verwendest, da hier auch der USB-Serialwandler angeschlossen ist.
Das solltest du ändern und evtl. SoftwareSerial verwenden.
Zwischen ATmega und USB-Serial Wandler (auf viele Arudinos außer solchen mit ATmega32U4 und SAM) sind auf den RX und TX Leitung 500 Ohm Widerstände verbaut. Darum kann eine Serielle Schnittstelle eines anderen Gerätes an TX und RX direkt angeschlossen werden und bekommt "Vorfahrt". Das blockiert die Komunikation zwischen dem ATmega und dem USB-serial wandler und damit dem PC. Wenn die Verbindung zum PC nicht notwendig ist funktioniert das. Zum Upladen eines Sketches über USB muß das Gerät an TX/RX entfernt werden.
uwefed:
Zwischen ATmega und USB-Serial Wandler (auf viele Arudinos außer solchen mit ATmega32U4 und SAM) sind auf den RX und TX Leitung 500 Ohm Widerstände verbaut. Darum kann eine Serielle Schnittstelle eines anderen Gerätes an TX und RX direkt angeschlossen werden und bekommt "Vorfahrt".
Ok, wenn das dann funktioniert. Wir wissen aber nicht, welchen der TO einsetzt.