You are here

ARDUINO I2C adatok olvasása, és kiíratása soros vonalra [MEGOLDVA]

1 post / 0 new
Jaca
Jaca picture
*****

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