Czaro Napisano Kwiecień 1, 2016 Udostępnij Napisano Kwiecień 1, 2016 Witam, pracuję z modułem LSM303D. Napisałem krótki sketch do sprawdzenia połączenia (I2C). Przy odczytaniu rejestru WHO AM I moduł wypluwa same jedynki 0xff zamiast 0x49. Podłączyłem się pod A5 i A4 podciągając rezystorami 4k7 pod 3v3. Nie mam pomysłu jak to naprawić #include <Wire.h> #define adressWrite 0x3a //adress of device while SDO connected to the VDD #define adressRead 0x3b #define regAdress 0b0001111 uint8_t who_am_i; //uint8_t deviceAdress; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { Wire.beginTransmission(adressWrite); Wire.write(byte(regAdress)); //deviceAdress = Wire.read(); Wire.endTransmission(adressWrite); Wire.beginTransmission(adressRead); Wire.requestFrom(adressRead, 8 ); who_am_i = Wire.read(); Wire.endTransmission(adressRead); //Serial.println(deviceAdress); Serial.println(who_am_i); delay(100); } Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Kwiecień 1, 2016 Udostępnij Kwiecień 1, 2016 Układów z początkiem nazwy 303D jest kilka rodzajów i bardzo różnią się interfejsem - w szczególności adresami I2C i położeniem wewnętrznych rejestrów. Może zamiast rozkminiać takie szczegóły, użyj gotowej biblioteki obsługującej wszystkie odmiany 303: https://github.com/pololu/lsm303-arduino Są tam też przykłady użycia - wyglądają dość prosto. Czy Twoje Arduino pracuje z 5V? Bo ten czujnik tego nie lubi. Upewnij się, że biblioteka nie włącza rezystorów pullup na pinach I2C procesora. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!