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
Befehle via I2C an 2. Arduino
28.06.2015, 08:54
Beitrag #1
Befehle via I2C an 2. Arduino
Hallo,
hat jemand mal ein Beispiel wie ich über I2C verschiedene Befehle
von einem zum anderen Arduino schicken kann und der Empfänger
diese dann auswertet?

z.B. "AUTO3400,150"
AUTO ist der Befehl, 3400 Daten einer Variable und 150 die Andere,
die Datenlänge kann auch kürzer sein, z.B. AUTO250,10.


Danke Gummifisch
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 09:49 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2015 09:53 von HaWe.)
Beitrag #2
RE: Befehle via I2C an 2. Arduino
hi,
hilf dir das hier...?



Uno I2C master:
Code:
// Wire Master Reader
// by Nicholas Zambetti <http://www.zambetti.com>

// Demonstrates use of the Wire library
// Reads data from an I2C/TWI slave device
// Refer to the "Wire Slave Sender" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include <Wire.h>

void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}

void loop()
{
  Wire.requestFrom(2, 6);    // request 6 bytes from slave device #2

  while(Wire.available())    // slave may send less than requested
  {
    char c = Wire.read(); // receive a byte as character
    Serial.print(c);         // print the character
  }

  delay(500);
}


Uno I2C slave:

Code:
// Arduino as an i2c slave
// touch sensorwitht external Pullup at pin digital 2
// i2c as slave, dev addr. 0x03

#include <Wire.h>  

int  ledpin=13;     // internal LED on board
byte signalpin=12;  // external touch sensor
byte value=0;  

//*************************************************************************  
void setup()  
{  
  pinMode(ledpin,OUTPUT);    
  pinMode(signalpin,INPUT);
  
  Wire.begin(3);                // join i2c bus with dev address 0x03
  Wire.onRequest(requestEvent); // register event
}  

//*************************************************************************  
  
void requestEvent() {
    Wire.write(signalpin);         // respond with message of 1 byte
}

//*************************************************************************

void loop()  
{  
  value=digitalRead(signalpin);    
  digitalWrite(ledpin,value);

  delay(20);  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 13:22
Beitrag #3
RE: Befehle via I2C an 2. Arduino
War nicht wirklich das was ich suche.

Geht eher drum wie ich einen übertragenen Daten nutzen kann.
Also ich Sende BEFEHL, dann WERT1, dann WERT2
bei BEFEHL führe jenes aus und nutze WERT1 und 2,
wobei BEFEHL unterschiedlich sein kann.

Hier die Variante wie ich es über Seriell gelöst habe:

Code:
void loop() {

  char commandbuffer[60];
  char c;
  int i=0;
  float int1, int2;
  // Puffer mit Nullbytes fuellen und dadurch loeschen
  memset(commandbuffer,0,sizeof(commandbuffer));
  if (Serial3.available())
  {
    delay(100);
    while (Serial3.available())
    {
      c=Serial3.read();
      Serial.print(c);
      if (c>32) // Nur Zeichen mit ASCII-Code oberhalb Leerzeichen
      {
        commandbuffer[i] = c;
        i++;
      }  
    }
  }
  if (strstr(commandbuffer,"AUTO")==commandbuffer)
  {
    Serial.print("Fahre auf Position: ");
    Serial.println(commandbuffer);
    int1=getIntFromString(commandbuffer,1);
    Serial.print("Elevation: ");Serial.println(int1/10);
    int2=getIntFromString(commandbuffer,2);
    Serial.print("Azimut: ");Serial.println(int2/10);
    
    moveToAngle(int1/10,70+(int2/10));
        
  }
  else if (strcmp(commandbuffer,"START")==0)
  {
    Serial.print("Fahre SAT hoch: ");
    Serial.println(commandbuffer);
    moveToAngle(0,70);
  }

usw.

So etwas in der Art.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.06.2015, 11:17
Beitrag #4
RE: Befehle via I2C an 2. Arduino
Ich würde mir eine genormte Zeichenkette bauen. Bspw Zeichen 1 der Befehlt, dann die Parameter wie Zeichen 2-5 die X Koordinate und 6-9 die Y Koordinate.
Du wertest dann den Befehl aus und holst dann die Parameter und ordnest sie zu.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Libraries, Befehle sowerum 3 707 09.02.2016 22:39
Letzter Beitrag: sowerum
  Serial2 Befehle kommen verpätet an Zerebrator 5 853 20.07.2015 12:27
Letzter Beitrag: Zerebrator
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 1.113 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 3.143 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf
  UDP Befehle stuff23 0 760 03.10.2014 19:43
Letzter Beitrag: stuff23
  zwei Befehle paralell Oberlaender 11 5.719 10.05.2014 12:39
Letzter Beitrag: Hilgi
  Kann Ultraschall-Sensor durch LED-Befehle gestört werden? to-wer 4 1.722 01.05.2014 11:12
Letzter Beitrag: to-wer

Gehe zu:


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