Урок 7. Электронный кубик
В картинкахНовых микросхем в этом уроке нет: всё, что нужно, уже лежит в библиотеке. На холсте — кубик из семи ламп. Держишь «Бросить» — грани мелькают, отпускаешь — выпадает случайная.
7.1. Идея: счётчик на шесть
У кубика шесть граней, значит, нужен счётчик, который считает 1, 2, 3, 4, 5, 6 и снова 1. Делитель из урока 2 считает до 8 или 16 — лишние состояния пришлось бы обрывать сбросом. Есть способ проще: счётчик Джонсона. Три триггера стоят по кругу, каждый на фронте берёт значение соседа, а первый — перевёрнутое значение последнего. Единицы заполняют ряд слева, потом нули вытесняют их — шесть состояний, и по кругу:
- грань 1:
000, грань 2:100, грань 3:110; - грань 4:
111, грань 5:011, грань 6:001.
Соседние состояния отличаются одним битом, поэтому лампы не мигают при переходе.
7.2. Идея: номер грани → точки
На кубике всего четыре группы точек: центр и три пары. Каждая группа — один провод:
- центр горит на 1, 3 и 5 — там в номере чётное число единиц: два XOR из 74HC86 и НЕ;
- пара A (по диагонали) горит на всех гранях, кроме 1:
Q0ИЛИQ2; - пара B (другая диагональ) — на 4, 5 и 6, а там
Q2= 1: лампы прямо наQ2, без вентиля; - пара C (посередине) — только на 6:
Q2И НЕQ1.
7.3. Идея: честный бросок
Пока держишь «Бросить», 74HC08 пропускает такт на счётчик. Такт идёт быстро — грань меняется сотни раз за секунду, и где счётчик остановится, решает только момент, когда ты отпустишь кнопку. Так устроены электронные кубики и рулетки в настоящих игрушках.
7.4. Сборка
Тот же проект, что в уроке 6: в библиотеке все микросхемы набора. Новых микросхем нет — кубик собран из того, что уже есть.
Шаг 1. Генератор и кнопки
Clock — частоту поставь побыстрее: пока держишь «Бросить», грани мелькают так быстро, что угадать нельзя. Кнопка «Бросить» — ROLL, «Сброс» — RST.
| Деталь | Нога | Метка |
|---|---|---|
| Clock | выход | CLK |
| Button «Бросить» | выход | ROLL |
| Button «Сброс» | выход | RST |
Шаг 2. Сброс и центр — 74HC04
nRST = НЕ RST: у 74HC74 сброс — активный 0. Второй НЕ даёт центральную точку DC (ниже — откуда PAR). Остальные входы — на GND.
| Деталь | Нога | Метка |
|---|---|---|
| 74HC04 | 1A 1Y 2A 2Y 3A 4A 5A 6A | RST nRST PAR DC GND GND GND GND |
Шаг 3. Такт по кнопке — 74HC08
SPIN = CLK И ROLL: такт доходит до счётчика, только пока держишь «Бросить». Второй И — пара точек DD, она горит только на шестёрке.
| Деталь | Нога | Метка |
|---|---|---|
| 74HC08 | 1A 1B 1Y 2A 2B 2Y 3A 3B 4A 4B | CLK ROLL SPIN Q2 Q1N DD GND GND GND GND |
Шаг 4. Счётчик на шесть — две 74HC74
Три триггера по кругу: Q0 берёт перевёрнутый Q2 (Q2N), Q1 — Q0, Q2 — Q1. Четвёртый триггер второй 74HC74 не нужен: его CP и D — на GND, RD и SD — на VCC.
| Деталь | Нога | Метка |
|---|---|---|
| 74HC74 | 1RD 1D 1CP 1SD 1Q 1QN 2QN 2Q 2SD 2CP 2D 2RD | nRST Q2N SPIN VCC Q0 Q0N Q1N Q1 VCC SPIN Q0 nRST |
| 74HC74 | 1RD 1D 1CP 1SD 1Q 1QN 2SD 2CP 2D 2RD | nRST Q1 SPIN VCC Q2 Q2N VCC GND GND VCC |
Шаг 5. Центр — 74HC86
PAR = Q0 XOR Q1 XOR Q2 — 1, когда единиц нечётное число. Центр горит на гранях 1, 3, 5, а там единиц чётное число, поэтому DC = НЕ PAR (тот второй НЕ в 74HC04).
| Деталь | Нога | Метка |
|---|---|---|
| 74HC86 | 1A 1B 1Y 2A 2B 2Y 3A 3B 4A 4B | Q0 Q1 X01 X01 Q2 PAR GND GND GND GND |
Шаг 6. Пара A — 74HC32
DA = Q0 ИЛИ Q2 — горит на всех гранях, кроме единицы.
| Деталь | Нога | Метка |
|---|---|---|
| 74HC32 | 1A 1B 1Y 2A 2B 3A 3B 4A 4B | Q0 Q2 DA GND GND GND GND GND GND |
Шаг 7. Семь точек
Две лампы DA, две Q2, две DD — это пары точек, у пары один провод. Расставь лампы квадратом 3 × 3, как точки на кубике (следующий шаг).
| Деталь | Нога | Метка |
|---|---|---|
| LED | вход | DC |
| LED | вход | DA |
| LED | вход | DA |
| LED | вход | Q2 |
| LED | вход | Q2 |
| LED | вход | DD |
| LED | вход | DD |
Шаг 8. Где какая точка
Если смотреть на кубик сверху:
| Место | Лампа |
|---|---|
| ↖ слева сверху | DA |
| ↗ справа сверху | Q2 |
| ← слева посередине | DD |
| • центр | DC |
| → справа посередине | DD |
| ↙ слева снизу | Q2 |
| ↘ справа снизу | DA |
Вставка ставит лампы столбиком — перетащи их квадратом, как на рисунке:
7.5. Проверка
- Нажми Сброс — горит одна точка в центре: «1».
- Подержи Бросить и отпусти — кубик останавливается на случайной грани. Бросай ещё: выпадают все грани от 1 до 6.
- Чтобы увидеть грани по порядку, поставь
Clockна самую медленную частоту и держи «Бросить»: 1, 2, 3, 4, 5, 6, снова 1.
| Грань | Q0 Q1 Q2 | Горят |
|---|---|---|
| 1 | 0 0 0 | DC |
| 2 | 1 0 0 | DA DA |
| 3 | 1 1 0 | DA DA DC |
| 4 | 1 1 1 | DA DA Q2 Q2 |
| 5 | 0 1 1 | DA DA Q2 Q2 DC |
| 6 | 0 0 1 | DA DA Q2 Q2 DD DD |
Почему кубик честный: такт идёт сотни раз за то время, что ты держишь кнопку, — где он остановится, решает только момент отпускания.
Вставка урока 7 (Cmd+I)
Поверх урока 6.
# Урок 7 — электронный кубик на микросхемах набора: счётчик Джонсона на 74HC74 (6 состояний), точки — вентили в корпусах.# Вставка: Cmd+I поверх урока 6 (все микросхемы — в библиотеке). # ---------- кубик ----------clock(CLK)button{label="Бросить"}(ROLL)button{label="Сброс"}(RST)# переворот сброса (у 74HC74 — активный 0) и центр кубика74HC04(1A=RST, 1Y=nRST, 2A=PAR, 2Y=DC, 3A=GND, 4A=GND, 5A=GND, 6A=GND)# пока держишь «Бросить», такт идёт на счётчик; и пара C — грань 6 (Q2 = 1, Q1 = 0)74HC08(1A=CLK, 1B=ROLL, 1Y=SPIN, 2A=Q2, 2B=Q1N, 2Y=DD, 3A=GND, 3B=GND, 4A=GND, 4B=GND)# счётчик Джонсона: три триггера по кругу, в первый — перевёрнутый последний (Q2N)74HC74(1RD=nRST, 1D=Q2N, 1CP=SPIN, 1SD=VCC, 1Q=Q0, 1QN=Q0N, 2QN=Q1N, 2Q=Q1, 2SD=VCC, 2CP=SPIN, 2D=Q0, 2RD=nRST)74HC74(1RD=nRST, 1D=Q1, 1CP=SPIN, 1SD=VCC, 1Q=Q2, 1QN=Q2N, 2SD=VCC, 2CP=GND, 2D=GND, 2RD=VCC)# центр — на гранях 1, 3, 5: там чётное число единиц; чётность — два XOR, переворот — в 74HC04 выше74HC86(1A=Q0, 1B=Q1, 1Y=X01, 2A=X01, 2B=Q2, 2Y=PAR, 3A=GND, 3B=GND, 4A=GND, 4B=GND)# пара A — все грани, кроме 1 (000): Q0 ИЛИ Q274HC32(1A=Q0, 1B=Q2, 1Y=DA, 2A=GND, 2B=GND, 3A=GND, 3B=GND, 4A=GND, 4B=GND)# 7 точек кубика: центр DC, пары DA (↖ ↘), Q2 (↗ ↙ — грани 4, 5, 6), DD (← → — грань 6)led(DC)led(DA)led(DA)led(Q2)led(Q2)led(DD)led(DD)Не получается? Что-то не работает →