Код (C++): // библиотека для работы I²C #include <Wire.h> // библиотека для работы с модулем Slot Expander (I²C IO) #include <GpioExpander.h> // создаём объект expander1 класса GpioExpander по адресу 42 GpioExpander expander0(42); // создаём объект expander1 класса GpioExpander по адресу 43 GpioExpander expander1(43); // создаём объект expander2 класса GpioExpander по адресу 44 GpioExpander expander2(44); // создаём объект expander3 класса GpioExpander по адресу 45 GpioExpander expander3(45); void setup() { // включаем I²C. Для Arduino UNO Slot - Wire1.begin(); Wire.begin(); // Инициализируем объект expander. Для Arduino UNO Slot - adio.begin(&Wire1); expander0.begin(); // настраиваем пин светодиода UNO Slot в режим выхода pinMode(3, OUTPUT); // настраиваем пин светодиода молуля Slot Expander1 в режим выхода expander1.pinMode(5, OUTPUT); // настраиваем пин светодиода молуля Slot Expander2 в режим выхода expander2.pinMode(5, OUTPUT); // настраиваем пин светодиода молуля Slot Expander3 в режим выхода expander3.pinMode(5, OUTPUT); } void loop() { // подаём на пин светодиода WiFi Slot «высокий уровень» digitalWrite(3, HIGH); // ждём пол секунды delay(500); // подаём на пин светодиода модуля Slot Expander1 «высокий сигнал» expander1.digitalWrite(5, HIGH); // ждём пол секунды delay(500); // подаём на пин светодиода модуля Slot Expander2 «высокий сигнал» expander2.digitalWrite(5, HIGH); // ждём пол секунды delay(500); // подаём на пин светодиода модуля Slot Expander3 «высокий сигнал» expander3.digitalWrite(5, HIGH); // ждём пол секунды delay(1000); // подаём на пин светодиода WiFi Slot «низкий уровень» digitalWrite(3, LOW); // подаём на пин светодиода модуля Slot Expander1 «низкий сигнал» expander1.digitalWrite(5, LOW); // подаём на пин светодиода модуля Slot Expander2 «низкий сигнал» expander2.digitalWrite(5, LOW); // подаём на пин светодиода модуля Slot Expander3 «низкий сигнал» expander3.digitalWrite(5, LOW); // ждём пол секунды delay(500); } Прошу прощения код не весь скопировал Добрый день. Только начинаю . Просто повторил проект Slot Expander. Ошибок нет. Но светодиоды не горят. Адреса на модулях проверил. адресация верная.
А с чего бы им гореть, если не подан сигнал? Вы только инициализировали пины как выход, но не включили. Пример работы.
Вопрос. А вот когда нет главного цикла как в этом скетче, что делает процессор ? Компилятор создает какой-то невидимый цикл и уводит туда процессор, или проц тупо останавливается ?
I2C сканер видит платы(3 платы Slot Expander). Адреса совпадают(с адресами на плата и в скетче). У меня собрана схема из UNO Slot и 3 Expander Slot. В модуле UNO Slot светодиод подключен к пин 3 В модулях Expander Slot светодиод подключен к пин 5. Сканером проверил адреса. Адреса совпадают. Сканер видит 3 модуля.
как уже сказали, слоты с одинаковым адресом вместе работать не будут. Нужно назначить каждому уникальный адрес, как описано в разделе "Смена адреса устройства" в описании платы http://wiki.amperka.ru/products:slot-expander
Как это адреса одинаковые? Я поменял адреса. Делал как в примерах в Вики. И уже с прошитыми адресами собрал то что описал выше. По поводу по отдельности. Я брал UNO Slot и Expander Slot. Устаналивал сканер I2C и проверял с каждой платой отдельно. Сканер видит каждую плату. И у каждой платы свой номер . Но собираю все платы вместе и прошиваю скетчем что выложил выше и нечего не работает.
Решение найдено. Выяснил с поддержкой амперки. В коде нужно убрать строку"expander.begin();" и прописать новые строки Код (C++): // Инициализируем объект expander. Для Arduino UNO Slot - adio.begin(&Wire1); expander1.begin(); expander2.begin(); expander3.begin(); и пример из вики начинает работать