--- title: "πŸ“Ÿ Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Arduino" date: 2023-02-24T16:46:09+03:00 draft: true tags: [arduino, tips] --- ⚠️ Π‘Ρ‚Π°Ρ‚ΡŒΡ носит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ ΠΈ находится Π² процСссС написания. Π•ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, части тСкста Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ## Π¦ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ ΠΈ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ВсС ΠΏΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° нСсколько Π²ΠΈΠ΄ΠΎΠ², Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² **количСствС** Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π°Ρ…. 1. **Power Pins** β€” ΠΏΠΎΡ€Ρ‚Ρ‹ питания, Ρ€Π΅ΠΆΠΈΠΌ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ нСльзя Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Они Π²Ρ‹Π΄Π°ΡŽΡ‚ стабилизированноС напряТСниС 5V ΠΈΠ»ΠΈ 3,3V, `Vin` Π²Ρ‹Π΄Π°Π΅Ρ‚ напряТСниС ΠΎΡ‚ источника питания, Π° `GND` β€” это Π·Π°Π·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ (ΠΎΠ±Ρ‰ΠΈΠΉ минус) 2. **PWM Pins** β€” ΠΏΠΎΡ€Ρ‚Ρ‹ с ШИМ модуляциСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄/Π²Ρ…ΠΎΠ΄. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΈΠ»ΡŒΠ΄Π° (˜) 3. **Analog In** β€” ΠΏΠΎΡ€Ρ‚Ρ‹, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ сигнал ΠΎΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ…ΠΎΠ΄/Π²Ρ‹Ρ…ΠΎΠ΄. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ШИМ ΠΌΠΎΠ΄ΡƒΠ»ΡΡ†ΠΈΡŽ. Π Π΅ΠΆΠΈΠΌ ΠΏΠΈΠ½ΠΎΠ² назначаСтся Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ `void setup` с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `pinMode()`, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ```c void setup() { pinMode(10, OUTPUT); // объявляСм ΠΏΠΈΠ½ 10 ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄ pinMode(A2, OUTPUT); // объявляСм ΠΏΠΈΠ½ A2 ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄ pinMode(12, INPUT); // объявляСм ΠΏΠΈΠ½ 12 ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ pinMode(A1, INPUT); // объявляСм ΠΏΠΈΠ½ A1 ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ } ``` **ПояснСния ΠΊ ΠΊΠΎΠ΄Ρƒ:** 1. К Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ `10` ΠΈ `A2` ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ свСтодиод, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. 2. Пин `10` ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ШИМ сигнала, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ»Π°Π²Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ свСтодиод, Π° ΠΏΠΈΠ½ `A2` ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ сигнал (`0` ΠΈΠ»ΠΈ `1`) 3. К Π²Ρ…ΠΎΠ΄Ρƒ `12` ΠΈ `A1` ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ сигнала Π½Π° этих ΠΏΠΈΠ½Π°Ρ… (логичСский Π½ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ) 4. К Π²Ρ…ΠΎΠ΄Ρƒ `A1` ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сигнал, Π½ΠΎ ΠΈ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ характСристику сигнала. ℹ️ **Для справки:** ΠŸΠΈΠ½Ρ‹ Π½Π΅ случайно Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° ΠΏΠΈΠ½Ρ‹ с ШИМ модуляциСй (_PWM Pins_) ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅. **PWM** ΠΏΠΈΠ½Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ сигнал, ΠΊ Π½ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ сСрвопривод, ΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ устройства, Π³Π΄Π΅ трСбуСтся ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ сигнал с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ характСристиками. **АналоговыС ΠΏΠΈΠ½Ρ‹** (_Analog In_) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², с Π½ΠΈΡ… входящий сигнал прСобразуСтся Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнного АЦП. ### ИспользованиС Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΏΠΈΠ½ΠΎΠ² ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ большого количСства устройств ΠΊ ΠΏΠ»Π°Ρ‚Π΅ ΠΏΠΈΠ½ΠΎΠ² ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ. Π’ΠΎΠ³Π΄Π° Π² скСтчС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎΠ΅, Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ², Ρ‚.Π΅. `A0` β€” это 14 ΠΏΠΈΠ½, `A1` β€” это 15 ΠΏΠΈΠ½ ΠΈ Ρ‚.Π΄. (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Uno ΠΈΠ»ΠΈ Nano). Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²Π΅ строчки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ```c void setup() { pinMode(A2, OUTPUT); // объявляСм ΠΏΠΈΠ½ A2, ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ pinMode(16, OUTPUT); // объявляСм ΠΏΠΈΠ½ 16, ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ } ``` ### НазначСниС ΠΏΠΈΠ½ΠΎΠ² SDA, SCL Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΡ€ΠΈΠ΅ΠΌΠ°/ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ **I2C**. НапримСр, ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΆΠΊ дисплСя с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ I2C ΠΈΠ»ΠΈ GPS модуля. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ устройством, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». На Ардуино Mega, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Uno ΠΈ Nano, имССтся Ρ†Π΅Π»Ρ‹Ρ… Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Ρ‹ ΠΏΠΈΠ½ΠΎΠ² SDA ΠΈ SCL. ### НазначСниС ΠΏΠΈΠ½ΠΎΠ² TX, RX ΠŸΠΈΠ½Ρ‹ TX/RX Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ **UART**. На ΠΏΠ»Π°Ρ‚Π°Ρ… Uni ΠΈ Nano ΠΏΠΈΠ½Ρ‹ TX/RX ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ USB Ρ€Π°Π·ΡŠΠ΅ΠΌΡƒ для связи с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚Π°ΠΌ устройство, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Bluetooth ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Ардуино скСтч Π½Π΅ получится, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Π° автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с устройства, Π° Π½Π΅ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. ## Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ `void loop()` ΠΈ `void setup()` Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ `void loop()` ΠΈ `void setup()` β€” это ΠΏΠ΅Ρ€Π²ΠΎΠ΅ с Ρ‡Π΅ΠΌ сталкиваСтся любой, ΠΊΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ знакомство с языком программирования ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ардуино. Π”Π°Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ скСтчС ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ†ΠΈΠΊΠ»ΠΎΠ² Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Arduino, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ встроСнныС ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Π½Π΅ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°Ρ‡Π°Π» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ, Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π½Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ скСтч. Оба Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ `main()` ΠΈΠ· Ρ„Π°ΠΉΠ»Π° `main.cpp`. ΠŸΡ€ΠΈ этом функция `void setup()` вызываСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° ΠΈ `void loop()` вызываСтся Π² Ρ†ΠΈΠΊΠ»Π΅ `for` бСсконСчноС количСство Ρ€Π°Π·. Если Π² скСтчС Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `void setup()` ΠΈΠ»ΠΈ `void loop()`, Ρ‚ΠΎ ΠΏΡ€ΠΈ компиляции Aduino IDE выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ: `redefinition of β€˜void setup()β€˜` ΠΈΠ»ΠΈ `redefinition of β€˜void loop()’` соотвСтствСнно. ### Ѐункция `void setup()` ```c void setup() { // ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок } ``` Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Π³Π΄Π΅ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°, поэтому всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° `void setup()` вызываСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для назначСния Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΈΠ½ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ### `void loop()` ПослС выполнСния Ρ†ΠΈΠΊΠ»Π° `setup`, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ» `loop`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π° ΠΏΠ»Π°Ρ‚Ρƒ ΠΏΠΎΠ΄Π°Π½ΠΎ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅. Если Ρ†ΠΈΠΊΠ» содСрТит ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ тысячи Ρ€Π°Π· Π² сСкунду. Если Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ скСтч для мигания свСтодиодом Π½Π° Arduino, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ для выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ½Π°Ρ‡Π΅ мигания свСтодиода Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ. Ѐункция `loop*()` ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ: ```c void loop() { // основной ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ располагаСтся здСсь } ``` Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ свСтодиод ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ устройства) Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Arduino Nano, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ `void setup()`. Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ дСйствиС постоянно, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с ΡƒΠ»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Π΄Π°Π»ΡŒΠ½ΠΎΠΌΠ΅Ρ€Π° **HC-SR04**, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ слСдуСт Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ `void loop()`. ### Ѐункция `pinMode()` Ѐункция `pinMode()` устанавливаСт Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΠ½Π°, ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°. Π¦ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄Π²ΡƒΡ… состояниях. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ…ΠΎΠ΄Π° ΠΏΠΈΠ½ считываСт напряТСниС ΠΎΡ‚ 0 Π΄ΠΎ 5 Π’ΠΎΠ»ΡŒΡ‚, Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π° – Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠΈΠ½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ напряТСниС. Π Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΈΠ½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° выбираСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `pinMode(pin, mode)`, Π³Π΄Π΅ `pin` это Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π°, Π° `mode` это Ρ€Π΅ΠΆΠΈΠΌ. ### pinMode OUTPUT **OUTPUT** (ΠΏΠΎΡ€Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄) β€” ΠΏΠΈΠ½ становится управляСмым источником питания с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΎΠΊΠΎΠΌ 40 мА. Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `digitalWrite()` ΠΏΠΈΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ нуля. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: `pinMode(10, OUTPUT)`. ### Ѐункция `digitalWrite()` ΠΈ `analogWrite()` Π¦ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ сигнал с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `digitalWrite()`, Ρ‚.Π΅. Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ напряТСниС 5 Π’ΠΎΠ»ΡŒΡ‚. Π¦ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ сигнал ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° значСния β€” `0` ΠΈΠ»ΠΈ `1` (0 Π’ΠΎΠ»ΡŒΡ‚ ΠΈΠ»ΠΈ 5 Π’ΠΎΠ»ΡŒΡ‚). Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° `analogWrite()` для ШИМ ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ‹, Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сигнал **PWM** Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ… β€” ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ сигнала. ```c void setup() { pinMode(10, OUTPUT); } void loop() { digitalWrite(10, HIGH); delay(250); digitalWrite(10, LOW); delay(250); } ``` К ΠΏΠΈΠ½Π°ΠΌ нСльзя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ устройства, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΠΊ Π±ΠΎΠ»Π΅Π΅ **40 мА**, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° β€” это управлСния Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ устройствами ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ логичСских сигналов. Если ΠΊ ΠΏΠΈΠ½Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ устройство, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‰Π΅Π΅ Ρ‚ΠΎΠΊ большС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния, Ρ‚ΠΎ ΠΏΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³ΠΎΡ€Π΅Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π½Π΅ слСдуСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΌΠΎΡ‰Π½Π΅Π΅ свСтодиода. ### pinMode INPUT **INPUT** (ΠΏΠΎΡ€Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄) β€” ΠΏΠΈΠ½ Π² этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ считываСт Π΄Π°Π½Π½Ρ‹Π΅ с Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², состояния ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠŸΠΎΡ€Ρ‚ находится Π² высокоимпСдансном состоянии, Ρ‚.Π΅. Ρƒ ΠΏΠΈΠ½Π° высокоС сопротивлСниС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: `pinMode(10, INPUT)`. ### Ѐункция `digitalRead()` ΠΈ `analogRead()` Arduino ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ напряТСния Π½Π° ΠΏΠΈΠ½Π΅ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `digitalRead()`, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ `0` (`LOW`) ΠΈΠ»ΠΈ `1` (`HIGH`). БущСствуСт Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅) ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ постоянно измСняСтся. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `analogRead()`, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ напряТСниС с Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число ΠΎΡ‚ `0` Π΄ΠΎ `1023`. ```c void setup() { pinMode(10, INPUT); Serial.begin(9600); } void loop() { int data = digitalRead(10); Serial.println(data); delay(250); } ``` НСльзя ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° напряТСниС Π²Ρ‹ΡˆΠ΅ напряТСния питания ΠΏΠ»Π°Ρ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `digitalRead()` ΠΈ `digitalWrite()`. Π’ этом случаС Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ (`digitalRead`) ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ (`digitalWrite`) Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ, Π° Π½Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ сигнал. ### pinMode INPUT_PULLUP **INPUT_PULLUP** (ΠΏΠΎΡ€Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄) Π½ΠΎ ΠΊ ΠΏΠΈΠ½Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ рСзистор Π² 20 кОм. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊ Ардуино ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ рСзисторы. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: `pinMode(10, INPUT_PULLUP)`. ## Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° `#define` Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° `#define` позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° значСниям (константам), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ скСтч Π±ΠΎΠ»Π΅Π΅ понятным. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя константы ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² скСтчС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… с описаниСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ `#define`. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ `#define`, Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСста Π² памяти ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ подставляСт значСния вмСсто ΠΈΠΌΠ΅Π½ ΠΏΡ€ΠΈ компиляции скСтча. Π Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ `ΠΠΠ™Π’Π˜` ΠΈ `Π—ΠΠœΠ•ΠΠ˜Π’Π¬` Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠŸΡ€ΠΈ компиляции скСтча компилятор Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° `<Ρ‡Ρ‚ΠΎ мСняСм>` ΠΈ замСняСт Π΅Π΅ Π½Π° кусок ΠΊΠΎΠ΄Π° `<Π½Π° Ρ‡Ρ‚ΠΎ мСняСм>`. **Бинтаксис Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹:** ```c #define <Ρ‡Ρ‚ΠΎ мСняСм> <Π½Π° Ρ‡Ρ‚ΠΎ мСняСм> ``` ΠŸΡ€ΠΈ использовании Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, константы ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€ΠΈ компиляции. ℹ️ **ΠžΠ±Ρ€Π°Ρ‚ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:** Π’ ΠΊΠΎΠ½Ρ†Π΅ строчки Π½Π΅ ставится Ρ‚ΠΎΡ‡ΠΊΠ° с запятой ΠΈ Π·Π½Π°ΠΊ равСнства, ΠΊΠ°ΠΊ это дСлаСтся ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ```c #define RED 11 // присваиваСм имя RED для ΠΏΠΈΠ½Π° 11 #define GRN 12 // присваиваСм имя GRN для ΠΏΠΈΠ½Π° 12 #define BLU 13 // присваиваСм имя BLU для ΠΏΠΈΠ½Π° 13 void setup() { pinMode(RED, OUTPUT); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PIN 11 для Π²Ρ‹Π²ΠΎΠ΄Π° pinMode(GRN, OUTPUT); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PIN 12 для Π²Ρ‹Π²ΠΎΠ΄Π° pinMode(BLU, OUTPUT); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PIN 13 для Π²Ρ‹Π²ΠΎΠ΄Π° } ``` ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π° Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° вмСсто Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ†Π²Π΅Ρ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΠΈΠ½Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½. А ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° `RED`, `GRN`, `BLU` Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния ΠΏΡ€ΠΈ компиляции. ### Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ `#ifdef`, `#ifndef` ΠΈ `#endif` Π² скСтчС Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ `#ifdef` провСрят, Π±Ρ‹Π»ΠΎ Π»ΠΈ встрСчСно Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅, Ссли Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ ставится Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΈ Π΄ΠΎ `#endif`. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ провСряСтся Π±Ρ‹Π» Π»ΠΈ Ρ€Π°Π½Π΅Π΅ Π² `#define` ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ссли Π΄Π°, Ρ‚ΠΎ ΠΊΠΎΠ΄ (Π²Ρ‹Π²ΠΎΠ΄ сообщСния Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡ€Ρ‚Π°) Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, Ссли ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‚ΠΎ сообщСниС Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ```c #ifdef DEBUG Serial.println("Debug message: ..."); #endif ``` Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ `#ifndef` провСрят, Π±Ρ‹Π»ΠΎ Π»ΠΈ встрСчСно Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΈ Ссли Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ вставится Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΈ Π΄ΠΎ `#endif`. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ новая константа, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π½Π΅Π΅ Π΅Ρ‘ Π½Π΅ объявляли Π² скСтчС. Если Π΄Π΅Ρ„Π°ΠΉΠ½ с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡƒΠΆΠ΅ использовался, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ строчки Π²Π½ΡƒΡ‚Ρ€ΠΈ конструкции `#ifndef … #endif`. ```c #ifndef RED #define RED 11 #endif ``` ### Π—Π°ΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `#define` ΠšΡ€ΠΎΠΌΠ΅ использования Π΄Π΅Ρ„Π°ΠΉΠ½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для объявлСния констант, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ `#define`. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТный, Π½ΠΎ интСрСсный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования `#define`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… инструкций Π² скСтчС. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `pinMode()` Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. ```c #define out(pin) pinMode(pin, OUTPUT) void setup() { out(11); out(12); out(13); } ``` Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция `pinMode()` Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΎΠ΄Π½ΠΈΠΌ словом `out`. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π³Π΄Π΅ Π² скСтчС встрСтится слово `out`, компилятор подставит строку `pinMode(pin, OUTPUT)` с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ `pin`. Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `digitalWrite()` ΠΈ `delay()`. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ RGB свСтодиод ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… свСтодиода с Π°Ρ€Π΄ΡƒΠΈΠ½ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° скСтча с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ Π΄Π΅Ρ„Π°ΠΉΠ½. ```c #define out(pin) pinMode(pin, OUTPUT) #define on(pin, del) digitalWrite(pin, HIGH); delay(del) #define off(pin, del) digitalWrite(pin, LOW); delay(del) void setup() { out(11); out(12); out(13); } void loop() { on(11, 500); off(11, 500); on(12, 500); off(12, 500); on(13, 500); off(13, 500); } ``` ## `define` ΠΈΠ»ΠΈ `const`, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ? Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ `#define` для создания констант, Π² этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово `const`. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `const` Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ сразу ΠΏΡ€ΠΈ объявлСнии константы. НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании `#define` ΠΈΠΌΠ΅Π½Π° слСдуСт Π΄Π΅Π»Π°Ρ‚ΡŒ максимально ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ совпадСний с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ```c const int RED = 11; // присваиваСм имя RED для ΠΏΠΈΠ½Π° 11 const int GRN = 12; // присваиваСм имя GRN для ΠΏΠΈΠ½Π° 12 const int BLU = 13; // присваиваСм имя BLU для ΠΏΠΈΠ½Π° 13 void setup() { pinMode(RED, OUTPUT); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PIN 11 для Π²Ρ‹Π²ΠΎΠ΄Π° pinMode(GRN, OUTPUT); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PIN 12 для Π²Ρ‹Π²ΠΎΠ΄Π° pinMode(BLU, OUTPUT); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PIN 13 для Π²Ρ‹Π²ΠΎΠ΄Π° } ``` ℹ️ **Для справки:** ИспользованиС `#define` ΠΈΠ»ΠΈ `const` Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСимущСств, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния экономии объСма памяти ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ## Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, `delay()` ΠΈ `millis()` ### `delayMicroseconds()` Ѐункция `delayMicroseconds()` останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство микросСкунд (**Π² 1 сСкундС 1 000 000 микросСкунд**). ΠŸΡ€ΠΈ нСобходимости Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° нСсколько тысяч микросСкунд рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `delay()`. ### `delay()` Ѐункция `delay()` останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство миллисСкунд (**Π² 1 сСкундС 1 000 миллисСкунд**). Π’ΠΎ врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `delay()`, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ считаны ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запись Π² `EEPROM` Π΄Π°Π½Π½Ρ‹Ρ…. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `millis()`. ### `millis()` Ѐункция `millis()` Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… миллисСкунд с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сбрасываСтся Π½Π° ноль ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ значСния `unsigned long` (**ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· 50 Π΄Π½Π΅ΠΉ**). Ѐункция `millis()` позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² Π°Ρ€Π΄ΡƒΠΈΠ½ΠΊΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ останавливаСтся ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² скСтчС. ```c unsigned long timer = 0; bool led_state = HIGH; void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); } void loop() { if (millis() - timer > 200) { led_state =! led_state; digitalWrite(LED_BUILTIN, led_state); timer = millis(); } // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ количСство миллисСкунд ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Serial.print("Time: "); Serial.println(timer); } ``` ## `tone()` ```text // FIXIT: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/tone-arduino/ ``` ## `map()` ```text // FIXIT: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/map-arduino/ ``` ## `random()` ```text // FIXIT: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/random-arduino/ ``` ## Serial Monitor ```text // FIXIT: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80-%d0%bf%d0%be%d1%80%d1%82%d0%b0-%d0%b0%d1%80%d0%b4%d1%83%d0%b8%d0%bd%d0%be/ ``` ## Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹: 1. [Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Arduino](https://xn--18-6kcdusowgbt1a4b.xn--p1ai/%d0%bf%d0%b8%d0%bd%d1%8b-%d0%b0%d1%80%d0%b4%d1%83%d0%b8%d0%bd%d0%be/) | Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ°18.Ρ€Ρ„