Как мне одновременно подключиться барометр и акселерометр? Оба подключаются к А4 и А5. Можно ли настроить, чтоб к другим пинам подключались. Очень нужно чтобы они работали вместе, ничего не получается найти(((
Diana2001, она же Yulia2001, вам же вроде обьяснили на ардуино.ру.. Почитайте про протокол I2C - к одним пинам А4 и А5 можно одновременно подключать много устройств нет
Как на практике будет выглядить подключение и скетч, если я хочу чтобы у меня выводилось и ускорение и высота? Адреса датчиков известны, как выглядит обращение? В теории дается только схема подключения, без программной части
ответ Засылается адрес датчика, затем команда, затем отбой и ждём ответа от датчика. Очень подробно я рассказываю здесь http://forum.amperka.ru/threads/Суперэкономичный-беспроводной-монитор-Т-и-rh.17221/#post-199357
подключение на практике будет выглядеть так же, как в теории Диана. вместо того чтоб задавать общие вопросы - начните уже собирать устройство и попробуйте написать код. А когда возникнут проблемы - тогда приходите.На те вопросы. что вы задаете сейчас - вам нужно пол-книжки пересказать. Если не хотите разбираться сами - напишите в "Закажу проект", вам сделают.
Ну не стоит так категорично. А если вручную расписать протокол? Software serial ведь реализован. Да и аппаратной реализации 1-Wire в 8 - 328 ATmega нет. Пишут вручную. Не спорю - протокол попроще, но всётаки Вы каждое устройство в отдельности работать заставили? Если да, то код в студию.
да разве категорично? - а если учесть уровень ТС? для Дианы на этот вопрос ответ "нет" без вариантов Подумайте. если они штатно не могут завести два датчика на шине - им ли советовать фофтовый I2C ?
В данном конкретном случае вы абсолютно правы. Это я так - "в принципе" возможно. Да и аппаратная реализация I2C в ATmega несколько странная. У меня создаётся впечатление, что когда у разработкиков дошли руки до I2C они уже порядочно устали и решили не заморачиваться. Сделали всего одно прерывание на все случаи жизни.
К примеру для USART - три прерывания. Окончание передачи, окончание приёма и даже на опустошение UDR. А в I2C вариантов море а прерывание одно. И начинаем перебирать в обработчике все варианты регистра TWSR. А их что-то около трёх десятков. Не спорю, абсолютно все перебирать не надо, часть отсекаются по режиму (MASTER, SLAVE). Но всёравно обработчик получается громоздкий.
Один вектор на грядку прерываний - это нормально. Вот так выглядит обработчик прерывания от таймера у MSP430: Код (C++): switch(__even_in_range(TB0IV,TB0IV_TBIFG)) { case TB0IV_NONE: break; // No interrupt case TB0IV_TBCCR1: break; // CCR1 not used case TB0IV_TBCCR2: break; // CCR2 not used case TB0IV_TBIFG: // overflow break; default: break; }
Акселерометр и барометр подключаются к Ардуино параллельно на одни и те-же входы. Как правило, по умолчанию в библиотеках для этих устройств прописаны разные адреса и конфликтов по этой части нет. Но использовать готовые методы в лоб, для получения данных, вряд-ли получится. Проблема в разной скорости получения данных с этих устройств. Акселерометр имеет свой процессор и данные выдает быстрее чем барометр, а данные барометра контроллер Ардуино получает "сырыми" и поэтапно. Сначала температура (быстро), затем "кажущееся" давление (уходит много времени), и после этого Ардуино по этим параметрам своими силами рассчитывает "истинное" давление. В общем, если хотите использовать свое устройство на парашютистах или в ракетах, нужно "подламывать" библиотеки под свои хотелки по части грамотного получения данных, не тормозя основной процесс. Хотя возможно, что можно найти код в сети. А подключение вообще не проблема.