Навигационный стенд на адресной ленте

Тема в разделе "Arduino & Shields", создана пользователем Altegro, 23 дек 2019.

  1. Altegro

    Altegro Нуб

    Я конечно дико извиняюсь, но с ардуино я работаю первый раз в жизни, поэтому пожалуйста не бейте :)

    Суть такая, у меня есть адресная светодиодная лента WS2812B, дисплей "мэлт mt-16s2h", ИК приёмник с пультом и Arduino Uno. Проблема у меня только с частью прошивки. Решил использовать библиотеки FastLED для ленты и IRremote для инфрокрасника. Две недели курил мануалы и думалка уже кипит, а тут уже и сроки горят.

    Вся эта тема должна работать так: на пульте набираем номер кабинета, всё это отображается на дисплее (цифры которые набираешь), после чего нажимаешь ок и загораются по одному светодиоду на определённом участке светодиодной ленты. Потом после простоя через две минуты всё сбрасывается, либо для сброса будет использоваться кнопка на пульте.

    Я просто не понимаю в каком направлении двигаться с этой конструкцией. Все гайды что я находил тяжело понять начинающему. Поэтому думал кто-нибудь напишет какие части библиотек мне нужны и в какой последовательности их запихнуть в ардуино.
     
  2. a1000

    a1000 Гуру

    Выражайтесь яснее. Светодиоды любые? Или они что-то должны изобразить? Из вашего описания совсем не понятно что вы хотите сделать в итоге.
     
  3. DetSimen

    DetSimen Guest

    И при этом, видима, совершенно бесплатно?
     
  4. Altegro

    Altegro Нуб

    Ну допустим я ввожу на пульте 12 и нажимаю ок, после чего загораются светодиоды 4,5,6,7,20 с интервалом в пол секунды.
     
  5. DetSimen

    DetSimen Guest

    Тогда забей. Если ты Ардуину видишь первый раз в жизни, за обозримые сроки тебе самому это написать не удасца.
     
  6. Altegro

    Altegro Нуб

    Если бы мог забить то так бы и сделал. Я год назад писал простенькие проги на яве, думаю тут принцип схож, но за год очень многое забыл, думал тут кто нибудь подкинет материал хотя бы по инфракраснику. С FastLed я более менее разобрался но не знаю как это всё в кучу связать.
     
  7. NikitOS

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

    Посмотрите проекты AlexGyver`a, в которых используются ИК
    В каком-нибудь найдется то, что нужно
     
  8. Airbus

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

    Что за девайс такой???Шо вiн робит?
     
    Hacker.b.kul нравится это.
  9. Airbus

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

    Смысл такой-принимаешь код по IR.Далее сверяешь его с запрограммироваными кодами оператором switch-case если совпал то выводишь на LCD что угодно и зажигаешь нужные адресные светодиоды нужным цветом.
     
    Tomasina и Altegro нравится это.
  10. DIYMan

    DIYMan Guest

    Простой конечный автомат. В одном состоянии - анализируем коды с пульта, показываем на семисегментнике введённый номер. Как только номер введён (либо нажатием на кнопку ОК на пульте, либо по истечение N времени после ввода последней цифры) - переключаемся на ветку индикации пути. После окончания индикации - переключаемся на ветку ввода номера.

    Псевдокод. Подчёркиваю - псевдокод:
    Код (C++):
    typedef enum
    {
        msEnterNumber,
        msDrawWay,

    } MachineState;

    MachineState state;
    int number = 0;

    void setup()
    {
    }

    void loop()
    {
        switch(state)
        {
            case msEnterNumber:
            {
                int code = IR.getCode();
                if(code == OK)
                {
                    state = msDrawWay;
                }
                else if(code >= 0 && code <= 9)
                {
                    number *= 10;
                    number += code;
                    sevenSegment.display(number);
                }
            }
            break;

            case msDrawWay:
            {
                int diodePin = getNextDiodePin(number);
                if(diodePin == -1)
                {
                    state = msEnterNumber;
                    number = 0;
                    sevenSegment.clear();
                }
                else
                {
                    digitalWrite(diodePin,LOW);
                    delay(500);
                }
            }
            break;
        }
    }
    Без delay - чуть сложнее логика. Состояния конечного автомата - можно добавлять, чтобы расширить функционал до требуемого.
     
    Daniil, ИгорьК, Airbus и ещё 1-му нравится это.
  11. DIYMan

    DIYMan Guest

    Под этот код нужны натур-мозги :D
     
    Hacker.b.kul и DetSimen нравится это.