NewSistems Опубликовано 28 августа, 2017 Жалоба Поделиться Опубликовано 28 августа, 2017 Всем здравствуйте! Пытаюсь подключить к контроллеру Atmega328P датчик магнитного поля HMC5883l по шине I2c. Использую библиотеку Arduino. Перепробовал все примеры, которые есть в сети. Думал, что датчик не работает, купил другой - тоже самое. Работу контроллера с библиотекой Arduino тестил на светодиодах. Все заливается и работает без проблем. Даже не знаю, как проверить. Подключал светодиод в провода i2c, он моргает. Значит какие то импульсы с/на датчик идут. Но на порт в терминал ничего не выходит. На работе могу осциллографом потыкать (подскажите куда тыкать и что смотреть). Есть подозрение, что нужно заменить подтягивающие резисторы в шине I2c. Сейчас стоят 2.2 k. код такой: #include // подключим стандартную библиотеку I2C #define addr 0x1E // I2C адрес цифрового компаса HMC5883L void setup() { Serial.begin(9600); // инициализация последовательного порта Wire.begin(); // инициализация I2C } void loop() { Wire.beginTransmission(addr); // начинаем связь с устройством по адресу 0x1E Wire.write(0x0A); // регистр, с которого мы начнём запрашивать данные Wire.endTransmission(); Wire.requestFrom(addr, 3, true); // запрашиваем 3 байта у ведомого while( Wire.available() ) { char a = Wire.read(); // считываем байт из регистра 0xA; устройство само переходит к следующему регистру // Выводим считанное в последовательный порт: Serial.println(a, HEX); } delay(1000); } В терминал ничего не выходит. Если убрать While{}, то в терминал сыпется FFFFF FFFFF FFFFF ..... Помогите разобраться! Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.