8 сегментный индикатор с общим анодом

Тема в разделе "Arduino & Shields", создана пользователем Arsenii, 16 сен 2012.

  1. mcureenab

    mcureenab Гуру


    Код (C++):
    byte leds[] = {7, 8, 0xFF}; // Группа пинов. -1 = конец массива.

    void led_on(
      const byte pin,
      const byte *leds
    // Включает пин pin и выключает остальные пины в массиве leds.
    // Последний элемент массива leds == 0xFF.
    // Если 0xFF == pin, все пины выключаются.
    )
    {
        while( 0 <= *leds ){
            digitalWrite(*leds, *leds == pin ? HIGH : LOW);
            ++leds;
        }
    }

    void loop(){
    ...
      byte pin = 0xFF;
      int val = analogRead(A0);
        if         (val < 100) pin = 7;
        else if (val < 200) pin = 8;
        led_on(pin, leds);
    ...
    }
     
    Последнее редактирование: 16 фев 2017
  2. mcureenab

    mcureenab Гуру

    Если функция достаточно линейная, то реально. Но чем резисторы подбирать, проще код настроить на то что есть. Для десятка резисторов (класса 5 - 10 %) думаю без проблем напряжение будет получаться далеко от порогов.
     
  3. mcureenab

    mcureenab Гуру

    Как то так. 0, 1023 возвращает analogRead. 0 - 1 крайние элементы массива leds (пины 7 и 8).
    Код (C++):

    char leds[]={7, 8, -1};// Группа пинов. -1 = конец массива.

    ...

    void loop(){
    ...
        int val = analogRead(A0);
        led_on(leds[map(val, 0, 1023, 0, 1)], leds); // led_on из предыдущего примера
    ...
    }

     
     
    Последнее редактирование: 16 фев 2017
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    Тип byte не может принимать значение "-1".
     
  5. thesatellite

    thesatellite Нерд

    Короче пойду читать, читать и читать, как завещал ленин)))
     
  6. mcureenab

    mcureenab Гуру

    Ленин, с большой буквы. Поправил byte на char примерах.
     
  7. mcureenab

    mcureenab Гуру

    Вы с висячим A0 когда все герконы разомкнуты что решили. Есть схема с номиналами резисторов?
     
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

    Накуя? Что byte, что char, что boolean - у всех диапазон 0...255.
     
  9. thesatellite

    thesatellite Нерд

    Я знаю. Не уважаю ни его, ни его труды. Поэтому так написал
     
  10. thesatellite

    thesatellite Нерд

    Думаю номиналы не так важны, но в среднем 1кОм, штук 7-6. Мне нужно вот что сделать: хочу чтобы когда передачи на КПП включал, загоралась нужная скорость. Дело в том что мне хочется самому это сделать. Так, интересно. Вчера сделал другое) Правда готовый вариант , друг сделал точнее на станции.
     

    Вложения:

    • IMAG0186.jpg
      IMAG0186.jpg
      Размер файла:
      587,3 КБ
      Просмотров:
      495
  11. mcureenab

    mcureenab Гуру

    Не правда ваша. Я даже задумался
    https://www.arduino.cc/en/Reference/Char


    Код (C++):
    typedef uint8_t byte;
    https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/Arduino.h
     
  12. ostrov

    ostrov Гуру

    Хахаха, много прочитал его трудов?
     
  13. thesatellite

    thesatellite Нерд

    Я ж написал: ... ни его труды...))) Суета все сует, одна суете. )) Меня программирование интересует на данный момент, хочу научиться. Посоветуйте чайнику лучше что почитать
     
  14. ostrov

    ostrov Гуру

    Начните с упражнений Амперки в виде минипроектов. А дальше, имея под рукой интернет, можно развиваться бесконечно и по собственному плану.
     
  15. Tomasina

    Tomasina Сушитель лампочек Модератор

  16. thesatellite

    thesatellite Нерд

    Спасибо всем за ответы!!!