Светодиоды: разница между общим анодом и общим катодом
В чем разница в использовании общего анода и общего катода 7-го сегмента при взаимодействии с Arduino? Как вы можете изменить код, если нам нужно добавить еще один 7-сегментный дисплей?
Как вы можете изменить код, чтобы иметь счетчик в обратном направлении (от 0 до 9)?
const int ANODE = 2;
const int LED1 = 3;
const int LED2 = 4; // pin for led 2
const int LED3 = 5; // pin for led 3
const int LED4 = 6; // pin for led 4
// now bottom row
const int LED5 = 7;
const int LED6 = 8;
const int LED7 = 9;
const int LED8 = 10;
int DELAY = 0;
void setup() {
pinMode(ANODE, OUTPUT); // common anode is obviously an output
pinMode(LED1, OUTPUT); // led are output for low will be on
pinMode(LED2, OUTPUT); // led 2 is output
pinMode(LED3, OUTPUT); // led 3 is output
pinMode(LED4, OUTPUT); // led 4 is output
pinMode(LED5, OUTPUT); // led 5 is output
pinMode(LED6, OUTPUT); // led 6 is output
pinMode(LED7, OUTPUT); // led 7 is output
pinMode(LED8, OUTPUT); // led 8 is output
}
void loop(){
if (DELAY == 300){
delay(100000);
}
digitalWrite(ANODE, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
digitalWrite(LED6, HIGH);
digitalWrite(LED7, HIGH);
digitalWrite(LED8, HIGH);
delay(1000);
digitalWrite(LED1, LOW);
delay(500);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
delay(500);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
delay(500);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, LOW);
delay(500);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
delay(500);
digitalWrite(LED5, HIGH);
digitalWrite(LED6, LOW);
delay(500);
digitalWrite(LED6, HIGH);
digitalWrite(LED7, LOW);
delay(500);
digitalWrite(LED7, HIGH);
digitalWrite(LED8, LOW);
delay(500);
digitalWrite(LED8, HIGH);
delay(100);
DELAY = DELAY + 150;
}
@user13535, 👍6
5 ответов
Вы можете легко проверить это в 123D схемах, проверьте это: https://123d.circuits.io/circuits/1019227-7-segment-circuit
Нажмите кнопку Запустить моделирование, а затем нажмите на кнопки, чтобы осветить соответствующий сегмент.
7-сегмент представляет собой упакованный набор из 8 светодиодов (7 цифровых сегментов и 1 десятичная точка). Общий анод означает, что анодная (положительная) сторона всех светодиодов электрически соединена на одном выводе, и каждый катод светодиода имеет свой собственный вывод. Таким образом, включение любого конкретного сегмента будет включать в себя подачу тока от этого общего анодного (положительного) вывода к конкретному катодному (отрицательному) выводу для нужного сегмента.
Общий катод означает, что катоды всех светодиодов являются общими и подключены к одному контакту. Анод для каждого светодиода имеет свой собственный контакт. Таким образом, приведение в действие одного из них означает подачу тока от определенного анодного (положительного) контакта для нужного сегмента к общему катодному контакту.
Способ, которым вы погружаетесь на 7-сегмент, включает использование отдельного контакта для управления каждым сегментом, поэтому вы используете 8 контактов Arduino для управления дисплеем. У вас закончатся цифровые контакты, если вы попытаетесь добавить второй 7-сегмент. Есть несколько способов решить эту проблему. Один из них состоит в том, чтобы добавить драйвер из 7 сегментов, такой как CD4511. Это ограничивает вас возможностью отображения только цифровых цифр, но использует только 4 вывода Arduino на 7 сегментов.
Другой, более универсальный способ-это добавить чип последовательного ввода для параллельного вывода (например, 74HC595) для привода 7-сегментного. Для этого требуется всего два вывода от Arduino (данные и часы), и они могут быть соединены цепью, чтобы иметь несколько 7-сегментов, управляемых от тех же 2-х выводов.
Вот пример использования метода драйвера CD4511: https://123d.circuits.io/circuits/912097 Вот пример метода последовательного ввода-вывода (74HC595): https://123d.circuits.io/circuits/583641, @J. Brooks
Потратил час, пытаясь разобраться в этом, кажется, у меня есть обычные анодные светодиоды. Поэтому вам нужно подключить анод к 5 В (на arduino), затем напряжения меняются местами, поэтому используйте 255 В вместо v.
Я думаю, что общий катод будет легче понять и запрограммировать для него.
Чтобы добавить к существующим ответам:
Для arduino с [его] симметричной способностью к источнику и потоку точно такого же количества тока, то нет предпочтительного способа.
- Grumpy_Mike на форумах Arudino
Тем не менее, если вы используете схему драйвера, такую как MAX7219 (которая значительно упрощает сопряжение многих цифр и требует гораздо меньшего количества контактов), используйте ту, которая указана в техническом описании. Например, MAX7219 предназначен для управления светодиодными дисплеями с общим катодом.
- Отображение двоичных данных на светодиодах
- Акцептант векселей ИКТ
- if/else в digitalRead не выполняется в части else
- DHT11 не работает со светодиодом в arduino
- я не могу работать над своим небольшим проектом
- Вопрос об ошибке в этом коде
- Кастомная функция переключения светодиодов: один из трех светодиодов работает неправильно
- Как использовать SPI на Arduino?
Я не уверен, что это вообще отвечает на вопрос., @CharlieHanson