Sziasztok!
Egy touch-padot szeretnék olvasni arduinoval.
Odáig eljutottam, hogy sikerült a product ID regisztereket kiolvasnom, de nem tudom kiíratni a kapott bájtokat a soros monitorra. Kiemeltem a 10 byte olvasását, de hogy tudom serial printtel kiíratni egymás után a 10 bájtot? (logikai analizerrel látom, hogy sikeres volt a 10 bájt felolvasása).
Jácint
#include <Wire.h>
#define ADDR_Ax 0b000 //A2, A1, A0
// #define ADDR (0b1010 << 3) + ADDR_Ax
#define ADDR 0x5D
#define int_pin 2
#define rst_pin 5
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Wire.begin();
writeI2CByte(0, 1);
Serial.println(readI2CByte(0));
}
void loop() {
// put your main code here, to run repeatedly:
}
void writeI2CByte(byte data_addr, byte data){
delay(1);
pinMode(int_pin , OUTPUT);
pinMode(rst_pin , OUTPUT);
digitalWrite(int_pin , LOW);
digitalWrite(rst_pin , LOW);
delay(50);
digitalWrite(rst_pin , HIGH);
//pinMode(rst_pin, INPUT);
delay(150);
pinMode(int_pin, INPUT);
delay(1000);
// Wire.beginTransmission(ADDR);
// Wire.write(data_addr);
// Wire.write(data);
// Wire.write(0x5D);
// Wire.write(0x44);
// Wire.endTransmission();
// pinMode(int_pin, INPUT);
}
byte readI2CByte(byte data_addr){
byte data = NULL;
Wire.beginTransmission(ADDR);
Wire.write(0x81);
Wire.write(0x40);
Wire.endTransmission();
Wire.requestFrom(ADDR, 10); //retrieve 1 returned byte
data = Wire.read();
Serial.println(data,HEX);
delay(1);
if(Wire.available()){
data = Wire.read();
Serial.println(data,HEX);
}
return data;
}