ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню для Arduino ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ

ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

НСсколько мСсяцСв Π½Π°Π·Π°Π΄ Π½Π° Ρ…Π°Π±Ρ€Π΅ появилась ΡΡ‚Π°Ρ‚ΡŒΡ «РСализация ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ мСню для Arduino с дисплССм». «Но, ΠΏΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅, β€” ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» я. β€” Π― написал Ρ‚Π°ΠΊΠΎΠ΅ мСню Π΅Ρ‰Π΅ ΡˆΠ΅ΡΡ‚ΡŒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄Β»!

Π’ Π΄Π°Π»Π΅ΠΊΠΎΠΌ 2009 Π³ΠΎΠ΄Ρƒ, я написал ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ дисплСя ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «Автомат управлСния освСщСниСм», для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ мСню, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π»Π΅Π·Π΅Ρ‚ тысяча ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ², Π° Ρ‚ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€ΠΎΠΆΠ΄Π΅Π½, компилируСтся ΠΈ способСн Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ сих ΠΏΠΎΡ€, Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° мСнюОБ пошла ΠΊΠΎΡ‡Π΅Π²Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π£Ρ‰Π΅Ρ€Π±Π½ΠΎ-ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Β«Π₯Π²Π°Ρ‚ΠΈΡ‚ это Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒΒ» сказал я, ΠΈ пСрСписал ΠΊΠΎΠ΄.

ΠŸΠΎΠ΄ΠΊΠ°Ρ‚ΠΎΠΌ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ legacy-ΠΊΠΎΠ΄ ΠΎΡ‚Π±ΠΎΡ€Π½ΠΎΠ³ΠΎ качСства, сказ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ я Π΅Π³ΠΎ пСрСписал, Π° Ρ‚Π°ΠΊΠΆΠ΅ инструкции для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ВрСбования ΠΈ возмоТности мСнюОБ

Ѐайловая структура

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру мСню(слСва Π½ΠΎΠΌΠ΅Ρ€ ΠΏΡƒΠ½ΠΊΡ‚Π°):

Π“Π»Π°Π²Π½Ρ‹ΠΌ Π΄ΠΎΠ³ΠΌΠ°Ρ‚ΠΎΠΌ мСнюОБ являСтся «ВсС Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Β». Π”Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ ΠΏΠ°ΠΏΠΊΠ°, ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
ОпишСм структурой:

type == T_FOLDER

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ являСтся ΠΏΠ°ΠΏΠΊΠ°. Она ΠΈ позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру всСго мСню.
Бамая главная здСсь β€” корнСвая ΠΏΠ°ΠΏΠΊΠ° ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π½ΡƒΠ»ΡŒ. Π§Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ вСрнСмся Π² Π½Π΅Π΅.
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ

Π’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ 0 Π»Π΅ΠΆΠ°Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ 1 ΠΈ 2, всСго 2 ΡˆΡ‚ΡƒΠΊΠΈ.
ОпишСм Π΅Π΅ Ρ‚Π°ΠΊ:

type == T_DFOLDER

Π’ ПапкС 3 Π»Π΅ΠΆΠΈΡ‚ нСсколько ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ запуска.
НапримСр, Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅ управлСния освСщСниСм имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎ 64 суточных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, с 16 ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. Если ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚, потрСбуСтся 1024 Ρ„Π°ΠΉΠ»Π°. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ достаточно Π΄Π²ΡƒΡ…. А Ρ…Π»Π΅Π±Π½Ρ‹Π΅ ΠΊΡ€ΠΎΡˆΠΊΠΈ скормим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

НСхитрая ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° подсказываСт Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ Ссли всС 256 Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ динамичСскими ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΊΠΎΠΏΠΈΠΉ, ΠΎΠ±Ρ‰Π΅Π΅ число ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню Π² систСмС составит 256^256 = 3.2 x 10^616. Π­Ρ‚ΠΎΠ³ΠΎ ВОЧНО Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π½Π° любой Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ случай.

type == T_APP

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π² диспСтчСрС Π·Π°Π΄Π°Ρ‡ (встроСнном ΠΈΠ»ΠΈ внСшнСм), ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

type == T_CONF

ΠšΠΎΠ½Ρ„ΠΈΠ³-Ρ„Π°ΠΉΠ», Ρ€Π°Π΄ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ затСян вСсь сыр-Π±ΠΎΡ€. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ»Π΅Π²ΠΎ ΠΈΠ»ΠΈ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с int16_t.

type == S_CONF

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ(Π½ΠΎ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² старом ΠΊΠΎΠ΄Π΅) ΠΊΠΎΠ½Ρ„ΠΈΠ³, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² связкС с T_SFOLDER

type == T_SFOLDER

ΠžΡΠΎΠ±Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΏΠ°ΠΏΠΊΠΈ вынСсСн Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³Ρƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ разновидностСй.
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρƒ вас Π² систСмС Π·Π°ΡˆΠΈΡ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ RS-485 ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ A,B ΠΈΠ»ΠΈ C. ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΊΡƒΡ‡ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ² Π²ΠΈΠ΄Π° S_CONF ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π°ΠΉΠ΄Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ вновь, курсор подсвСтит Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
mode1, mode2 Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ для T_FOLDER. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ T_SCONF

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ массивы ΠΏΠΎ Ρ€Π°Π½Π΅Π΅ рассмотрСнной структурС

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ массив для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ²:

Настройка ΠΊΠ½ΠΎΠΏΠΎΠΊ

Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ с Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ΠΌ Π½Π° зСмлю ΠΈ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ рСзистором ΠΊ ΠΏΠΈΡ‚Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² МК.
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ
Π’ Ρ„Π°ΠΉΠ»Π΅ hw/hwdef.h ΡƒΠΊΠ°ΠΆΠ΅ΠΌ названия рСгистров ΠΈ располоТСниС ΠΊΠ½ΠΎΠΏΠΎΠΊ:

Настройка дисплСя

БСйчас ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°Ρ‰ΠΈΡ‚ Π·Π° собой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GLCDv3, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Ρ‚Π°ΠΊ слоТилось.
Бсылка Π½Π° google-code β€” https://code.google.com/p/glcd-arduino

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ мСню.
menuos/app/sampleapp.cpp

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ класс со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ структурой:

И набросаСм основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

И функция, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² menu.cpp ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ 2 Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Π‘ΠΎΠ±Π΅Ρ€Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π­Π½ΠΊΠΎΠ΄Π΅Ρ€ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ мСню Π½Π° дисплСС

ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

Рассмотрим, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ мСню с энкодСром Ардуино Π½Π° дисплСС LCD 1602 I2C. ΠœΡ‹ прСдставим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: мСню для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиодов ΠΈ мСню Π½Π° дисплСС с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ энкодСра ΡΡ€ΠΊΠΎΡΡ‚ΡŒΡŽ свСтодиодов. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Arduino дисплСя LCD 1602 Arduino ΠΈ модуля энкодСр Ардуино. Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ этому ΠΌΠΈΠ½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

МСню Π½Π° Ардуино LCD 1602 с энкодСром

ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ мСню с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ энкодСра ΠΈ ΠΆΠΊ дисплССм, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π½Π° этой страницС, Π²Ρ‹ смоТСтС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ свои Π½ΡƒΠΆΠ΄Ρ‹. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° Ардуино трСбуСтся для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для настройки ΠΈΠ»ΠΈ управлСния устройством Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅. Π­Π½ΠΊΠΎΠ΄Π΅Ρ€ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простоС ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ мСню Π½Π° LCD дисплСС для управлСния свСтодиодами, ΠΌΠΈΠΊΡ€ΠΎ сСрво Ардуино ΠΈΠ»ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ мСню с энкодСром Π½Π° дисплСС

Для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π°ΠΌ потрСбуСтся:

Π‘ΠΊΠ΅Ρ‚Ρ‡. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ энкодСром мСню дисплСя LCD

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ, Π±ΠΎΠ»Π΅Π΅ простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π² мСню дисплСя имССтся Ρ‚Ρ€ΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вращСния Ρ€ΡƒΡ‡ΠΊΠΈ энкодСра. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ энкодСра, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ RGB свСтодиода. Π’ зависимости ΠΎΡ‚ полоТСния курсора Π½Π° дисплСС, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚. Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ схСму, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ПояснСния ΠΊ ΠΊΠΎΠ΄Ρƒ:

Π‘ΠΊΠ΅Ρ‚Ρ‡. Π”Π²ΡƒΡ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню с энкодСром Ардуино

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ мСню ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ для Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ яркости ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свСтодиода ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСню Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ происходит ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ энкодСра, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ мСняСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ w Π² скСтчС. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиодов ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ остаСтся ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ, ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅, слСдуСт лишь Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² ΠΏΠ»Π°Ρ‚Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ПояснСния ΠΊ ΠΊΠΎΠ΄Ρƒ:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠœΡ‹ рассмотрСли Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создания мСню с энкодСром Π½Π° дисплСС 1602 IIC Arduino. Если Π²Ρ‹ ΡƒΠ»ΠΎΠ²ΠΈΠ»ΠΈ всю ΡΡƒΡ‚ΡŒ управлСния мСню с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ энкодСра (Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΡƒΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°), Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСдставлСнныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² своих собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… с дисплССм Π½Π° Ардуино. Если Ρƒ вас Π΅Ρ‰Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ вопросы ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² коммСнтариях ΠΊ этой записи.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

РСализация ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ мСню для Arduino с дисплССм

ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ
ЗдравствуйтС Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! МнС всСгда Π±Ρ‹Π»ΠΈ интСрСсны всякиС устройства, ΠΈ Π΅Ρ‰Π΅ большС Π±Ρ‹Π»Π° интСрСсна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… самому. И Π²ΠΎΡ‚, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ послС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ мысли Π±Π»ΡƒΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π° Arduino Mega 2560 ΠΈ Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ экспСримСнты. Как ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Ρ‚Π΅Ρ… ΠΊΡ‚ΠΎ становился ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»Π΅ΠΌ Arduino, я, вдоволь ΠΏΠΎΠΌΠΈΠ³Π°Π² свСтодиодами, ΠΏΠΎΠΊΡ€ΡƒΡ‚ΠΈΠ² ΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ, Ρ€Π΅ΡˆΠΈΠ» Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. Когда идСя ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ устройствС ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ я приступил ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. УспСшная рСализация ΠΈΠ΄Π΅ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… комплСксных Π·Π°Π΄Π°Ρ‡. Одной ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ являСтся созданиС ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ интСрфСйса для настройки.

Устройство ΠΈΠΌΠ΅Π΅Ρ‚ довольно большоС количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (нСсколько дСсятков) ΠΈ Π² дальнСйшСм ΠΈΡ… количСство скорСй всСго Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ количСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, поэтому устройство оснащСно дисплССм ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ, Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· мСню. Для удобства настройки мСню ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅. ЗначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²ΠΊΠ»/Π²Ρ‹ΠΊΠ», числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, врСмя ΠΈ Ρ‚. Π΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большоС количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΎ имССтся Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡƒΡ‚Π΅ΠΌ удСрТания ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ ΠΊΠ°ΠΊ это рСализуСтся.

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°.
ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТная Π·Π°Π΄Π°Ρ‡Π° Ρ‡Π΅ΠΌ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒ Π΄Π΅Π»ΠΎ с элСктроникой. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ мСню Ρ‚ΠΎ для управлСния Π½Π°ΠΌ понадобятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ:
Β«Π’Π²Π΅Ρ€Ρ…Β» (ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ мСню, Π²Ρ‹Π±ΠΎΡ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°)
Β«Π’Π½ΠΈΠ·Β» (ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ· ΠΏΠΎ мСню, Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ значСния для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°)
Β«Π’ΠΏΡ€Π°Π²ΠΎΒ» (Π²Ρ…ΠΎΠ΄ Π² подмСню, Π½Π°Ρ‡Π°Π»ΠΎ рСдактирования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°)
Β«Π’Π»Π΅Π²ΠΎΒ» (Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· подмСню, Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· рСдактирования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°)
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΠΌ пригодится Π΅Ρ‰Π΅ нСсколько ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
Β«Π‘Ρ‚Π°Ρ€Ρ‚/Π‘Ρ‚ΠΎΠΏΒ»
«БыстроС дСйствиС 1Β»
«БыстроС дСйствиС 2Β»
«БыстроС дСйствиС 3Β»
…
«БыстроС дСйствиС 100Β»

Π― Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π» большоС количСство ΠΊΠ½ΠΎΠΏΠΎΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ устройство Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ, с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ использования, настройка Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ вынСсСна Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ панСль. Π’Π°ΠΊΠΆΠ΅ Π½Π° панСль Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ для выполнСния быстрых дСйствий. Из этого слСдуСт Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄ΠΎΠ², Π»ΠΈΠ±ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ этих Π²Ρ…ΠΎΠ΄ΠΎΠ². Но сущСствуСт ΠΎΡ‡Π΅Π½ΡŒ распространСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΏΡ€ΠΈ этом понадобится лишь ΠΎΠ΄ΠΈΠ½ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄. Π‘ΡƒΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:
ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° собираСтся ΠΈΠ· мноТСства ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ соСдинСнных рСзисторов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· сСбя Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ напряТСния. Один ΠΊΠΎΠ½Π΅Ρ† Ρ†Π΅ΠΏΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π·Π΅ΠΌΠ»Π΅, Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ† Ρ†Π΅ΠΏΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ +5 Π’. Π”Π°Π»Π΅Π΅ всС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ Π²Ρ…ΠΎΠ΄Ρƒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ ΠΊ мСстам соСдинСния рСзисторов. Π‘Ρ…Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° подаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ напряТСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ зависит ΠΎΡ‚ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ измСряя это напряТСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ АЦП ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ какая ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°.

Π”Ρ€Π΅Π±Π΅Π·Π³ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ².
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ². Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ для свСта, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Ρ‚. Π΄. ΠΌΡ‹ часто Π½Π΅ задумываСмся ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ этой ΠΊΠ½ΠΎΠΏΠΊΠΈ. БкладываСтся ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° фиксированных состояния β€” Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. На самом ΠΆΠ΅ Π΄Π΅Π»Π΅ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Ρ‚ΠΎ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Ρ†Π΅ΠΏΠΈ происходит Π½Π΅ сразу. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ(ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π½ΠΎ Π½Π΅ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду) ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π²ΠΈΠ±Ρ€ΠΈΡ€ΡƒΡŽΡ‚, искрят, ΡˆΡƒΠΌΡΡ‚ ΠΈ Ρ‚. Π΄. ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π·Π° этот ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большоС количСство срабатываний (Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΈ ΠΎΡ‚ΠΆΠ°Ρ‚ΠΈΠΉ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ссли эта ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для счСтчика Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ Ρ‚ΠΎ Π±Π΅Π· Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ наш ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°ΠΆΠ°Π»ΠΈ 3 Ρ€Π°Π·Π°, ΠΈΠ»ΠΈ 5, ΠΈΠ»ΠΈ 20 Ρ€Π°Π· ΠΈ Ρ‚. Π΄. ВсС зависит ΠΎΡ‚ качСства ΠΊΠ½ΠΎΠΏΠΊΠΈ, частоты опроса ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΡ‚ ΠΏΠΎΠ³ΠΎΠ΄Ρ‹ Π½Π° ΠœΠ°Ρ€ΡΠ΅ ΠΈ Ρ‚. Π΄. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ считываниСм значСния ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π΅ сразу послС наТатия Π° Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя.
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ нСсколькими способами, ΠΈ, ΠΊ соТалСнию довольно часто, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Delay(). Π― Π±Ρ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΅ выполнСния ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ гоняСт Π±Π°Π»Π΄Ρƒ вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ тСряСм Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ВмСсто использования Delay() я запоминаю врСмя наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ сам Ρ„Π°ΠΊΡ‚ Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅. Π’ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ loop провСряСтся Π±Ρ‹Π»ΠΎ Π»ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ Ссли Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎ сравниваСтся врСмя наТатия с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. Если Ρ€Π°Π·Π½ΠΈΡ†Π° Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Ρ€Π΅Π±Π΅Π·Π³ успСваСт ΡƒΡΡ‚Π°ΠΊΠ°Π½ΠΈΡ‚ΡŒΡΡ) Ρ‚ΠΎ производится считываниС значСния Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Вакая рСализация Π·Π°ΠΎΠ΄Π½ΠΎ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Β«Π·Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈΒ» Ρ‚. Π΅. Ссли Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 1 Π΄ΠΎ 100, Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ придСтся 100 Ρ€Π°Π· Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ. ΠœΡ‹ просто Π½Π°ΠΆΠΌΠ΅ΠΌ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π΅. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ наТатия Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ измСнится с 1 Π½Π° 2 ΠΈ Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд удСрТания ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ с большой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ позволяСт Ρ‚Π°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ нСсколько зависимостСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли ΠΌΡ‹ Π΄Π΅Ρ€ΠΆΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ 1 сСкунду Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 500 миллисСкунд. Если ΠΌΡ‹ Π΄Π΅Ρ€ΠΆΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ 5 сСкунд Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 25 миллисСкунд ΠΈ Ρ‚. Π΄.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ такая рСализация Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ быстрого ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ срабатывания ΠΊΠ½ΠΎΠΏΠΊΠΈ сразу послС наТатия. Π’. Π΅. Ссли ΠΊΠ½ΠΎΠΏΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡΡŠΠ΅ΠΌΠΊΡƒ ΠΊΠ°Π΄Ρ€Π° Ρ„ΠΎΡ‚ΠΎΠ°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΠΎΠΌ, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ„ΠΎΡ‚ΠΎΠ°ΠΏΠΏΠ°Ρ€Π°Ρ‚ Π½Π΅ Π½Π°Ρ‡Π½Π΅Ρ‚ ΡΡ‚Ρ€ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΠ· ΠΏΡƒΠ»Π΅ΠΌΠ΅Ρ‚Π°. Π‘ΡƒΠ΄Π΅Ρ‚ сдСлан ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
Π’ Ρ†ΠΈΠΊΠ»Π΅ loop постоянно Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyBoardTime2 ΠΈ сравниваСм Π΅Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ KeyBoardTime1. Π’ случаС Ссли Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ большС Ρ‡Π΅ΠΌ пСрСмСнная KeyBoardTimeInterval Ρ‚ΠΎ ΠΌΡ‹ сохраняСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyBoardTime1 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyBoardTime2 ΠΈ запускаСм ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ KeyBoardCalculate(). Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ провСряСтся Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ KeyBoardCalculate(). Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт Π½Π°ΠΌ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ частоту ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π±Π΅Π· использования Delay.

Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ KeyBoardCalculate() ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ считываСтся ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ напряТСния с дСлитСля напряТСния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

Ѐункция analogRead Π² случаС использования Arduino Mega 2560 ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ значСния напряТСния Π²Ρ…ΠΎΠ΄Π° Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ 10-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚. Π΅. Ссли Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ 5 Π’ Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 1023, Ссли Π½Π° Π²Ρ…ΠΎΠ΄Π΅ 0 Π’ Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 0, Ссли Π½Π° Π²Ρ…ΠΎΠ΄Π΅ 2.5 Π’ Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 512 ΠΈ Ρ‚. Π΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ KeyButton1Value хранится напряТСниС ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’ ΠΌΠΎΠ΅ΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ Π² качСствС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° я принял Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 50 Π΄ΠΎ 1000, Ρ‚. Π΅. Π² случаС Ссли Π½Π° Π²Ρ…ΠΎΠ΄Π΅ напряТСниС ΠΈΠ· этого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π΄ΡƒΠΌΠ°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π½Π°ΠΆΠ°Ρ‚Π° ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π΄ΡƒΠΌΠ°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ считано Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опрСдСляСт Π½Π°ΠΆΠ°Ρ‚Π° Π»ΠΈ Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°

Если Π½ΠΈ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Π½Π°ΠΆΠ°Ρ‚Π° это условиС выполнится ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сохранит послСднСС врСмя ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° Π½ΠΈ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyButton1TimePress, послС Ρ‡Π΅Π³ΠΎ ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyButton1WasChecked, Π³ΠΎΠ²ΠΎΡ€ΡΡ‰ΡƒΡŽ ΠΎ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ наТатия ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyButton1RepeatTimePress, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ.
Π”Π°Π»Π΅Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ KeyButton1TimeFromPress заносится Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ послСдним Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° Π½ΠΈ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°.

Π—Π°Ρ‚Π΅ΠΌ выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ:

Если ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π° Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ условиС выполняСтся ΠΈ ΠΌΡ‹ провСряСм Ρ„Π°ΠΊΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ

Если врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ большС Ρ‡Π΅ΠΌ врСмя Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ устаканиваСтся Π΄Ρ€Π΅Π±Π΅Π·Π³ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² (пСрСмСнная KeyButton1Latency) ΠΈ это Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ (KeyButton1WasChecked==0) Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

запускаСм ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ButtonPress() (которая опрСдСляСт ΠΊΠ°ΠΊΠΎΠ΅ дСйствиС Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для этой ΠΊΠ½ΠΎΠΏΠΊΠΈ), Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ (KeyButton1WasChecked=1) ΠΈ обнуляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ (KeyButton1RepeatTimePress=0).

Если врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ большС Ρ‡Π΅ΠΌ врСмя послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ считаСм Ρ‡Ρ‚ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅+врСмя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ наТатия ((KeyButton1TimeFromPress)>(KeyButton1RepeatLatency+KeyButton1RepeatTimePress)) ΠΈ пСрвая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° наТатия ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° (KeyButton1WasChecked==1) Ρ‚ΠΎ сохраняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

запускаСм ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ButtonPress() (которая опрСдСляСт ΠΊΠ°ΠΊΠΎΠ΅ дСйствиС Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для этой ΠΊΠ½ΠΎΠΏΠΊΠΈ), ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ врСмя Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ снова ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° выполнСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ для ΠΊΠ½ΠΎΠΏΠΊΠΈ дСйствия выглядит Ρ‚Π°ΠΊ:

Ρ‚.Π΅. провСряСтся ΠΊΠ°ΠΊΠΎΠ΅ напряТСниС Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈ выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ дСйствиС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ напряТСниС ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 125 Π΄ΠΎ 135 Ρ‚ΠΎ Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π’Π²Π΅Ρ€Ρ…, Ссли ΠΎΡ‚ 255 Π΄ΠΎ 262 Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π’Π½ΠΈΠ· ΠΈ Ρ‚.Π΄. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ограничиваСтся практичСски Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашСй Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠ΅ΠΉ, ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΡˆΡƒΠΌΠΎΠ² вашСй ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Π±ΠΈΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ АЦП.

БобствСнно Π²ΠΎΡ‚ ΠΈ всС Ρ‡Ρ‚ΠΎ относится ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π•Ρ‰Π΅ Ρ€Π°Π· ΠΊΡ€Π°Ρ‚ΠΊΠΎ. Если Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° β€” провСряСм, Ссли ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· Ρ‚ΠΎ провСряСм ΠΊΠ°ΠΊ Π΄Π°Π²Π½ΠΎ, Ссли Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ дальшС пропустив ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Ссли ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π° ΡƒΠΆΠ΅ достаточно Π΄ΠΎΠ»Π³ΠΎ ΠΈ Π΄Ρ€Π΅Π±Π΅Π·Π³Π° Π½Π΅Ρ‚ Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ дСйствиС для ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ, Ссли ΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Ρ‚ΠΎ провСряСм наступило Π»ΠΈ врСмя ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ссли наступило Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ вычисляСм врСмя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

НСмного слов ΠΎ Ρ‚ΠΎΠΌ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я использовал Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Ρ†ΠΈΠΊΠ»Π΅ loop, Π° Π½Π΅ использовал прСрывания. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ я Π½Π΅ силСн Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈ Π² ΠΌΠΎΠ΅ΠΌ устройствС ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ частота выполнСния этого прСрывания мСняСтся со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для избСТания накладывания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π° Β«Π²Π°ΠΆΠ½Ρ‹Π΅Β» прСрывания я Ρ€Π΅ΡˆΠΈΠ» ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½ΠΈΡ…, Π΄Π° ΠΈ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈ Π½Π΅ΡƒΠΌΠ΅Π½ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Β«Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΒ» прСрывания, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ эффСкт, схоТий с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ использовании ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² GoTo.

МСню.
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ дошли Π΄ΠΎ описания Ρ€Π°Π±ΠΎΡ‚Ρ‹ мСню. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ структуры мСню я вспомнил курс ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, динамичСскиС списки ΠΈ Π³Ρ€Π°Ρ„Ρ‹. Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ Ρ‚ΠΎ динамичСскиС списки Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅. Π‘Π°ΠΌΡ‹Π΅ простыС ΠΈΠ· Π½ΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΈ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅.
ΠžΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ выглядят Ρ‚Π°ΠΊ:
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ
Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ адрСс элСмСнта 1. Зная Π΅Π³ΠΎ адрСс ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° сам элСмСнт 1, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ адрСс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ списку, ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ значСния ΠΈ адрСса ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов. Π‘Π΅Π΄Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ списка Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ. Π’. Π΅. пСрСйдя Π² элСмСнт 5 ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² элСмСнт 4. Для этого Π½Π°ΠΌ придСтся ΠΏΡ€ΠΎΠΉΡ‚ΠΈ вСсь список Π·Π°Π½ΠΎΠ²ΠΎ. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° Π² Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… списках:

Π”Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ списки:
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ
Π’ Ρ‚Π°ΠΊΠΎΠΌ спискС Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π² элСмСнтС 5 Π½Π°ΠΌ извСстСн адрСс элСмСнта 4 ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ этому элСмСнту.

Для наглядности ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ этот список Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€Π΅Ρ… массивов, Π³Π΄Π΅ массив Value[] Ρ…Ρ€Π°Π½ΠΈΡ‚ значСния элСмСнтов. Массив Parent[] Ρ…Ρ€Π°Π½ΠΈΡ‚ индСксы Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π»ΠΈΠ±ΠΎ 0 Ссли Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π½Π΅Ρ‚, ΠΈ массив Child[] Ρ…Ρ€Π°Π½ΠΈΡ‚ индСксы Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов ΠΈ 0 Ссли Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов Π½Π΅Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ список ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» описан Π²Ρ‹ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

NValueParentChild
1102
2213
3324
4435
5540

Если ΠΌΡ‹ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот список ΠΊΠΎΠ»ΡŒΡ†ΠΎΠΌ Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

NValueParentChild
1152
2213
3324
4435
5541

Π‘ этим Π΄ΡƒΠΌΠ°ΡŽ всС понятно.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим Ρ‡Ρ‚ΠΎ наша структура выглядит Π½Π΅ ΠΊΠ°ΠΊ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° элСмСнтов Π° ΠΊΠ°ΠΊ Π΄Π΅Ρ€Π΅Π²ΠΎ элСмСнтов. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС элСмСнт ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ родитСля, Π½ΠΎ количСство Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ. Π’Π°ΠΊΡƒΡŽ структуру наши Ρ‚Ρ€ΠΈ массива ΡƒΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ способны Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ хранят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° адрСса. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ β€” Π²Π²Π΅Π΄Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС. ΠŸΡƒΡΡ‚ΡŒ всС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ строго ΠΏΠΎ порядку. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому я измСню массив Child[] Π½Π° массив ChildFirst[] ΠΈ добавлю Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ массив ChildEnd[]. ΠŸΡƒΡΡ‚ΡŒ эти Π΄Π²Π° массива хранят Π² сСбС индСксы ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта соотвСтствСнно ΠΈ ноль Ссли Ρƒ элСмСнта Π½Π΅Ρ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт ΠΈ Ρ‚Ρ€ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Ρ‚ΠΎ структура Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

NValueParentChildFirstChildEnd
11225
22030
33040
44050

Или Ссли ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ графичСски Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π²Π΅Π΄Π΅ΠΌ Π½Π΅ΠΊΠΈΠΉ элСмСнт Π½ΠΎΠΌΠ΅Ρ€ ноль. ΠŸΡƒΡΡ‚ΡŒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ всСх элСмСнтов для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Parent Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ взглянСм Π½Π° нСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ структуру, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

NValueParentChildFirstChildEnd
0Main Menu013
1Menu1047
2Menu201014
3Menu3089
4Param1_1100
5Param1_2100
6Param1_3100
7Param1_4100
8Param3_1300
9Param3_2300
10Param2_1200
11Param2_2200
12Param2_3200
13Param2_4200
14Param2_5200

ГрафичСски это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

Если ΠΌΡ‹ нарисуСм структуру ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ эти Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ основноС мСню Main Menu, состоящСС ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² β€” Menu1,Menu2,Menu3. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ParamX_Y. БобствСнно это всС. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ мСню с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ количСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Для возмоТности ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΅Ρ‰Π΅ нСсколько массивов:

MenuTypeCode[]-массив содСрТит Ρ†ΠΈΡ„Ρ€Ρƒ которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню. НапримСр, Ссли это ΠΏΡƒΠ½ΠΊΡ‚ мСню, Π° Π½Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 0, Ссли это Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΎ для Ρ†Π΅Π»ΠΎΠ³ΠΎ числа это Π±ΡƒΠ΄Π΅Ρ‚ Ρ†ΠΈΡ„Ρ€Π° 1, для Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ это Ρ†ΠΈΡ„Ρ€Π° 2, для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ On|Off это Ρ†ΠΈΡ„Ρ€Π° 3 ΠΈ Ρ‚. Π΄. сколько Π΄ΡƒΡˆΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

MenuValue[]-массив содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ настраиваСм.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ² эти массивы ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ структурС ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² ΠΈΡ… Π²Ρ‹ΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ структуру которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ:

NValueParentChildFirstChildEndMenuTypeCodeMenuValue
0Main Menu01300
1Menu104700
2Menu20101400
3Menu308900
4Param1_1100150
5Param1_210023600
6Param1_310030
7Param1_41001120
8Param3_130027200
9Param3_230031
10Param2_120018
11Param2_220020
12Param2_320031
13Param2_420015
14Param2_5200260

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ мСню MainMenu Π³Π΄Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ Menu1 Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Param1_2 ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MenuValue=3600. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MenuTypeCode для этого элСмСнта Ρ€Π°Π²Π½ΠΎ 2 Ρ‚ΠΎ ΠΌΡ‹ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅ΠΌ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ врСмя, Ρ‚.Π΅. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌ Π½Π° 3600 сСкунд ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 1 час. Для элСмСнта Param1_3 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MenuTypeCode Ρ€Π°Π²Π½ΠΎ 3 ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ MenuValue=0 Π½Π΅ ΠΊΠ°ΠΊ ноль, Π° ΠΊΠ°ΠΊ Off. ЗабСгая Π²ΠΏΠ΅Ρ€Π΅Π΄ скаТу Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:
ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. Π€ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню Π½Π° Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ лишь Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° дисплСй ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΠ΅Ρ€Π΅Π΄ описаниСм ΠΊΠΎΠ΄Π° Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ слов ΠΎ ΠΆΠ΅Π»Π΅Π·Π΅. Π’ качСствС дисплСя я использовал дисплСй JN12864J с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Sitronix ST7920 (Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ дисплСя 128Ρ…64 ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для отобраТСния мСню). Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с дисплССм использовал Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ U8glib. ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊ Π²Ρ…ΠΎΠ΄Ρƒ A0.

Π― постарался максимально ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π§Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΡƒΠΆΠ΅ описана Π²Ρ‹ΡˆΠ΅. РасскаТу ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ ΠΊΠ°ΠΊ осущСствляСтся Π²Ρ‹Π²ΠΎΠ΄ мСню Π½Π° экран, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ мСню:

Π Π°Π½Π΅Π΅ описано Ρ‡Ρ‚ΠΎ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ запускаСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ButtonPress(), которая Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ опрСдСляСт какая ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° ΠΈ Π² зависимости ΠΎΡ‚ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ запускаСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:
Для ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π’Π²Π΅Ρ€Ρ…Β» β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° UpPress(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пСрСдвиТСния ΠΏΠΎ мСню Π²Π²Π΅Ρ€Ρ…, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.
Для ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π’Π½ΠΈΠ·Β» β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° DownPress(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пСрСдвиТСния ΠΏΠΎ мСню Π²Π½ΠΈΠ·, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.
Для ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π’ΠΏΡ€Π°Π²ΠΎΒ» β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° RightPress(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ…ΠΎΠ΄Π° Π² мСню Π»ΠΈΠ±ΠΎ для Π²Ρ…ΠΎΠ΄Π° Π² Ρ€Π΅ΠΆΠΈΠΌ рСдактирования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.
Для ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π’Π»Π΅Π²ΠΎΒ» β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° LeftPress(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ мСню Π»ΠΈΠ±ΠΎ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° рСдактирования.

Π’ самом Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ мСню запуском ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ MenuSetup() Π’ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ описываСтся вся структура мСню. Π’Π°ΠΊΠΆΠ΅ задаСтся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² мСню:

Данная пСрСмСнная Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС индСкс Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню.

Π’ΠΎ врСмя наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ провСряСтся Π½Π΅ находимся Π»ΠΈ ΠΌΡ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная MenuEdit. Если данная пСрСмСнная Ρ€Π°Π²Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΡ‹ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ индСкс MenuNowPos.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ссли ΠΌΡ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π’Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π’Π½ΠΈΠ· Ρ‚ΠΎ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ рСдактирования. Если Ρ€Π΅ΠΆΠΈΠΌ рСдактирования Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ‚ΠΎ провСряСм Ρ‚ΠΈΠΏ элСмСнта с индСксом MenuNowPos ΠΈ Π² соотвСтствии с Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ мСняСм Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Для ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’Π½ΠΈΠ· Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Если Ρ€Π΅ΠΆΠΈΠΌ рСдактирования Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ‚ΠΎ провСряСм Π΅ΡΡ‚ΡŒ Π»ΠΈ сосСдний Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт Ρƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ, ΠΈ, Ссли Ρ‚Π°ΠΊΠΎΠΉ элСмСнт Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ пСрСдвигаСмся Π½Π° Π½Π΅Π³ΠΎ Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ какая ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°. НапримСр для ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’Π²Π΅Ρ€Ρ…:

Аналогичная опСрация производится ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π’Π»Π΅Π²ΠΎ ΠΈ Π’ΠΏΡ€Π°Π²ΠΎ. Если Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π’Π»Π΅Π²ΠΎ Ρ‚ΠΎ провСряСм находимся Π»ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования, Ссли Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Π½Π΅Π³ΠΎ:

Ссди Π½Π΅Ρ‚ Ρ‚ΠΎ провСряСм Π΅ΡΡ‚ΡŒ Π»ΠΈ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ, ΠΈ, Ссли Π΅ΡΡ‚ΡŒ β€” ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π½Π΅Π³ΠΎ:

Для ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’ΠΏΡ€Π°Π²ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ практичСски Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΅ΡΡ‚ΡŒ Π»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ, ΠΈ, Ссли Π΅ΡΡ‚ΡŒ β€” ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π½Π΅Π³ΠΎ, Ссли ΠΆΠ΅ Π½Π΅Ρ‚ ΠΈ ΠΌΡ‹ стоим Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌ рСдактирования:

ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ лишь вывСсти всС Π½Π° экран. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Draw() ΠΈ DrawMenu()
ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Draw() ΠΈΠΌΠ΅Π΅Ρ‚ стандартный Π²ΠΈΠ΄ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ U8glib. ЗапускаСт ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ экрана ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ своС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ. Π•Π΅ Π²Ρ‹Π·ΠΎΠ² происходит Π² Ρ†ΠΈΠΊΠ»Π΅ loop с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° DrawMenu() ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ нСпосрСдствСнно Π·Π° Π²Ρ‹Π²ΠΎΠ΄ мСню. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ прост β€” Ρƒ нас Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:
MenuNowPos β€” индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта
MenuDrawPos β€” Π½ΠΎΠΌΠ΅Ρ€ строки Π½Π° экранС Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт MenuNowPos
MenuDrawCount β€” максимальноС количСство ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… строк Π½Π° экранС.

ΠΈ, Ссли ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎ рядом с Π½ΠΈΠΌΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ ΠΈΡ… Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:

НСмного Π²ΠΈΠ΄Π΅ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ мСню. Π’ Π²ΠΈΠ΄Π΅ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ мСню Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‰Π΅Π΅ΡΡ Π½Π° экран, ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Ρ†ΠΈΡ„Ρ€Ρ‹, врСмя, On|Off) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ мСню (мСню Π² мСню Π² основном мСню), ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ срабатываниС ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *