salve a tutti,
ho acquistato un sensore di temperatura ed umidità AM2302 (qui il datasheet).
Vorrei poterlo leggere in arduino mediante il protocollo i2C.
Riporto il file .ino:
#include <Wire.h>
#define I2CADDR 0x5C
#define READCMD 0x03
#define REGSTADDR 0x00
#define REGCOUNT 4
#define REGADDR 0x0B
void setup() {
Wire.begin(); // wake up I2C bus
Serial.begin(9600);
}
void loop() {
byte buf[10];
//
// Read Command
//
Wire.beginTransmission(I2CADDR);
Wire.write(READCMD);
Wire.write(REGSTADDR);
Wire.write(REGCOUNT);
Wire.endTransmission();
//
// Waiting
//
delay(2); //>1.5ms
//
// Read
//
Wire.requestFrom(I2CADDR, 2 + REGCOUNT + 2); // COMMAND + DATA + REGCOUNT + CRCLSB + CRCMSB
int i = 0;
for (; i < 2 + REGCOUNT + 2; i++)
buf[i] = Wire.read();
for (i=0; i < 2 + REGCOUNT + 2; i++)
Serial.println(buf[i]);
delay(3000);
}
Tenuto conto che ho eseguito i seguenti collegamenti:
- pin1 AM2302 (VDD) ----> +5 V arduino
- pin2 AM2302 (SDA) ----> A4 arduino
- pin3 AM2302 (GND) ----> GND arduino
- pin4 AM2302 (SCL) ----> A5 arduino
e che ho trovato l'indirizzo del sensore (0x5C), tuttavia dal monitor seriale non riesco a leggere nulla (escono tanti 00000).
Dove sbaglio ?