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

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

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

void sampleWindowFull()

{

Β Β for (int i = 0; i < 128; i++)

Β Β {

Β Β Β Β int val = (analogRead(analogPin) β€” 512) * GAIN;

Β Β Β Β data[i] = val / 4;

Β Β Β Β im[i] = 0;

Β Β }

}

Ѐункция updateData вычисляСт Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ частотном ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅. Π‘ΠΈΠ»Π° сигнала вычисляСтся ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π° Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Β­ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, двумя Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сторонами ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈ мнимая части сигнала (практичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡ‹ ΠŸΠΈΡ„Π°Π³ΠΎΡ€Π°!):

void updateData()

{

Β Β for (int i = 0; i < 64; i++)

Β Β {

Β Β Β Β data[i] = sqrt(data[i] * data[i] + im[i] * im[i]);

Β Β }

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выводятся Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Π² ΠΎΠ΄Π½Ρƒ строку Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ игнорируСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ содСрТит ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ сигнала ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ прСдставляСт интСрСса.

Массив data ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для управлСния высотой столбиков Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ТидкокристалличСском дисплСС. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ источник сигнала (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΡƒΠ΄ΠΈΠΎΠ²Ρ‹Ρ…ΠΎΠ΄ MP3-ΠΏΠ»Π΅Π΅Ρ€Π°) ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠΉ ΠΆΠ΅ схСмы, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠ΅ сигнала ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ срСднСй Ρ‚ΠΎΡ‡ΠΊΠΈ 2,5 Π’, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ€Π°Π½Π΅Π΅, Π½Π° рис. 13.4.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ измСрСния частоты

Π’ этом, Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ»Π°Ρ‚Π° Arduino Uno ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ†Π΅Π½ΠΊΠΈ частоты сигнала Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° (sketch_13_07_FFT_Freq). Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² этом скСтчС повторяСт ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массива data опрСдСляСтся индСкс элСмСнта с наибольшим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ†Π΅Π½ΠΊΠΈ частоты. Π—Π°Ρ‚Π΅ΠΌ функция loop Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Цифровая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов β€” слоТная Ρ‚Π΅ΠΌΠ°, Π΅ΠΉ посвящСно мноТСство ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³. Из-Π·Π° Π΅Π΅ слоТности я коснулся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ использовании ΠΏΠ»Π°Ρ‚Ρ‹ Arduino.

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

14. ΠœΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ с СдинствСнным процСссом

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π² ΠΌΠΈΡ€ Arduino ΠΈΠ· ΠΌΠΈΡ€Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм, часто ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ отсутствиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ многозадачности Π² Arduino ΠΊΠ°ΠΊ сущСствСнноС ΡƒΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅. Π’ этой Π³Π»Π°Π²Π΅ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ограничСния ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ встроСнных систСм.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ· ΠΌΠΈΡ€Π° программирования Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм

ΠŸΠ»Π°Ρ‚Π° Arduino ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»Π° мноТСство энтузиастов (Π² Ρ‚ΠΎΠΌ числС ΠΈ мСня), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² индустрии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π΅ ΠΎΠ΄ΠΈΠ½ Π³ΠΎΠ΄, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² составС ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠ² ΠΈΠ· дСсятков Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ… усилия для создания Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ всС Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Для нас Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ проСктирования Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько строк ΠΊΠΎΠ΄Π° ΠΈ практичСски Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ интСрСсноС проявлСниС Π² физичСском ΠΌΠΈΡ€Π΅ являСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ противоядиСм ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅ΠΊ, ΠΏΡ€ΠΈΠ²ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² ΠΌΠΈΡ€Π΅ большого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ вСрсиями, ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… проСктирования, создании ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ просто почувствуйтС Ρ€Π°Π΄ΠΎΡΡ‚ΡŒ ΠΎΡ‚ простоты Arduino.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΈ выполнСния

Если Π²Π°ΠΌ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ застали Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° большоС распространСниС ΠΈΠΌΠ΅Π»ΠΈ домашниС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° БСйсикС, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Β«Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΒ». Если ΠΈΠ³Ρ€Π΅, написанной Π½Π° БСйсикС, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ нСсколько спрайтов, Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ ΠΊ ΡƒΠ»ΠΎΠ²ΠΊΠ΅ с ΠΎΠ±Ρ‰ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ спрайт пСрСмСщался Π½Π° нСбольшоС расстояниС.

Π­Ρ‚ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π· ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для программирования Arduino. ВмСсто создания мноТСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² выполнСния, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ СдинствСнного спрайта, достаточно СдинствСнного ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ спрайты ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ нСбольшими шагами, Π½Π΅ блокируя Π½ΠΈΡ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ многоядСрныС процСссоры, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ процСссора ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π’ Arduino, Π³Π΄Π΅ Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ довольно Ρ€Π΅Π΄ΠΊΠΎ, ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ setup ΠΈ loop

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ скСтчС трСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, setup ΠΈ loop, ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²Ρ‹Π±Ρ€Π°Π½ Π½Π΅ случайно. ЀактичСски функция loop вызываСтся снова ΠΈ снова, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Код Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loop Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠΎΠ·Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ вновь.

ΠžΡ†Π΅Π½ΠΊΠ°, Π·Π°Ρ‚Π΅ΠΌ дСйствиС

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² для Arduino ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для управлСния Ρ‡Π΅ΠΌ-Ρ‚ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ функция loop часто:

β€’ провСряСт Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ значСния;

β€’ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ дСйствиС.

ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ рСализация мигания свСтодиода Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это. Однако, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° выполняСтся ΠΊΠΎΠ΄, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ΠΌ свСтодиода, Π±Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ:

// sketch_14_01_flashing_1

const int ledPin = 13;

const int switchPin = 5;

const int period = 1000;

boolean flashing = false;

void setup()

{

Β Β pinMode(ledPin, OUTPUT);

Β Β pinMode(switchPin, INPUT_PULLUP);

}

void loop()

{

Β Β if (digitalRead(switchPin) == LOW)

Β Β {

Β Β Β Β flashing = ! flashing;

Β Β }

Β Β if (flashing)

Β Β {

Β Β Β Β digitalWrite(ledPin, HIGH);

Β Β Β Β delay(period);

Β Β Β Β digitalWrite(ledPin, LOW);

Β Β Β Β delay(period);

Β Β }

}

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° провСряСт Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Ρ†ΠΈΠΊΠ» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиода. Если ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° Π²ΠΎ врСмя этого Ρ†ΠΈΠΊΠ»Π°, Ρ„Π°ΠΊΡ‚ наТатия зафиксирован Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скСтча, Π½ΠΎ Ссли Π²Π°ΠΆΠ½ΠΎ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, слСдуСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loop. ЀактичСски послС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² Ρ€Π΅ΠΆΠΈΠΌ мигания Arduino Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ основноС врСмя Π½Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠŸΠ°ΡƒΠ·Π° Π±Π΅Π· приостановки

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ скСтч ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π΅Π· использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ delay:

// sketch_14_02_flashing_2

const int ledPin = 13;

const int switchPin = 5;

const int period = 1000;

boolean flashing = false;

long lastChangeTime = 0;

int ledState = LOW;

void setup()

{

Β Β pinMode(ledPin, OUTPUT);

Β Β pinMode(switchPin, INPUT_PULLUP);