ich möchte eine variabel über die serielle Schnittstelle schicken und sie dann vom Empfänger in einer variabel ablegen um sie dann zu verarbeiten es kommt aber nicht das bei rum was ich erhoft habe
void loop() {
if (Serial.available() > 0) {
// read the incoming byte:
Analog1 = Serial.read();
Serial.print(Analog1);
}
}
Da die Definition von Analog1 fehlt, weiß man nicht, was Serial ausgibt.
Wobei print etwas anderes sendet als read liest. write ist das Gegenstück zu read.
Auch ist unklar, was du erhoffst.
Und was (bzw. wie) die andere Seite es sendet, sagst du auch nicht.
Auch sendest du es an den Absender zurück, ist das Absicht?
Was man weiß, ist, dass Serial.read() 1 byte liest, was normalerweise für 1 Buchstaben reicht.
Wenn mehrere Zeichen gesendet wurden, werden diese in mehreren loop - Durchläufen gesendet gelesen, was auch nicht schlimm ist.
if (Serial.available()) Serial.write(Serial.read()); // sendet alles unverändert zurück
Ich möchte von einen Arduino ein analog wert über Serial zum anderen Arduino schicken der Empfänger soll es speichern können im EEPROM Sodas ich es später wieder am pc auslesen kann als analog wert vom Empfänger
Da zwei Arduinos beteiligt sind macht es Sinn beide Programme zu posten.
Du solltest Programme als Code-Section posten. Das geht ganz einfach.
Nur drei Schritte:
1.) wechsle zur Arduino-IDE drücke Strg-T für automtatisches formatieren
2.) mache mit der Maus einen Rechtsklick und wähle "für Forum kopieren
3.) wechsle zur Forum-Texteingabe und drückte Strg-V um den Inhalt der Zwischenablage einzufügen.
fertig
Wenn ein Programm als Code-Section eingefügt ist kann man es viel besser lesen
und eine Code-Section kann man mit einem einzigen Mausklick in die Zwischenablage kopieren.
In diesem Forum wird gerne geholfen. Und zwar umso lieber je weniger Nachfragen man zu allen möglichen Details man stellen muss. Deshalb beschreibe dein Projekt ausführlich.
Wenn die Beschreibung in sinnvolle Absätze mit Überschriften gegliedert ist, könnte die Beschreibung auch zwei DINA4 Seiten lang sein. Durch die Absatzüberschriften könnte man schnell zu den interessanten Absätzen springen. 2 DINA4 Seiten braucht man meistens nicht
aber 10 bis 20 Sätze schon.
So jetzt liegt es an dir ob du dir jetzt einmal 10 bis 20 Minuten Zeit nimmst eine vernünftige Beschreibung zu tippen und dann kommt eine Antwort die schon fast alle Probleme löst
oder ob du noch 20 zu-kurz-postings schreiben möchtest und in einer Woche immer noch nicht bei der Lösung bist.
Das liest genau 1 Byte.
Also ein Zeichen.
Dann geht es im Code weiter, bis loop wieder von vorn anfängt.
Dann liest es wieder nur 1 Byte.
Wenn Du mehrere Bytes lesen willst, dann darfst Du nicht das vorher gelesene Byte überschreiben.
Das machst Du nämlich aktuell.
In den Beispielen gibt es unter Communication das Example "SerialEvent". Das wäre ein erster Anlaufpunkt.
Oder das:
void setup(){}
void loop()
{
leseDaten();
}
void leseDaten()
{
char readChar;
uint8_t pos = 0;
char buf[16] = {0};
while (Serial.available() > 0 ) // Zeichen auf der Seriellen
{
readChar = Serial.read(); // lese Zeichen
if (!isControl(readChar)) // Zeichen ist kein Steuerzeichen
{
Serial.print(readChar); // Kontrollausgabe
buf[pos] = readChar; // in den Puffer schreiben
pos++; // nächste Pufferposition setzen
}
else // Wenn Steuerzeichen -> Zeilenende
{
// Hier mach was mit dem Puffer
Serial.println(buf);
}
}
}
wenn der Wert größer als 1 Byte ist muß dieser auf einzelne Byter zerlegt werden. Int zu 2 byte und long und float zu 4 Byte.
Wie groß sind die Zahlen die Du übertragen willst?
Binär-Übertragung oder Übertragung als Text sind ganz verschiedene Sachen. Wenn du eine Zahl im Serial Monitor siehst, ist das in Wirklichkeit ein Text.
"456" wird mit mindestens 3 * Serial.read() eingelesen, evtl. sind noch NeueZeile - Zeichen dahinter.
Welche der Aufgaben möchtest du zuerst lösen?
Analogwert erfassen und auf Serial ausgeben ( wie oft ? ) --> Hast du wohl schon irgendwie
Zwei Arduinos zusammenschalten, so dass der eine empfängt, was der andere über Serial schreibt --> Wie kriegst du raus was der Empfänger macht? ( 2. Serielle Schnittstelle mit PC ?) Welcher Arduino? SoftwareSerial?)
Was über Serial eingelesen wurde, im EEPROM speichern --> EEPROM ist sehr klein, wenn es nur um einmalig 1 Text geht, kein Problem, sonst genauer überlegen.
Anzeigen, was im EEPROM gespeichert wurde --> Ein anderer Sketch, oder wie erkennst du ob an Serial gerade der PC zum EEPROM-Lesen oder der andere Arduino hängt, der Serial liest und auf EEPROM schreiben soll ?