Ich gebe am Attiny85 eine Integerzahl an einem Port aus. Diese Zahl möchte ich dann mit dem Arduino wieder einlesen und über den Serial-Monitor ausgeben. Leider bekomme ich nicht die Zahl wieder, die ich gesendet habe.
Dieser Code läuft auf einem Attiny85:
#include <SoftwareSerial.h>
SoftwareSerial sendTest(1,4);
int data = 123;
void setup()
{
sendTest.begin(38400);
}
void loop()
{
sendTest.write(data);
}
Dieser Code läuft auf dem Arduino Uno:
#include <SoftwareSerial.h>
SoftwareSerial test(2,3);
int data = 0;
void setup()
{
Serial.begin(115200);
test.begin(38400);
}
void loop()
{
if (test.available())
{
data = test.read();
}
Serial.println(data);
}
Dany262:
An was kann das liegen / was mache ich falsch?
Ich finde, Du bist ganz schön optimistisch wegen der erzielbaren Baudrate mit SoftwareSerial!
Ist der Systemtakt an beiden Mikrocontrollern mit einem Schwingquarz derselben Frequenz stabilisiert? Oder schwingt einer (oder gar beide) Mikrocontroller womöglich nur mit “Resonatoren” zur Takterzeugung (z.B. alle Arduino-Boards im “R3” Design)? Ich würde zum Testen mal mit einer niedrigeren SoftwareSerial-Baudrate testen.
Außerdem würde ich mal das HighByte und das LowByte getrennt versenden und mit einer Pause zwischen zwei Aussendungen, also eher mal senden mit:
Danke für deine Hilfe. Hat aber leider nichts gebracht.
Das komische ist, dass mein Code auf dem Arduino perfekt funktioniert (mit SoftwareSerial mit 38400baud). Doch wenn ich den Code auf nen Attiny85 lade, gehts nicht mehr. Also nur das SoftwareSerial Zeug. Der Rest geht.
Oder soll ich vielleicht mal NewSoftSerial probieren?
Dany262:
Danke für deine Hilfe. Hat aber leider nichts gebracht.
Wie “nichts gebracht”?
Die Codeänderung war ja nicht nur dazu da, die Baudrate herunterzusetzen, sondern auch, um eine Pause von exakt einer Sekunde zwischen zwei Aussendungen einzufügen.
An der Einhaltung dieses Sekundenabstands kannst Du z.B. erkennen, ob das Timing beim Sender überhaupt richtig läuft. Also ob z.B. der Attiny mit der beabsichtigten Taktfrequenz läuft oder nicht.
Was empfängst Du denn jetzt? Es sollten immer im Wechsel kommen
zwei Bytes
eine Sekunde Sendepause
Wenn nicht mal das stimmt, dann ist da irgendwas an Deinem Serial.Sender total verwarzt!
Du hast hoffentlich auch GND vom Sender (Attiny) mit GND vom Empfänger (Arduino) verbunden und nicht nur die Datenleitungen untereinander, falls die beiden Boards von unterschiedlichen Quellen mit Strom versorgt werden?