2017-01-18 17 views
0

TTP229(16キーまたは8キータッチパッド検出器)から2つの異なるバイトを読み取る必要があります。
私はPythonでI2Cを使用します。 TTP229 datasheet PDF
2番目のバイトは読み取れませんが、最初のバイトを取得できます。Python I2C通信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のコードは、[OK]を動作します:

#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;} 
    //... 

    } 
    } 

は、どのように私はPythonでのArduinoのrequestFrom()機能を使用していますか?

+0

書かれたモジュールをテストします。 [github libttp229](https://github.com/Skaper/libttp229) –

答えて

0

は、try:

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

が変更アドレスをいけない、バスが変換をDOE、そしてあなたがバイトを読めば、あなたは常に同じ最初のバイトを取得します。あなたは、試験されたが、うまくいくかもしれない、一度

で= 2バイトの単語を読みたい、チップTTP229で動作するように、それが注文したとPythonで使用するためにCで