Ардуино uno slot и slot expander

Тема в разделе "Arduino & Shields", создана пользователем otis, 11 апр 2020.

  1. otis

    otis Гик

    Код (C++):
    // библиотека для работы I²C
    #include <Wire.h>
    // библиотека для работы с модулем Slot Expander (I²C IO)
    #include <GpioExpander.h>
    // создаём объект expander класса GpioExpander по адресу 43
    GpioExpander expander(43);
    boolean buttonWasUp = true;  // была ли кнопка отпущена?
    boolean ledEnabled = false;  // включен ли свет?
    // пин подключения светодиода
    #define EXPENDER_LED_PIN 2
    // пин подключения кнопки
    #define EXPENDER_KEY_PIN 5
    void setup()
    {
      // включаем I²C. Для Arduino Due - Wire1.begin();
      Wire.begin();
      // Инициализируем объект expander. Для Arduino Due - adio.begin(&Wire1);
      expander.begin();
      // настраиваем пин светодиодов в режим выхода
      expander.pinMode(EXPENDER_LED_PIN, OUTPUT);
      expander.pinMode(EXPENDER_KEY_PIN, INPUT_PULLUP);
     
    }
    void loop()
    {
      // определить момент «клика» несколько сложнее, чем факт того,
      // что кнопка сейчас просто нажата. Для определения клика мы
      // сначала понимаем, отпущена ли кнопка прямо сейчас...
      boolean buttonIsUp = digitalRead(EXPENDER_KEY_PIN);
      // ...если «кнопка была отпущена и (&&) не отпущена сейчас»...
      if (buttonWasUp && !buttonIsUp) {
        // ...может это «клик», а может и ложный сигнал (дребезг),
        // возникающий в момент замыкания/размыкания пластин кнопки,
        // поэтому даём кнопке полностью «успокоиться»...
        delay(10);
        // ...и считываем сигнал снова
        buttonIsUp = digitalRead(EXPENDER_KEY_PIN);
        if (!buttonIsUp) {  // если она всё ещё нажата...
          // ...это клик! Переворачиваем сигнал светодиода
          ledEnabled = !ledEnabled;
          digitalWrite(EXPENDER_LED_PIN, ledEnabled);
        }
    }
    // запоминаем последнее состояние кнопки для новой итерации
      buttonWasUp = buttonIsUp;
    }
    Добрый день. Соединил по сети платка. Перешил адреса(43). На ехпандере синий светодиод моргает( опрос вроде идет но проверить не могу не знаю чем). Код написал( списал из примеров). Код простой. нажал кнопку -загорелся светодиод.
    Ошибок в компиляции нет. Но почему то не работает.
     
  2. b707

    b707 Гуру

    дайте ссылку на описание экспандера и выложите схему, как соединяли
     
  3. otis

    otis Гик

  4. b707

    b707 Гуру

    это вам лучше в поддержку Амперки обратится, на форуме они не бывают.
    Форум - абсолютно отдельная площадка, здесь вряд ли вам помогут - конструкторы Амперки редко кто использует.
     
  5. otis

    otis Гик

    Спасибо. будем писать туда.