Як выкарыстоўваць агульны анод 7-сегментный, 4-разрадны дысплей?

Калі ласка, прыміце гэтае пытанне ў якасці прыкладу да (моему) адказаць ніжэй.

У мяне ёсць 7 сегментный, 4 разрадны святлодыёдны дысплей, але я не маю ні найменшага падання аб тым, як падключыць яго.

Я не разумею розніцы паміж агульным анодам/катодам, і ў мяне няма 2 шпількі за святлодыёд, што дзіўна. Зусім нядаўна быў выдалены пытанне на «7 сегментных 4-значны агульны анод». У гэты самы момант я друкаваў адказ.

Хоць, я ўсё яшчэ хачу падзяліцца з вамі адказ, або чалавека, які прасіў яго. Калі ласка, праверце/абнавіць свой адказ з больш падрабязнай інфармацыяй. У прыватнасці, хтосьці можа дадаць працоўны код, я не магу ў дадзены момант.

6
Існуе на самой справе варыянт для гэтага. Тым не менш, каментары ў маё пытанне і сказаць «другарадную гісторыю». Я адказваў на пытанне, які быў выдалены. І адчуў неабходнасць размясціць свой адказ Neverthless. Так што так, я зрабіў. Але гэта пэўны метад, і я быў адказ перад пытаннем. Так што мае сэнс для мяне. Калі ў вас ёсць сапраўды добры пытанне (і адказ), я мог бы рэкамендаваць толькі вас зрабіць тое ж самае, як гэта магло б прыйсці карысным для каго-то ў нейкі момант.
дададзена аўтар dotnetengineer, крыніца
Проста цікава. Вы задаць пытанне, так што вы можаце адказаць на гэта?
дададзена аўтар anu, крыніца

2 адказы

Падобна таму, як дадатак да адказу Паўла, я напісаў невялікую праграму, каб паказаць як кіраваць 7-сегментный 4-разрадны дысплей яго постаці:

wiring schematic

Гэта на самай справе агульны дысплей катода, так што праграма прадугледжвае, што, а таксама канкрэтнай праводкі на малюнку. цікавая частка клавішы refresh_display() функцыя, якая павінна выклікацца перыядычна. Алгарытм выглядае наступным чынам:

    <�Літый> прывядзення ў дзеянне 7 аноды з адпаведнымі сігналамі для аднаго з лічбаў мы хочам паказаць
  • набор Высокія выхад, які кіруе катодам гэтай лічбы праз NPN транзістар
  • <�Літый>, пачакайце на працягу 2,5 мс (пры частаце абнаўлення 100 Гц) </літый> <�Літый> набор LOW катод-кантроль выхаду
  • Пераход да наступнай лічбе.

Варта адзначыць, што чаканне будзе зроблена без блакавання цэнтральнага працэсара, па выкарыстоўваючы методыку, апісаную ў Скачок Без Delay Arduino падручнік. Вось праграма:

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 Arduino бібліятэка. Гэтая бібліятэка з'яўляецца больш агульным, чым прыклад кода вышэй, так як ён не робіць здагадак аб штыфтоў, якія выкарыстоўваюцца. але вялікі Розніца паміж бібліятэкай і гэтым кодам знаходзіцца ў шляху таймінгі кіруюцца:

  • Бібліятэка кіруецца перапынення ад перапаўнення таймера 2. гэта павінна забяспечвае вельмі ўстойлівую сінхранізацыю, за кошт наяўнасці аднаго таймера прысвечаны гэтай працы.
  • Гэты код залежыць ад які выклікае карыстальніка refresh_display() часта дастаткова. Яна не патрабуе спецыялізаваных апаратных рэсурсаў, але не добра гуляць з праграмамі, якія займаюць занадта шмат часу, каб пятля() : ён не будзе, як вы называеце Затрымка() .
6
дададзена
Вось чаму мне падабаецца з адкрытым зыходным кодам рэчы. Вы можаце падзяліцца нагрузкі з астатнім светам і стварыць нешта сапраўды добрае. Які затым сумесна з астатнім светам зноў :) Вы можаце многаму навучыцца ў іншых распрацоўшчыкаў, і што веды будуць сталымі, а не проста схавана ад усіх астатніх.
дададзена аўтар dotnetengineer, крыніца

Паспрабую вас праз поўныя асновы і г.д. святлодыёдаў У 4-х лічбаў дысплеі 7-сегмента ўяўляюць сабой спалучэнне некалькіх «LED тэхнікі".

<�Моцны> Падключэнне святлодыёдаў

Святлодыёды, або святловыпрамяняльныя дыёды, з'яўляюцца адным з пацешных рэчаў Arduino.

Па сутнасці, яны простыя ў выкарыстанні, харчаванне іх, і яны будуць загарацца.

Яны могуць раздражняць, таму што яны маюць нейкае палярнасць, а гэта азначае, што яны будуць працаваць толькі тады, калі вы тэлеграму іх права. Калі адваротнае станоўчае і адмоўнае напружанне, яны не загараюцца наогул.

Раздражняе, як гэта, гэта таксама вельмі карысна.

<�Моцны> катод супраць анодзе

На традыцыйным святлодыёдам, доўгі провад з'яўляецца (+), анодам. Іншы вядучы з'яўляецца (-) катода.

«Ці, калі хто-то абрэзаны ногі, паспрабуйце знайсці плоскі край на вонкавым корпусе святлодыёда. Штыфт бліжэйшых да плоскай абзе будзе адмоўным, катодным кантактным.» - SparkFun

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

Sparkfun

<�Моцны> Асноўныя праводкі

Я не ўпэўнены, калі гэта правільна, так як я разарваў малюнак з Інтэрнэту.

Basic LED wiring

Падключэнне святлодыёда даволі лёгка, Анод (+) падключаецца да станоўчага напрузе, пераважна праз токоограничивающий рэзістар. Катод (-) падключаецца да зямлі (з токоограничивающим рэзістарам, калі вы не адзін на станоўчай баку).

Рэзістар для абмежавання току будзе пазбегнуць святлодыёда ад кароткага замыкання, пашкодзіць святлодыёд або мікракантролер/Arduino.

Некалькі святлодыёдаў, матрыцы RGB святлодыёды

З LED множным ты часта іх з станоўчым бокам, звязанай (+), «агульны Анод» або ўсе звязаныя з (-) «агульным катодам».

У асноўным гэта спусціцца да гэтага.

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
дададзена