Zwei Arduinos verbinden.

Gast #3471246
Lesenswert?
• ▲
▼
Hallo,

muss zwei Arduinos verbinden,

Zur datenübertrageung darf nur eine Leitung und masse verwendet werden.

I2C kann ich nicht nehmen bräuchte ein zweites Kabel :-(


Also die Anwendung, der erste Arduino, hat zwei Potis angeschlossen, 
über das Kabel, Solen deren ADC werte an den zweiten Arduino übertragen 
werden.
1
int Motor = 12;
2
int Pot;
3
int Pot2;
4

5

6
void setup() {                
7
  
8
  pinMode(Motor, OUTPUT);     
9
}
10

11

12
void loop() {
13
  Pot = analogRead(A0);
14
  Pot2 = analogRead(A2);
15
  digitalWrite(Motor, HIGH);   
16
  delay(2);              
17
  digitalWrite(Motor, LOW);    
18
  delayMicroseconds(250);
19
  digitalWrite(Motor, HIGH);
20
  delayMicroseconds(Pot+5);
21
  digitalWrite(Motor, LOW);
22
   delayMicroseconds(250);
23
  digitalWrite(Motor, HIGH);
24
  delayMicroseconds(pot+5);
25
  digitalWrite(Motor, LOW);
26
  delayMicroseconds(250);
27
  
28
}

Senderprogramm.

Diese Zeiten sollen vom empfänger gemessen und Interpretiert werden.

Dieser Delay von 2ms soll das Synchronisationssignal sein.

Sprich das emfänger Programm startet rat, wenn es die 2ms gemessen hat.

Danach sollte das mpfängerprogramm Synchron zum Sender laufen.

In der Theorie klappt das jetz auch.

In der Praxis, habe ich das Problem, dass ich die Zeiten nicht 
ordentlich messen kann.

Gibt es eine Libary, bei welcher ich den Timer soald der auf High 
schaltet startet, und sobald wider low ist, der Timer gestoppt und der 
Wert gespeichert wird.
Danke schonmal.
Gast #3471288
Lesenswert?
• ▲
▼
Soll die Datenübertragung in zwei Richtungen gehen?

- verbinde an beiden Arduinos RX mit TX (Arduino hört sich selbt)

- verbinde die beiden RX/TX der Arduinos über Dioden so miteinander, 
dass die Endstufen in den TX-Leitungen die Leitung nur auf Masse ziehen 
können (Pullup-R nach Plus)

Dann denk dir ein Protokoll aus, bei dem einer der Arduinos der Master 
ist. Der Slave sendet nur, wenn er "gefragt" wird - das vermeidet 
Kollissionen auf der Datenleitung. Feddich.

Du könntest nat. auch ein komplettes CSMD/CD oder /CA programmieren :-)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.