2016-06-07 9 views
0

Я пытаюсь контролировать свой дом-домик смартфоном, смартфон отправляет 3-4 байт в Малину через Интернет (Wi-Fi), а малина посылает все эти байты на соответствующую шину I2C Arduino (У меня есть два Ардуиноса). Когда я отправляю команды малине, он показывает «Не удалось написать на шину i2c» Кто-нибудь может мне помочь?Ошибка заполнения малины в гнезде i2c

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; 
    } 

ответ

0

Когда я использовал I2C на raspi, я никогда не использовал «открытую» функцию, если заявление (например, у вас есть в функции i2csend()). Вот пример из (рабочего) проекта:

//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

Спасибо, но я решил. Я не связал рашпиль и ардуино землю. Я этого не делал, потому что в первый раз я использовал шину usb bus, и это сработало. На этот раз я использовал раздельный блок питания. –