2017-01-18 3 views
0

Мне нужно прочитать 2 разных байта от TTP229 (16 клавиш или 8 клавиш сенсорной панели).
Я использую I2C в Python. TTP229 datasheet PDF.
Я не могу прочитать второй байт, но я могу получить первый байт.Python I2C communication TTP229

Python код:

import smbus 
bus = smbus.SMBus(1) 
adressTTP229 = 0x57 #0xAF>>1 
byte1 = bus.read_byte(adressTTP229) 
byte2 = bus.read_byte(adressTTP229) 

byte1 всегда равна byte2.

Этот Arduino код, работает нормально:

#include <Wire.h> 
#define ttp229 (0xAF>>1) 

void setup() { 
    Serial.begin(9600); // start serial for output 
    Wire.begin(); 
} 

void loop() { 
    delay(50); 
    bool isNewData = false; 
    Wire.requestFrom(ttp229,2,true); 
    while (Wire.available()) { 
    uint16_t b1 = Wire.read(); // receive a first byte 
    uint16_t b2 = Wire.read(); // receive a second byte 
    if (b1==b2 && b2==0) {break;} 
    //... 

    } 
    } 

Как использовать requestFrom() функцию Arduino в Python?

+0

Written модуль в C для использования в Python, работать с TTP229 чипа. [github libttp229] (https://github.com/Skaper/libttp229) –

ответ

0

попробовать:

import smbus, time 
bus = smbus.SMBus(1) 
while True: 
    print bus.read_word(0xAF) 
    time.sleep(0.1) 

DonT изменение адрес, шины лань преобразования, и если вы читаете байты вы всегда получите те же первые байты. Вы хотите, чтобы прочитать слово = 2 байта сразу

не испытывалась, но может работать, пусть он заказал и испытает

Смежные вопросы