ws2812b аналоговое включение

Тема в разделе "Флудилка", создана пользователем Djo, 24 мар 2019.

  1. Djo

    Djo Нуб

    добрый день! сразу говорю что я человек мало посвященный в программирование на с+ так что тапками сразу не кидайте.
    хотел бы попросить у вас о помощи дописать код.
    есть необходимость включения ардуино через аналоговый порт т.к. обычное включение происходить с задержкой а необходимо моментальное реагирование.

    Код (C++):
    // NeoPixel Ring simple sketch (c) 2013 Shae Erisson
    // released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library


    #include <Adafruit_NeoPixel.h>
    #ifdef __AVR__
      #include <avr/power.h>
    #endif

    // Which pin on the Arduino is connected to the NeoPixels?
    // On a Trinket or Gemma we suggest changing this to 1
    #define PIN            6

    // How many NeoPixels are attached to the Arduino?
    #define NUMPIXELS      5

    // When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
    // Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
    // example for more information on possible values.
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

    int delayval = 30; // delay for half a second

    void setup() {
      // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
    #if defined (__AVR_ATtiny85__)
      if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
    #endif
      // End of trinket special code

      pixels.begin(); // This initializes the NeoPixel library.
    }

    void loop() {

      // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

      for(int i=0;i<NUMPIXELS;i++){

        // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
       
       
        pixels.setPixelColor(0, pixels.Color(100,50,0)); // Moderately bright green color.
        pixels.show(); // This sends the updated pixel color to the hardware.
        delay(delayval); // Delay for a period of time (in milliseconds).
       
        pixels.setPixelColor(1, pixels.Color(100,100,0)); // Moderately bright green color.
        pixels.show(); // This sends the updated pixel color to the hardware.
        delay(delayval); // Delay for a period of time (in milliseconds).
       
        pixels.setPixelColor(2, pixels.Color(50,50,50)); // Moderately bright green color.
        pixels.show(); // This sends the updated pixel color to the hardware.
        delay(delayval); // Delay for a period of time (in milliseconds).
       
        pixels.setPixelColor(3, pixels.Color(50,100,0)); // Moderately bright green color.
        pixels.show(); // This sends the updated pixel color to the hardware.
        delay(delayval); // Delay for a period of time (in milliseconds).
       
        pixels.setPixelColor(4, pixels.Color(100,50,0)); // Moderately bright green color.
        pixels.show(); // This sends the updated pixel color to the hardware.
        delay(delayval); // Delay for a period of time (in milliseconds).



      }
    }
     
  2. parovoZZ

    parovoZZ Гуру

    WS2812B не предусматривает аналоговое управление. Сложно ознакомиться с предметом?
     
  3. Djo

    Djo Нуб

    но ардуино то предусматривает.
    подать на ардуино сигнал с выключателя то есть 5в и запустить основной код.
    так же можно ?
     
  4. parovoZZ

    parovoZZ Гуру

    Тогда не понимаю, о каком аналоговом включении идет речь.
     
  5. Djo

    Djo Нуб

    извиняюсь возможно я не так выразился создавая данную тему.
    мне нужна помощь в дополнении кода для управления ардуиной и включения основного кода через аналоговый выход платы.
    то есть при подаче на аналоговый выход 5в через рокерную кнопку выключался код а при выключение выключался.
    как то так вроде.
     

    Вложения:

    • 123.jpg
      123.jpg
      Размер файла:
      635,5 КБ
      Просмотров:
      190
  6. Daniil

    Daniil Гуру

    Если вы собираетесь типизировать выводы по типу воздействия, то хотелось бы знать зачем.
    Если вы собираетесь типизировать вывод по направлению передачи данных, то хотелось бы чтобы это было правильно.
    В чем проблема в заданный вами промежуток времени проверять уровень на выводе и действовать соответственно?
    Почему не рубить питание?
     
  7. Djo

    Djo Нуб


    просто необходимо при переключении выключателя запустить программу код которой выше. при вкл\выкл питания есть задержка на включение ардуины!
    сама ардуина будет постоянно на питании сидеть.
     
  8. Daniil

    Daniil Гуру

    Попробуйте прерывания, только их нет на "аналоговых" (там где есть АЦП) выводах (ведь вы про них говорили?)
    или в цикле проверять значение напряжения.
     
  9. KindMan

    KindMan Гик

    Оберните цикл for в
    Код (C++):
    If (digitalRead(A0) == HIGH) {

    }
    А0 к минусу подключите через резистор от килоома.
     
  10. parovoZZ

    parovoZZ Гуру

    Очевидно, что при выключении питания МК включиться не может. Выключение МК определяется остаточными зарядами в емкостях цепей питания. Скорость включения МК зависит от выставленных фьюзов и скоростью инициализации программы. И вот здесь настал момент, когда самое время отказаться от абдурины, ибо ее тормоза лечатся исключительно эктомией.
     
  11. znamen

    znamen Guest

    Я не могу понять паровоза. Откуда столько ненависти к ардуино? Я сам не очень большой сторонник этого
    девайса,но тем не менее спокойно его терплю. Паровоз даже дал ей оскорбительное название. Паровоз,она
    тебе,что на ногу упала? Или ты об неё поцарапался?
     
  12. ИгорьК

    ИгорьК НЕ Модератор

    От неумения понять эту замечательную платформу: все пытается объяснить, что ложка лучше вилки.

    Когда я только взял в руки Ардуино, столкнулся с микросхемой DS2438. Ничего особо не понимая, взял библиотеку и сделал устройство. Работающее.

    Прошло время, перешёл из ясельной группы детского сада в старшую, уже с "высоты" посмотрел на эту библиотеку и, разобравшись как она работает, поняв все ее косяки, сделал свою. Переписал полностью.

    Я благодарен труду того неизвестного человека, который помог мне решить задачу дважды.
     
    Последнее редактирование: 25 мар 2019
  13. parovoZZ

    parovoZZ Гуру

    не ты один.

    это не я.

    Девайс, кстати, не плох. Я на нем программатор сделал, за который даже китайцы просят 20$/

    Терпеть не могу столь агрессивное продвижение по сути игрушки. Посмотрите на темы на абдурино-форумах - люди-нули даже не пытаются разбраться в предмете, а только - вы должны помочь, вы обязаны рассказать, памагите, смогу ли я?, и пр. пр. пр...
     
  14. znamen

    znamen Guest

    Та я не возражаю. Мне лично ардуино нравится по единственной причине. Много вариантов для"копипаще
    ния" Вот например ИгорьК пишет,что Паровоз сравнивает ложку с вилкой и что ложка лучше вилки. Я например вилкой расковырять проблему(ардуино) ,а кушать при желании могу и ложкой( STM и пр)
     
  15. parovoZZ

    parovoZZ Гуру

    Я не настолько привередливый. Могу и руками, если что.
     
  16. ИгорьК

    ИгорьК НЕ Модератор

    Ардуино, по сути, - социальная сеть.
     
  17. znamen

    znamen Guest

    А в социальной сети можно больше идей стырить,потому что болтают больше, в отличие от узко направленных форумов.
     
  18. KindMan

    KindMan Гик

    Как говорил Иехи́ел-Лейб Арьевич Фа́йнзильберг- Идея, товарищи, — это человеческая мысль, облечённая в логическую шахматную форму в библиотеки для ардуино, и нужно много мыслей, чтобы их не использовать.
     
  19. parovoZZ

    parovoZZ Гуру

    Только не сеть, а клуб.
     
  20. Djo

    Djo Нуб


    Спасибо помогло. Правда с дописыванием еще пары строк)


    А еще заметил разницу во включении самой абдурины uno (как называет ее старый локомотив) :
    чип формфактора dip28 время включения примерно 2-4сек
    чип TQFP32 включение моментальное без задержек
    (с платой nano не проверял т.к нету)
    Обе китайские и покупались у одного продавца.
    Так что спасибо еще раз за совет но буду использовать свой код без изменений с той платой которая включается без задержки.