Помогите новичку - еще учится .

Тема в разделе "ESP8266, ESP32", создана пользователем Melmorn, 27 июл 2022.

  1. Melmorn

    Melmorn Нуб

    Доброго всем.

    Я новичок в этом деле пока что мигаю светодиодом .

    В общем с примерами по типу Blink ту практически разобрались . Но вопрос встал

    с бегущим огоньком. Тут вопросов нет прогоняем его туда и обратно .

    Захотелось мне это все дело разделить .Что бы светодиоды загорались из центра

    и к центру . Долго искал пример с трудом нашел. И вот тут возник скажем вопрос .

    Потому что на ESP8266 светодиоды горит только половина . И от центра , и к центру .

    А вторая половина нет . Я этот пример собрал в эмуляторе на ардуино и там все в порядке.

    Я понимаю что это моя ошибка только где и как . Потому что на ардуино это работает

    на ESP8266 только на половину .
    Код (C++):
    int led[] {2,4,5,22,23,21}; //  пины подключения светодиодов
    int pin_led =sizeof(led)/sizeof(int); //  длинна массиваа
    void setup() {
      for (int i = 0; i < pin_led; i++) // цикл
        pinMode(i, OUTPUT);  //  пины как выходы
    }
    void loop() {
    int half = pin_led/2; // делим пополам
      for (int j = 0; j < half; j++) {
        int k = pin_led-j-1;
        digitalWrite(j, HIGH); //зажигание следующего светодиода
        digitalWrite(k, HIGH); //зажигание следующего светодиода
        delay(300); //задержка 300мсек
        digitalWrite(k, LOW); //гасим все светодиоды
        digitalWrite(j, LOW); //гасим все светодиоды
    }
    }
     
  2. Airbus

    Airbus Радиохулиган Модератор

    А в esp8266 есть пины 22,23,21?
    [​IMG]
     
  3. Melmorn

    Melmorn Нуб

    Таких пинов нет . Это я с эмулятора на ESP32 свой код взял . Но суть думаю таже . Просто опытным путем выяснил что пины в массиве надо перечислять в порядке подключения светодиодов. И дело в том что пополам то делит но работает тока одна половина .
    Просто бегущий работает https://wokwi.com/projects/337919766573351507
     
  4. ИгорьК

    ИгорьК Гуру

    Если ты, друже, будешь с такими ошибками такой фигней лезть на форум - ничему не научишься.
    Измени код так, и смотри его в эмуляторе. И попробуй сам понять в чем дело. Это простая логика.

    Код (C++):
    int led[] {2,4,5,22,23,21}; //  пины подключения светодиодов
    int pin_led =sizeof(led)/sizeof(int); //  длинна массиваа
    void setup() {
      Serial.begin(115200);
      for (int i = 0; i < pin_led; i++) // цикл
        pinMode(i, OUTPUT);  //  пины как выходы
    }
    void loop() {
    int half = pin_led/2; // делим пополам
      for (int j = 0; j < half; j++) {
        int k = pin_led-j-1;
        Serial.println("===================");
        Serial.print("j is ");
        Serial.println(j);
        digitalWrite(j, HIGH); //зажигание следующего светодиода
        Serial.print("k is ");
        Serial.println(k);
        digitalWrite(k, HIGH); //зажигание следующего светодиода
        delay(1000); //задержка 1сек
        Serial.print("j is ");
        Serial.println(j);
        digitalWrite(k, LOW); //гасим все светодиоды
        Serial.print("k is ");
        Serial.println(k);
        digitalWrite(j, LOW); //гасим все светодиоды
        delay(10000); //задержка 10сек
      }
    }
    Установи задержку в 5 или 10 секунд, если в одну мало.
     
    Последнее редактирование: 27 июл 2022
  5. Airbus

    Airbus Радиохулиган Модератор

    А на ардуино есть? Там ИМХО всего 19 ? И потом Вы писали про esp8266
    И еще вопрос—а какой пин должен загореться если 5 делить на 2? Или 23 или 21? Почему именно они? Других нет?
     
  6. ИгорьК

    ИгорьК Гуру

    Ну, смотри, горемыка. Так все мигает:

    upload_2022-7-27_11-15-50.png

    А в ардуино работало, видимо, потому что массив был от 1 до 6 или что-то типа.
    Плюс инициация пинов - там тоже ошибка.
     
  7. Melmorn

    Melmorn Нуб

    Всем спасибо . Что достали из замкнутого круга .

    Я не особо то по форумам . По скольку до этого как то находил ответы и решались вопросы . Поэтому наверное и объяснить не могу толком . Просто после очередной

    пайки и перепайки своего гитарного усилка , и очередной автомагнитолы .

    Решил что в хобби надо сделать шаг вперед . И этот шаг заставил :) зарегистрироваться

    на форуме и спросить .

    Ладно всем спасибо – добра в ваш дом .
     
  8. Airbus

    Airbus Радиохулиган Модератор

    Таки не понял что сей код делает. И где в Ардуино пины 21,22,23? Загрузил в настоящую Ардуину ибо не люблю резиновых женщин симуляторов ибо они всегда симулируют. Вот что выдало в порт.
    [​IMG]
    Три порта работают а три нет. Все как и писал ТС
     
  9. ИгорьК

    ИгорьК Гуру

    Этожеж esp32. В ее и грузить надо.

    А дальше - см. фото что я показал.

    1. Товарищ ТС инициализирует не элементы массива ног, а цифери, что частично совпадают с ногами, частично - нет

    2. А потом дёргает цифры, а не ноги массива. Потому половина у него мявкает (что случайно совпала и случайно прошла инициализацию), половина - нет.

    Вообще такие совпадения могут зело удивлять новобранца.