INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
I2c Datenübertragung
15.11.2015, 21:14 (Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2015 21:17 von diode1990.)
Beitrag #1
I2c Datenübertragung
Hallo,
vielleicht kann mir jemand weiter helfen. Blush

Ich habe heute zwei arduinos mit dem I2c Bus verbunden.

Auf dem Master habe ich von einem Poti die Werte abgelesen und auf dem Slave habe ich mit diesem Wert, den der Master ermittelt hat, eine LED gedimmt.-->hat wunderbar funktioniert.

Danach lies ich auf beiden einen eine Led in unterschiedlichen Frequenzen blinken.
Dazu habe ich die delay Funktion genutzt. --> hat ebenfalls wunderbar funktioniert

Das bedeutet dann, wenn der Master gerade mit der Datenübertragung beginnt, ist der Slave gerade in einer andern Programmzeile. Zb.: er setzt gerade Pin 13 HIGH.

Trotzdem wurde die Led, leicht zeitverzögert, heller und dunkler, abhängig der Potistellung.


Daraus schließe ich, dass der Arduino das Bussignal permanent abfragt und dieses zwischenspeichert und wenn es nicht an den ihn adressiert ist wird es wieder gelöscht ansonsten wird es weiter verarbeitet.

Liege ich mit meiner Annahme richtig???


DANKE



---------------------------------------------------------------------------------------
Programm Master

#include <Wire.h>
// Code für Master

int poti=A0; // Hier wird der Wert abgefragt der Übertragen wird
byte sendeDaten;
int led2=13;


void setup()
{
Wire.begin();//Master hat in Klammer keinen Wert
Serial.begin(9600);
pinMode(led2,OUTPUT);
}

void loop()
{
sendeDaten=map(analogRead(poti),0,1023,0,255);
Serial.println(sendeDaten);
Wire.beginTransmission(4);
Wire.write(sendeDaten);
Wire.endTransmission();
Serial.println(sendeDaten);
delay(50);
digitalWrite(led2,HIGH);
delay(250);
digitalWrite(led2,LOW);
delay(800);

}

Slave

#include <Wire.h>

byte empfangen;
int Led=A1;

void setup()
{
pinMode(Led,OUTPUT);
Wire.onReceive(receiveEvent);
Wire.begin(4);
}

void loop()
{
delay(50);
}

void receiveEvent(int howMany)
{
empfangen=Wire.read();
analogWrite(Led,empfangen);
}

Beim Programmcode Slave ist jetzt die separat blinkende LED nicht angeführt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2015, 22:57
Beitrag #2
RE: I2c Datenübertragung
Zitat:Daraus schließe ich, dass der Arduino das Bussignal permanent abfragt und dieses zwischenspeichert und wenn es nicht an den ihn adressiert ist wird es wieder gelöscht ansonsten wird es weiter verarbeitet.
Fast, der Master sendet ein Signal an den Slave (abhängig der I2C-Adresse) und dieser speichert es zwischen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Datenübertragung vom Arduino Mega 2560 zu Hterm Datatom 1 99 13.11.2016 23:08
Letzter Beitrag: hotsystems
  Datenübertragung per USB Arduino Due chhec 0 422 12.10.2015 10:05
Letzter Beitrag: chhec
  Arduino schnelle Datenübertragung mit 2Mbit/s armut 1 687 06.05.2015 17:39
Letzter Beitrag: rkuehle
  Problem mit serieller Datenübertragung olflab 4 922 06.05.2015 10:13
Letzter Beitrag: Thorsten Pferdekämper
  serielle Datenübertragung Soma 3 1.120 16.09.2014 21:45
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste