РЕШЕНО Uno slot и slot expander

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем otis, 20 апр 2020.

  1. otis

    otis Гик

    Код (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. Ошибок нет. Но светодиоды не горят. Адреса на модулях проверил. адресация верная.
     
    Последнее редактирование: 20 апр 2020
  2. NikitOS

    NikitOS Король шутов Администратор

    А с чего бы им гореть, если не подан сигнал?
    Вы только инициализировали пины как выход, но не включили.

    Пример работы.
     
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Вопрос. А вот когда нет главного цикла как в этом скетче, что делает процессор ? Компилятор создает какой-то невидимый цикл и уводит туда процессор, или проц тупо останавливается ?
     
  4. otis

    otis Гик

    Прошу прощения. Не скопировался весь код. Все поправил. Вот это код что сейчас загружен в плату.
     
  5. parovoZZ

    parovoZZ Гуру

    в любой си программе обязана быть функция main().
     
    Ariadna-on-Line нравится это.
  6. NikitOS

    NikitOS Король шутов Администратор

    Ну а код из примеров работает?
     
  7. otis

    otis Гик

    Нет. Если бы работал то я бы не писал сюда.
     
  8. NikitOS

    NikitOS Король шутов Администратор

    А I²C сканнер видит модуль?
     
  9. otis

    otis Гик

    I2C сканер видит платы(3 платы Slot Expander). Адреса совпадают(с адресами на плата и в скетче).
    У меня собрана схема из UNO Slot и 3 Expander Slot. В модуле UNO Slot светодиод подключен к пин 3
    В модулях Expander Slot светодиод подключен
    к пин 5. Сканером проверил адреса. Адреса совпадают. Сканер видит 3 модуля.
     
    Последнее редактирование: 21 апр 2020
  10. NikitOS

    NikitOS Король шутов Администратор

    Устройства с одинаковым адресом не будут работать. По отдельности что?
     
    b707 нравится это.
  11. b707

    b707 Гуру

    как уже сказали, слоты с одинаковым адресом вместе работать не будут. Нужно назначить каждому уникальный адрес, как описано в разделе "Смена адреса устройства" в описании платы
    http://wiki.amperka.ru/products:slot-expander
     
  12. otis

    otis Гик

    Как это адреса одинаковые? Я поменял адреса. Делал как в примерах в Вики. И уже с прошитыми адресами собрал то что описал выше.
    По поводу по отдельности.
    Я брал UNO Slot и Expander Slot. Устаналивал сканер I2C и проверял с каждой платой отдельно. Сканер видит каждую плату. И у каждой платы свой номер .
    Но собираю все платы вместе и прошиваю скетчем что выложил выше и нечего не работает.
     
  13. otis

    otis Гик

    Решение найдено. Выяснил с поддержкой амперки.
    В коде нужно убрать строку"expander.begin();" и прописать новые строки
    Код (C++):
     // Инициализируем объект expander. Для Arduino UNO Slot - adio.begin(&Wire1);
      expander1.begin();
      expander2.begin();
      expander3.begin();
    и пример из вики начинает работать