de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 Paul
Paul
Вопрос

Как использовать общий анод 7-сегментный, 4-значный дисплей?

Пожалуйста, примите этот вопрос в качестве примера к (моему) ответу ниже.

У меня 7-сегментный 4-значный светодиодный дисплей, но я не знаю, как его подключить.

Я не понимаю разницы между общим анодом/катодом, и у меня нет двух контактов на светодиод, что странно. Совсем недавно вопрос об «7-сегментном 4-разрядном общем аноде» был удален. В тот самый момент я набрал ответ.

Хотя, я все еще хочу поделиться с вами своим ответом или человеком, который его просил. Пожалуйста, уточните/обновите мой ответ с дополнительной информацией. В частности, может кто-то добавить рабочий код, я не могу сейчас.

9 2016-03-09T12:27:14+00:00 2
Gihan Chathuranga
Gihan Chathuranga
Редактировал вопрос 7-го февраля 2017 в 12:50
Arduino
led
display
multiplexer
rgb-led
7-segment
Sprogz
9-го марта 2016 в 9:45
2016-03-09T21:45:54+00:00
Дополнительно
Источник
Редактировать
#56788706

Как дополнение к ответу Павла, я написал короткую программу для показа как управлять 7-сегментным 4-значным дисплеем его фигуры:

wiring schematic

Это фактически общий дисплей катода, поэтому программа предполагает, что, а также конкретную проводку рисунка. Интересная часть функцию refresh_display () , которая должна вызываться периодически. Алгоритм выглядит следующим образом:

  • диск 7 анодов с соответствующими сигналами для одной из цифр мы хотим показать
  • установите HIGH вывод, который управляет катодом этой цифры через NPN-транзистор
  • подождите 2,5 мс (для частоты обновления 100 Гц)
  • установить <код> LOW выход управляющего катода
  • перейдите к следующей цифре.

Следует отметить, что ожидание выполняется без блокировки CPU, используя метод, описанный в Blink Without Задержка Ардуино руководство. Вот программа:

const int NB_DIGITS     = 4; //4-digit display
const int FIRST_ANODE   = 2; //anodes a..g on pins 2..8
const int FIRST_CATHODE = 9; //cathodes, right to left, on pins 9..12

// Digits to display, from right to left.
uint8_t digits[NB_DIGITS];

// Set all the used pins as outputs.
void init_display()
{
    for (int i = 0; i < 7; i++)
        pinMode(FIRST_ANODE + i, OUTPUT);
    for (int i = 0; i < NB_DIGITS; i++)
        pinMode(FIRST_CATHODE + i, OUTPUT);
}

// This should be called periodically.
void refresh_display()
{
   //Our 7-segment "font".
    static const uint8_t font[10] = {
        //abcdefg
        0b1111110,//0
        0b0110000,//1
        0b1101101,//2
        0b1111001,//3
        0b0110011,//4
        0b1011011,//5
        0b1011111,//6
        0b1110000,//7
        0b1111111,//8
        0b1111011 //9
    };

   //Wait for 2.5 ms before switching digits.
    static uint32_t last_switch;
    uint32_t now = micros();
    if (now - last_switch < 2500) return;
    last_switch = now;

   //Switch off the current digit.
    static uint8_t pos;
    digitalWrite(FIRST_CATHODE + pos, LOW);

   //Set the anodes for the next digit.
    pos = (pos + 1) % NB_DIGITS;
    uint8_t glyph = font[digits[pos]];
    for (int i = 0; i < 7; i++)
        digitalWrite(FIRST_ANODE + i, glyph & 1 << (6-i));

   //Switch digit on.
    digitalWrite(FIRST_CATHODE + pos, HIGH);
}

/***********************************************************************
 * Example usage.
 */

void setup()
{
    init_display();
}

void loop()
{
    uint32_t now = millis();

   //Change the number displayed every second.
    static uint32_t last_change;
    if (now - last_change >= 1000) {
        digits[3] = digits[2];
        digits[2] = digits[1];
        digits[1] = digits[0];
        digits[0] = (digits[0] + 1) % 10;
        last_change = now;
    }

    refresh_display();
}

Павел предоставил ссылку на учебник по Parallax что предполагает использование Multiplex7Seg Библиотека Ардуино. Эта библиотека более общая, чем пример кода выше, поскольку он не делает предположений о используемых штифтах. Но большой разница между библиотекой и этим кодом в том, как тайминги управляются:

  • Библиотека управляется прерыванием переполнения таймера 2. Это должно обеспечивают очень устойчивое время, за счет наличия одного таймера посвященный этой работе.
  • Приведенный выше код полагается на пользователя, вызывающего refresh_display () часто достаточно. Он не требует выделенных аппаратных ресурсов, но он не очень хорошо работает с программами, которые занимают слишком много времени для loop () : it вам не понравится вызывать delay () .
6
0
dotnetengineer
9-го марта 2016 в 12:27
2016-03-09T12:27:14+00:00
Дополнительно
Источник
Редактировать
#56788705

Я попробую и проведу вас через полные основы светодиодов и т. Д. Поскольку 4-значные 7-сегментные дисплеи представляют собой комбинацию нескольких «светодиодных технологий».

Светодиодные индикаторы

Светодиоды или светодиоды - одна из самых интересных вещей в Arduino.

По сути, они просты в использовании, активируют их, и они загорятся.

Они могут быть раздражающими, потому что у них есть какая-то полярность, а это значит, что они будут работать только тогда, когда вы подключите их правильно. Если вы отмените положительное и отрицательное напряжение, они вообще не загорятся.

Раздражающе, это так же полезно.

Катод против анода

На традиционном светодиоде длинным выводом является (+), анод. Другой вывод - (-) катод.

«Или, если кто-то обрезает ноги, попробуйте найти плоский край на внешнем корпусе светодиода. Пинц, ближайший к плоскому краю, будет отрицательным, катодный штырь». - Sparkfun

Source: https://learn.sparkfun.com/tutorials/polarity/diode-and-led-polarity

Sparkfun

Основная проводка

Я не уверен, правильно ли это, так как я разорвал изображение из Интернета.

Basic LED wiring

Проводка светодиода довольно проста, анод (+) подключается к положительному напряжению, предпочтительно через резистор ограничения тока. Катод (-) соединяется с землей (с резистором ограничения тока, если у вас его нет на положительной стороне).

Токоограничивающий резистор предотвратит замыкание светодиода, повреждая светодиод или микроконтроллер/Arduino.

Несколько светодиодов, матриц, светодиодов RGB

С несколькими светодиодами вы часто используете их с положительной стороной, подключенной (+), «общим анодом» или все, подключенными к (-) «общему катоду».

В принципе, это сведено к этому.

RGB common cathode/anode

Для общего катода вы подаете ток на контакты, которые вы хотите включить.

Для общего анода вы пропускаете ток через светодиод.

Мультиплексирование (несколько цифр, 7 сегментов)

You should check out the tutorial of parallax: http://learn.parallax.com/4-digit-7-segment-led-display-arduino-demo

Parallax 4digit7seg

Когда у вас много светодиодов, часто разумно «мультиплексировать» их. Обычно вы быстро проходите «группы» светодиодов, так что похоже, что все они одновременно включены.

Обычно вы опускаетесь от колонки светодиодов и тока питания к отдельным светодиодам ряда.

Или вы подаете ток в столбец светодиодов и ток стока от отдельных светодиодов ряда.

Чтобы вы могли выбрать, какой столбец активироваться, и какие светодиоды этой колонки загорятся. Быстрое изменение этих столбцов/строк позволит вам управлять несколькими светодиодами с гораздо меньшим количеством контактов.

Для этого даже есть контроллеры дисплея, если вы не хотите заботиться о переключении в вашем программном обеспечении.

Поэтому, когда у вас есть 4-значный мультиплексированный сегмент 7, общий анод

Диаграмма будет примерно такой:

enter image description here

http://www.mytutorialcafe.com/Microcontroller%20Application%20C%207segmen.htm

5
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 1 день назад
2
Hideo Nakagawa
Зарегистрирован 2 дня назад
3
Sergiy Tytarenko
Зарегистрирован 4 дня назад
4
shoxrux azadov
Зарегистрирован 6 дней назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
arduino.stackexchange.com
под лицензией cc by-sa 3.0 с атрибуцией