Урок 6. Счётчик посетителей

В картинках

После этого урока устройство готово: два табло — «внутри» (вошёл +1, вышел −1) и «всего зашло» (только +1), кнопка «Сброс». Четыре CD4029, четыре CD4511, два луча и две CD4011.


6.1. Идея: два табло на одних лучах

  • «Внутри»: такт — BOTH, направление — IN. Вошёл — +1, вышел — −1;
  • «Всего зашло»: такт тот же, направление всегда вверх, а счёт разрешён (CI = 0) только при входе — CI = OUT.

Новых вентилей для второго табло не нужно — всё уже есть на схеме урока 5.

2 лучаE1→R1, E2→R22 × CD4011направлениеBABB2 × CD4029UD = IN2 × CD4511«внутри»2 × CD4029UD = 1, CI = OUT2 × CD4511«всего зашло»BOTHINOUT
Устройство целиком. Лучи → две CD4011: такт BOTH и направление IN/OUT. Табло «внутри» считает вверх при входе и вниз при выходе; «всего зашло» — только вверх, и только при входе. Каждой цифре — свой CD4029 и свой CD4511.

6.2. Идея: две цифры — два счётчика

Единицы и десятки — два CD4029 с общим тактом. Десятки считают, только когда единицы переходят через край: CO единиц → CI десятков. Каждой цифре — свой CD4511 и свой индикатор.

6.3. Идея: «Сброс» держит

«Сброс» — на PE всех счётчиков. Пока на PE единица, CD4029 записывает 0000 и такт у него закрыт: счётчик ничего не считает. Поэтому «Сброс» — это кнопка: нажал и отпустил. Тумблер, оставленный в 1, — табло стоит на 00, что бы ни происходило с лучами.

СбросBOTHтабло0001020304Сброс = 1: такт закрыт, табло 00Сброс = 0: каждый проход — +1
«Сброс» держит. Пока он 1, на PE всех CD4029 единица: они записывают 0000, и такт до них не доходит — люди проходят, а табло стоит на 00. Отпустил — счёт пошёл. Поэтому «Сброс» — кнопка, а не тумблер.

Вся схема одним рисунком — для сборки проводами:

VCCE1R1VCCE2R2СбросNANDCD4011 №1123NANDCD4011 №1564NANDCD4011 №18910NANDCD4011 №1121311NANDCD4011 №2123NANDCD4011 №2564NANDCD4011 №28910NANDCD4011 №2121311CD4029PE1J14J212J313J43CI5BD9UD10CLOCK15Q16Q211Q314Q42CO7VCCVCCCD4511A7B1C2D6LT3BL4LE5a13b12c11d10e9f15g14LCDединицыabcdefgCD4029PE1J14J212J313J43CI5BD9UD10CLOCK15Q16Q211Q314Q42CO7VCCVCCCD4511A7B1C2D6LT3BL4LE5a13b12c11d10e9f15g14LCDдесяткиabcdefgVCCCD4029PE1J14J212J313J43CI5BD9UD10CLOCK15Q16Q211Q314Q42CO7VCCVCCCD4511A7B1C2D6LT3BL4LE5a13b12c11d10e9f15g14LCDединицыabcdefgVCCCD4029PE1J14J212J313J43CI5BD9UD10CLOCK15Q16Q211Q314Q42CO7VCCVCCCD4511A7B1C2D6LT3BL4LE5a13b12c11d10e9f15g14LCDдесяткиabcdefgBABBRESETXAXBSINSOUTOUTINNBOTHBOTHU0U1U2U3COUT0T1T2T3V0V1V2V3COVW0W1W2W3луч A (улица) · канал 1луч B (зал) · канал 2Табло «внутри» — единицыТабло «внутри» — десяткиТабло «всего» — единицыТабло «всего» — десятки
Устройство одной схемой — для сборки проводами; схема прокручивается вбок. NAND подписаны корпусом CD4011 и номерами ног; CD4029 и CD4511 — с ногами TI; значок земли — на GND, красное VCC — на питание.

6.4. Сборка

Проект урока 5 — схема направления на месте. В библиотеке нужны CD4029 и CD4511.

Шаг 1. Кнопка «Сброс»

«Сброс» — на PE всех четырёх счётчиков: пока нажата, они записывают 0000.

ДетальНогаМетка
Button «Сброс»выходRESET

Шаг 2. Табло «внутри»: два CD4029

Первый — единицы (U0–U3), второй — десятки (T0–T3). CLOCK у обоих — BOTH, направление UD — IN: вошёл — +1, вышел — −1. Десятичный счёт (BD = 0). Перенос: CO единиц → CI десятков — десятки считают, только когда единицы переходят 9 → 0 (или 0 → 9 вниз).

ДетальНогаМетка
CD4029PE
Q4
J4
J1
CI
Q1
CO
BD
UD
Q2
J2
J3
Q3
CLOCK
RESET
U3
GND
GND
GND
U0
COU
GND
IN
U1
GND
GND
U2
BOTH
CD4029PE
Q4
J4
J1
CI
Q1
CO
BD
UD
Q2
J2
J3
Q3
CLOCK
RESET
T3
GND
GND
COU
T0
COT
GND
IN
T1
GND
GND
T2
BOTH

Шаг 3. Табло «всего зашло»: ещё два CD4029

Первый — единицы (V0–V3), второй — десятки (W0–W3). Только вверх: UD = VCC. CI единиц — OUT: CI = 0 разрешает счёт, поэтому при входе (OUT = 0) считает, при выходе (OUT = 1) стоит. Новых вентилей не нужно.

ДетальНогаМетка
CD4029PE
Q4
J4
J1
CI
Q1
CO
BD
UD
Q2
J2
J3
Q3
CLOCK
RESET
V3
GND
GND
OUT
V0
COV
GND
VCC
V1
GND
GND
V2
BOTH
CD4029PE
Q4
J4
J1
CI
Q1
CO
BD
UD
Q2
J2
J3
Q3
CLOCK
RESET
W3
GND
GND
COV
W0
COW
GND
VCC
W1
GND
GND
W2
BOTH

Шаг 4. Четыре дешифратора CD4511

ДетальНогаМетка
CD4511B
C
LT
BL
LE
D
A
e
d
c
b
a
g
f
U1
U2
VCC
VCC
GND
U3
U0
Ue
Ud
Uc
Ub
Ua
Ug
Uf
CD4511B
C
LT
BL
LE
D
A
e
d
c
b
a
g
f
T1
T2
VCC
VCC
GND
T3
T0
Te
Td
Tc
Tb
Ta
Tg
Tf
CD4511B
C
LT
BL
LE
D
A
e
d
c
b
a
g
f
V1
V2
VCC
VCC
GND
V3
V0
Ve
Vd
Vc
Vb
Va
Vg
Vf
CD4511B
C
LT
BL
LE
D
A
e
d
c
b
a
g
f
W1
W2
VCC
VCC
GND
W3
W0
We
Wd
Wc
Wb
Wa
Wg
Wf

Шаг 5. Четыре индикатора

Индикатор из урока 4 (ноги a–g уже названы) скопируй ещё три раза (Cmd+C, Cmd+V) — нет его — собери, как в уроке 4. Ставь парами: десятки слева, единицы справа; сверху — «внутри», снизу — «всего зашло». Метки на ноги:

ДетальНогаМетка
Segment LCD «внутри» — десяткиa
b
c
d
e
f
g
Ta
Tb
Tc
Td
Te
Tf
Tg
Segment LCD «внутри» — единицыa
b
c
d
e
f
g
Ua
Ub
Uc
Ud
Ue
Uf
Ug
Segment LCD «всего» — десяткиa
b
c
d
e
f
g
Wa
Wb
Wc
Wd
We
Wf
Wg
Segment LCD «всего» — единицыa
b
c
d
e
f
g
Va
Vb
Vc
Vd
Ve
Vf
Vg

6.5. Проверка

Табло «внутри» — сколько людей сейчас в магазине; «всего зашло» — сколько вошло с последнего сброса.

  1. Нажми Сброс — оба табло 00. «Сброс» — кнопка: пока она нажата (или тумблер в 1), счётчики держат 00 и не считают.
  2. Проведи человека внутрь (как в уроке 5): Alt/⌘ + клик по A, по B — оба табло 01; сними A, сними B.
  3. Ещё раз — 02 / 02.
  4. Выведи человека: B, A, снять B, снять A — «внутри» 01, «всего» 02.
  5. Постой на одном луче и уйди — ничего не меняется.
Что былоВнутриВсего
Сброс0000
вошёл0101
вошёл0202
вышел0102
постоял на луче A0102

Ниже нуля «внутри» не останавливается: 00 − 1 = 99 — так считает CD4029. Утром магазин открывается со «Сброса».


Вставка урока 6 (Cmd+I)

Поверх урока 5. Нужны CD4029 и CD4511. Индикаторы вставка не ставит — четыре копии индикатора урока 4 (шаг «Четыре индикатора»).

# Урок 6 — счётчик посетителей: табло «внутри» (+1 / −1) и «всего зашло» (только +1) на схеме урока 5.# Вставка: Cmd+I поверх урока 5 (нужны CD4029 и CD4511). Индикаторы ставятся руками. # ---------- сброс ----------button{label="Сброс"}(RESET)# ---------- табло «внутри»: CLOCK = BOTH, UD = IN; единицы → CO → CI десятков ----------CD4029(PE=RESET, Q4=U3, J4=GND, J1=GND, CI=GND, Q1=U0, CO=COU, BD=GND, UD=IN, Q2=U1, J2=GND, J3=GND, Q3=U2, CLOCK=BOTH)CD4029(PE=RESET, Q4=T3, J4=GND, J1=GND, CI=COU, Q1=T0, CO=COT, BD=GND, UD=IN, Q2=T1, J2=GND, J3=GND, Q3=T2, CLOCK=BOTH)# ---------- табло «всего зашло»: только вверх (UD = VCC), CI единиц = OUT — на выходе счёт стоит ----------CD4029(PE=RESET, Q4=V3, J4=GND, J1=GND, CI=OUT, Q1=V0, CO=COV, BD=GND, UD=VCC, Q2=V1, J2=GND, J3=GND, Q3=V2, CLOCK=BOTH)CD4029(PE=RESET, Q4=W3, J4=GND, J1=GND, CI=COV, Q1=W0, CO=COW, BD=GND, UD=VCC, Q2=W1, J2=GND, J3=GND, Q3=W2, CLOCK=BOTH)# ---------- дешифраторы: LT, BL = 1, LE = 0 ----------CD4511(B=U1, C=U2, LT=VCC, BL=VCC, LE=GND, D=U3, A=U0, e=Ue, d=Ud, c=Uc, b=Ub, a=Ua, g=Ug, f=Uf)CD4511(B=T1, C=T2, LT=VCC, BL=VCC, LE=GND, D=T3, A=T0, e=Te, d=Td, c=Tc, b=Tb, a=Ta, g=Tg, f=Tf)CD4511(B=V1, C=V2, LT=VCC, BL=VCC, LE=GND, D=V3, A=V0, e=Ve, d=Vd, c=Vc, b=Vb, a=Va, g=Vg, f=Vf)CD4511(B=W1, C=W2, LT=VCC, BL=VCC, LE=GND, D=W3, A=W0, e=We, d=Wd, c=Wc, b=Wb, a=Wa, g=Wg, f=Wf)

Не получается? Что-то не работает →