Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 13

Автор Монк Π‘Π°ΠΉΠΌΠΎΠ½

ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, attachInterrupt β€” это константа, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС FALLING. Она ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ напряТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ D2 с уровня HIGH Π΄ΠΎ уровня LOW (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ β€” falling), Ρ‡Ρ‚ΠΎ происходит Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отсутствиС ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loop. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС эта функция ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. Π‘Π°ΠΌΠ° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ просто Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ свСтодиод L.

Когда Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, послС сброса Arduino свСтодиод L Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ³Π°ΡΠ½ΡƒΡ‚ΡŒ. А послС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ β€” сразу Π·Π°ΠΆΠ΅Ρ‡ΡŒΡΡ ΠΈ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π·Π°ΠΆΠΆΠ΅Π½Π½Ρ‹ΠΌ Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ сброса.

ΠŸΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π², ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ attachInterrupt Π½Π° RISING ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ скСтч. ПослС пСрСзапуска Arduino свСтодиод Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ³Π°ΡˆΠ΅Π½Π½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ напряТСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ хотя ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ HIGH, Π½ΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° пСрСзапуска ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅. Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° напряТСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ Π½Π΅ ΠΏΠ°Π΄Π°Π»ΠΎ Π΄ΠΎ уровня LOW, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ (rising) Π΄ΠΎ уровня HIGH.

ПослС наТатия ΠΈ удСрТания ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π½Π°ΠΆΠ°Ρ‚ΠΎΠΌ состоянии свСтодиод Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ³Π°ΡˆΠ΅Π½Π½Ρ‹ΠΌ, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π΅Π΅ Π½Π΅ отпуститС. ΠžΡ‚ΠΏΡƒΡΠΊΠ°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, связанноС с ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ D2, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ напряТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ LOW, Π° послС отпускания поднялся Π΄ΠΎ HIGH.

Если Π²ΠΎ врСмя опробования выяснится, Ρ‡Ρ‚ΠΎ происходящСС Ρƒ вас Π½Π΅ соотвСтствуСт описанию, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π°Π½Π΅Π΅, это, скорСС всСго, обусловлСно эффСктом Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π² ΠΊΠ½ΠΎΠΏΠΊΠ΅. Π­Ρ‚ΠΎΡ‚ эффСкт вызываСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ обСспСчиваСт Ρ‡Π΅Ρ‚ΠΊΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями Β«Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎΒ»/Β«Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎΒ», вмСсто этого Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ наТатия происходит ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ этими состояниями, ΠΏΠΎΠΊΠ° Π½Π΅ зафиксируСтся состояниС Β«Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎΒ». ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ энСргичнСС, это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями Π±Π΅Π· эффСкта Π΄Ρ€Π΅Π±Π΅Π·Π³Π°.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ скСтча β€” Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ, удСрТивая Π΅Π΅, Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ сброса Reset Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino. Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° скСтч запустится, ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅, ΠΈ свСтодиод L загорится.

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

ВСрнСмся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ имСнования ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π’ Ρ‚Π°Π±Π». 3.1 пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ»Π°Ρ‚ Arduino ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ соотвСтствиС Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π² Π½ΠΈΡ….

Π’Π°Π±Π»ΠΈΡ†Π° 3.1. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π² Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Arduino

МодСль

НомСр прСрывания

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

0

1

2

3

4

5

Uno

D2

D3

β€”

β€”

β€”

β€”

Leonardo

D3

D2

D0

D1

D7

β€”

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Uno ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° прСрывания Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ

Mega2560

D2

D3

D21

D20

D19

D18

Due

β€”

β€”

β€”

β€”

β€”

β€”

ВмСсто Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ attachInterrupt слСдуСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²

Π‘ΠΌΠ΅Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π² Uno ΠΈ Leonardo создаСт Π»ΠΎΠ²ΡƒΡˆΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ. Π’ ΠΌΠΎΠ΄Π΅Π»ΠΈ Due вмСсто Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ attachInterrupt слСдуСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ выглядит Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ.

Π Π΅ΠΆΠΈΠΌΡ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

Π Π΅ΠΆΠΈΠΌΡ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ RISING (ΠΏΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΏΠ°Π΄Ρƒ) ΠΈ FALLING (ΠΏΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΏΠ°Π΄Ρƒ), использовавшиСся Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Однако сущСствуСт Π΅Ρ‰Π΅ нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ². Π­Ρ‚ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡ‹ пСрСчислСны ΠΈ описаны Π² Ρ‚Π°Π±Π». 3.2.

Π’Π°Π±Π»ΠΈΡ†Π° 3.2. Π Π΅ΠΆΠΈΠΌΡ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

Π Π΅ΠΆΠΈΠΌ

ДСйствиС

ОписаниС

LOW

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ гСнСрируСтся ΠΏΡ€ΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ напряТСния LOW

Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ постоянно, ΠΏΠΎΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ сохраняСтся Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ напряТСния

RISING

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ гСнСрируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠ°Π΄Π΅ напряТСния, с уровня LOW Π΄ΠΎ уровня HIGH

β€”

FALLING

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ гСнСрируСтся ΠΏΡ€ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠ°Π΄Π΅ напряТСния, с уровня HIGH Π΄ΠΎ уровня LOW

β€”

HIGH

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ гСнСрируСтся ΠΏΡ€ΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ напряТСния HIGH

Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Arduino Due ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π΅ΠΆΠΈΠΌΡƒ LOW, Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ импСданса

Π’ схСмС Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовалось внСшнСС Β«ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅Β» сопротивлСниС. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ сигналы, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ прСрывания, часто заводятся с Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈ Π² этом случаС Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅Β» сопротивлСниС.

Но Ссли Ρ€ΠΎΠ»ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ макСтная ΠΏΠ»Π°Ρ‚Π° Π½Π° рис. 3.1, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ сопротивлСния, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ Β«ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅Β» сопротивлСниС с Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 40 кОм. Для этого Π½ΡƒΠΆΠ½ΠΎ явно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ INPUT_PULLUP для ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°, связанного с ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² строкС, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ:

void setup()

{

Β Β pinMode(ledPin, OUTPUT);

Β Β pinMode(2, INPUT_PULLUP);

Β Β attachInterrupt(0, stuffHapenned, FALLING);

}

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

Иногда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прСрывания, ΠΏΠΎΠΊΠ° выполняСтся функция loop, Π΄Π°Π΅Ρ‚ простой способ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ наТатия клавиш. Но Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ТСсткиС ограничСния Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ»ΠΈ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈ быстрыми Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Если Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, эта ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°, Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ сигнал Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½. Π­Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, Ссли прСрывания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для измСрСния частоты, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠΊΠ° выполняСтся ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΊΠΎΠ΄ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loop простаиваСт.

На врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания автоматичСски ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ прСдохраняСт ΠΎΡ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты. Ѐункция delay ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ ΠΈ прСрывания, поэтому ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π’ΠΎ ΠΆΠ΅ относится ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ millis. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ millis для получСния числа миллисСкунд, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго сброса ΠΏΠ»Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ способом Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ успСху, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ delayMicroseconds, которая Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎ взаимодСйствиях Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹, поэтому Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Serial.print ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ чтСния ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π°ΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ ΠΆΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ связи высокой надСТности.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ, Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π΅ΠΉ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для этого Β­ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

// sketch 03_02_interrupt_flash

int ledPin = 13;

volatile boolean flashFast = false;

void setup()

{

Β Β pinMode(ledPin, OUTPUT);

Β Β attachInterrupt(0, stuffHapenned, FALLING);

}

void loop()

{

Β Β int period = 1000;

Β Β if (flashFast) period = 100;

Β Β digitalWrite(ledPin, HIGH);

Β Β delay(period);