2016-06-07 10 views
0

Ich versuche, meine Domotik Haus von Smartphone zu steuern, sendet das Smartphone 3-4 Byte an Raspberry via Internet (Wi-Fi) und Raspberry senden alle diese Bytes auf die entsprechenden Arduino durch I2C-Bus (Ich habe zwei Arduinos). Wenn ich die Befehle an Raspberry sende, wird angezeigt: "Schreiben auf dem i2c-Bus fehlgeschlagen" Jeder kann mir bitte helfen?Himbeerfehler schreibe in i2c Sockel

int i2csend(msg_t *pmsg) 
    { 
    int fd; 
    /* Open I2C device */ 
    if ((fd = open(device, O_RDWR)) < 0) error ("Can't open I2C device"); 
    if (ioctl(fd, I2C_SLAVE, arduino_addr) < 0) error ("Can't talk to slave"); 
    if (write(fd, (char *)pmsg, n) < n) printf ("Failed to write to the i2c bus [1]\n"); 
    else 
    { 
     read(fd, (char *)pmsg, n); 
     printf("Ricevuto il messaggio: %c%c %d %d\n", pmsg->tipo, pmsg->gruppo, pmsg->dato[0], pmsg->dato[1]); 
    } 
    close(fd); 
    return 0; 
    } 

Antwort

0

Wenn ich I2C auf dem Raspi verwendet habe, habe ich nie die ‚offene‘ Funktion in einer if-Anweisung (wie Sie in der i2csend() Funktion haben). Hier ist ein Beispiel aus einem (Arbeits) Projekt von mir:

//open file for i2c interface 
int fh=open("/dev/i2c-1",O_RDWR); 
if (ioctl(fh, I2C_SLAVE, UIBC_ADDR) < 0){ 
    printf("Couldn't establish contact with the UIBC\n"); 
} 
+0

Danke, aber ich habe es gelöst. Ich habe Rasp und Arduino nicht miteinander verbunden. Ich habe es nicht getan, weil ich zum ersten Mal den USB-Bus-Boden benutzt habe und es funktioniert hat. Dieses Mal habe ich ein separates Netzteil verwendet. –