Arduino прСрывания ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π½Π° Arduino: Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ прСрывания ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСрывания ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π½Π° Arduino. КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π²ΠΈΠ΄Ρ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ прСрывания. Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ².

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ прСрывания ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ — это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° внСшниС события, Π½Π΅ тратя рСсурсы Π½Π° постоянный опрос состояния Π²Ρ…ΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ прСрывания основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° приостанавливаСтся, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства использования ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ:

  • МгновСнная рСакция Π½Π° событиС Π±Π΅Π· Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ
  • Экономия рСсурсов процСссора
  • Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ асинхронных событий

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΎΠΊ, энкодСров ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Π΅ устройства.

Π’ΠΈΠ΄Ρ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π½Π° Arduino

На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Arduino сущСствуСт Π΄Π²Π° основных Ρ‚ΠΈΠΏΠ° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ:


1. АппаратныС прСрывания

АппаратныС прСрывания ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Они ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ срабатывания. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΈΠ½Π°Ρ…
  • ΠœΠΎΠ³ΡƒΡ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ ΠΈΠ»ΠΈ ΡƒΡ€ΠΎΠ²Π½ΡŽ сигнала
  • Π˜ΠΌΠ΅ΡŽΡ‚ фиксированныС Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ прСрывания

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ прСрывания Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Arduino API. Π˜Ρ… прСимущСства:

  • Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° любом Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΈΠ½Π΅
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большС ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ
  • ΠŸΡ€ΠΎΡ‰Π΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ

Однако ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ прСрывания ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ срабатывания ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ.

Настройка Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСрывания ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ настройки Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСрывания для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ:

«`cpp const int buttonPin = 2; volatile bool buttonPressed = false; void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(buttonPin), buttonISR, FALLING); } void loop() { if (buttonPressed) { Serial.println(«ΠšΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°!»); buttonPressed = false; } } void buttonISR() { buttonPressed = true; } «`

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:


  • Кнопка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊ ΠΏΠΈΠ½Ρƒ 2 (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ прСрывания)
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ внутрСнняя подтяТка INPUT_PULLUP
  • ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ настроСно Π½Π° срабатываниС ΠΏΠΎ ΡΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ (FALLING)
  • Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ прСрывания (ISR) устанавливаСтся Ρ„Π»Π°Π³ buttonPressed
  • Основной Ρ†ΠΈΠΊΠ» провСряСт Ρ„Π»Π°Π³ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ

РСализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ прСрывания

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PinChangeInterrupt. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

«`cpp #include const int buttonPin = 4; volatile bool buttonPressed = false; void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT_PULLUP); attachPCINT(digitalPinToPCINT(buttonPin), buttonISR, FALLING); } void loop() { if (buttonPressed) { Serial.println(«ΠšΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°!»); buttonPressed = false; } } void buttonISR() { buttonPressed = true; } «`

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСрывания:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PinChangeInterrupt
  • ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π½Π° любой Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΈΠ½
  • ВмСсто attachInterrupt ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ attachPCINT

УстранСниС Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²

ΠŸΡ€ΠΈ использовании ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ эффСкт Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π‘Π΅Π· устранСния Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΎΠ΄Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ мноТСствСнныС срабатывания прСрывания.


БущСствуСт нСсколько способов устранСния Π΄Ρ€Π΅Π±Π΅Π·Π³Π°:

1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°

Π‘Π°ΠΌΡ‹ΠΉ простой способ — Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прСрывания:

«`cpp volatile unsigned long lastInterruptTime = 0; const unsigned long debounceDelay = 200; void buttonISR() { unsigned long interruptTime = millis(); if (interruptTime — lastInterruptTime >
debounceDelay) { buttonPressed = true; lastInterruptTime = interruptTime; } } «`

2. ИспользованиС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

Π‘ΠΎΠ»Π΅Π΅ эффСктивный способ — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ срабатывания:

«`cpp #include const int buttonPin = 2; volatile bool buttonState = HIGH; volatile bool lastButtonState = HIGH; volatile unsigned long lastDebounceTime = 0; const unsigned long debounceDelay = 50; void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(buttonPin), buttonISR, CHANGE); Timer1.initialize(1000); // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ миллисСкунду Timer1.attachInterrupt(checkButtonState); } void loop() { // Основной ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ } void buttonISR() { lastDebounceTime = micros(); } void checkButtonState() { if ((micros() — lastDebounceTime) >
debounceDelay) { bool reading = digitalRead(buttonPin); if (reading != lastButtonState) { lastButtonState = reading; if (reading == LOW) { Serial.println(«ΠšΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°!»); } } } } «`

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:


  • ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ срабатываСт ΠΏΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ
  • Π’ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ обновляСтся врСмя послСднСго измСнСния
  • Π’Π°ΠΉΠΌΠ΅Ρ€ пСриодичСски провСряСт, ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π»ΠΈ достаточно Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с послСднСго измСнСния
  • Если врСмя ΠΏΡ€ΠΎΡˆΠ»ΠΎ, провСряСтся Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΊΠ½ΠΎΠΏΠΊΠΈ

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с прСрываниями

ΠŸΡ€ΠΈ использовании ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  • Ѐункция-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прСрывания Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ максимально ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ
  • Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с прСрываниями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, delay())
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΈ ΠΈ основном ΠΊΠΎΠ΄Π΅, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ volatile
  • НуТно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ срабатывания (RISING, FALLING, CHANGE)
  • ΠŸΡ€ΠΈ использовании Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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


ЭкспСримСнтируйтС с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ ваТности тСстирования вашСго ΠΊΠΎΠ΄Π° Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях для обСспСчСния Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ устройства.


Π£Ρ€ΠΎΠΊ 5. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ постоянного Ρ‚ΠΎΠΊΠ° ESP32 ΠΈ MicroPython.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ вас Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ESP32 Π½Π° MicroPython

. БСгодня ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π‘ΡƒΠ΄Π΅ΠΌ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ постоянного Ρ‚ΠΎΠΊΠ° Π² ΠΎΠ΄Π½Ρƒ сторону Π΄ΠΎ срабатывания ΠΊΠ½ΠΎΠΏΠΊΠΈ. ПослС Ρ‡Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ рСвСрс вращСния двигатСля ΠΈ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ сработаСт вторая ΠΊΠΎΠΏΠΊΠ°. ВмСсто ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎΠ³ΠΎ выполнСния пСрСмСщСния.

А Π½Π°Ρ‡Π½Ρ‘ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ с измСнСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°, Π³Π΄Π΅ ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ свСтодиод ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

Для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ ΠΊΠΎΠ΄, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ избавимся ΠΎΡ‚ постоянного написания Β«machineΒ» Π² ΠΊΠΎΠ΄Π΅.

Для этого помСняСм ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ модуля с

import machine

Π½Π°

from machine import Pin

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Pin ΠΈΠ· модуля machine. И сСйчас Π² ΠΊΠΎΠ΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Β«PinΒ» вмСсто Β«machine.PinΒ».

Для использования внСшнСго прСрывания Π² MycroPython ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция.

button.irq(trigger=Pin.IRQ_FALLING, handler=my_button)

button.irq(trigger=Pin.IRQ_FALLING, handler=my_button) – настраиваСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΏΡ€ΠΈ появлСнии сигнала запуска. Если ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Pin.IN, Ρ‚ΠΎ источником сигнала запуска Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ внСшнСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°. Если ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Pin.OUT, Ρ‚ΠΎ источником сигнала запуска Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°. Но Ссли ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Pin.OPEN_DRAIN, Ρ‚ΠΎ источником сигнала запуска Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ (для Β«0Β») ΠΈ внСшнСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° (для Β«1Β»).

trigger – опрСдСляСт условиС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅:

  • Pin.IRQ_FALLING – ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π½Π΅ΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅.
  • Pin.IRQ_RISING – ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅.

handler – функция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ прСрывания, Π² ΠΌΠΎΡ‘ΠΌ случаС это функция my_button. Ѐункция handler Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ лишь ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ экзСмпляр класса Pin.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° напишСм ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ встроСнного свСтодиода ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«bootΒ» ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°, Π½ΠΎ ΡƒΠΆΠ΅ с использованиСм прСрывания.

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ my_button мСняСм логичСскоС стояниС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ свСтодиод. Π’Π΅ΠΌ самым Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΅Π³ΠΎ.

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π² консоли Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π΅ ΠΏΠΈΠ½Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°.

Если ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ trigger=Pin.IRQ_RISING ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ информация появляСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ отпускам ΠΊΠ½ΠΎΠΏΠΊΡƒ. Π’ΠΎΡ‚ Π² Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… условий срабатывания прСрывания.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ условия ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING

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

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ постоянного Ρ‚ΠΎΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ESP32 ΠΈ MycroPython.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ значСния. Для этого

ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΊ ESP32 Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ L298n ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ. Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΡ‚ΠΎΡ€ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ ΠΎΡ‚ машинки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ собирал ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° MycroPython Π²ΠΎΡ‚ Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ESP32, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° L298n ΠΈ двигатСля постоянного Ρ‚ΠΎΠΊΠ°.

Π’ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ рСзисторы, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ рСзисторами ΠΏΠ»Π°Ρ‚Ρ‹ ESP32. Для этого ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΈΠ½Ρ‹ с использованиСм Pin.PULL_UP.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π²Π° ΠΏΠΈΠ½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

  • press — Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ стояния ΠΊΠ½ΠΎΠΏΠΊΠΈ.
  • n_pin – Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ (pin).

Ѐункция my_button Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ„Π»Π°Π³ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ n_pin Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π° Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π° Π² Π²ΠΈΠ΄Π΅ числа, Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΈΠ· строки символы послС Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠ³ΠΎ ΠΈ Π±Π΅Π· послСднСго символа строки ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ my_button.

Π’ бСсконСчном Ρ†ΠΈΠΊΠ»Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

Π‘ΠΏΠ΅Ρ€Π²Π° ΠΌΡ‹ провСряСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ press. Если ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ отпускаСм Ρ„Π»Π°Π³ press.

Π”Π°Π»Π΅Π΅ провСряСм, какая ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°. Если лСвая ΠΊΠ½ΠΎΠΏΠΊΠ°, Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ надпись ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ вращСния. Если сработала правая ΠΊΠ½ΠΎΠΏΠΊΠ°, Ρ‚ΠΎ мСняСм Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вращСния ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ надпись Β«Π’Π»Π΅Π²ΠΎΒ».

Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ.

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ отобраТаСтся нСсколько строчСк с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΈΠ½ΠΎΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π­Ρ‚ΠΎ связанно с Π΄Ρ€Π΅Π±Π΅Π·Π³ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠΊΠΎΠ² Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Ρ€Π΅Π±Π΅Π·Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ШИМ.

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΡΡ Π£Ρ€ΠΎΠΊ 5. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ постоянного Ρ‚ΠΎΠΊΠ° ESP32 ΠΈ MicroPython? НС Π·Π°Π±ΡƒΠ΄ΡŒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ Π² соц. сСтях.

А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π½Π° YouTube, Π²ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅, Π² Π³Ρ€ΡƒΠΏΠΏΡƒ Π½Π° Facebook.

Бпасибо за вниманиС!

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с простого!

Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅

Π€Π°ΠΉΠ»Ρ‹ для скачивания

Бкачивая ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», я соглашаюсь с ΠŸΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ скачивания ΠΈ использования ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Избавимся ΠΎΡ‚ постоянного написания Β«machineΒ» Π² ΠΊΠΎΠ΄Π΅.py1 Kb 245Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ESP32 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка MycroPython. py1 Kb 250Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ постоянного Ρ‚ΠΎΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ESP32 ΠΈ MycroPython.py1 Kb 261Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ

Ардуино. ОписаниС GPIO.



ЛСвая сторона. Π‘Π²Π΅Ρ€Ρ…Ρƒ Π²Π½ΠΈΠ·.
β„–
Π²Ρ‹Π²ΠΎΠ΄Π°
НаимСнованиС
Π²Ρ‹Π²ΠΎΠ΄Π°
GPIOInputOutputI/OADCTOUCHШИМ
PWM
DAC  ОписаниС
Β Β Β Β Β Β Β Β Β Β Β Β Β 
23V3Β Β Β Β Β Β Β Β Β Β ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅: +3,3Π’
3EN          Бброс
4SENSOR VP36OKΒ Β ADC0Β +Β Β Β input only
5SENSOR VP39OKΒ Β ADC3Β +Β Β Β input only
6IO3434OKΒ Β ADC6Β +Β Β Β input only
7IO3535OKΒ Β ADC7Β +Β Β Β input only
8IO3232OKOKΒ ADC4TOUCH9+Β Β Β Β 
9IO3333OKOKΒ ADC5TOUCH8+Β Β Β Β 
10IO2525OKOKΒ ADC18Β +DAC_1Β Β Β 
11IO2626OKOKΒ ADC19Β +DAC_2Β Β Β 
12IO2727OKOKΒ ADC17TOUCH7+Β Β Β Β 
13IO1414OKOKΒ ADC16TOUCH6+Β HSPICLKHS2 CLKoutputs PWM signal at boot
14IO1212OKOKΒ ADC15TOUCH5+Β HSPICHS DATA2boot fail if pulled high
1GNDΒ Β Β Β Β Β Β Β Β Β Β 
16IO1313OKOKΒ ADC14TOUCh5+Β HSPIDHS DATA3Β 
17SD29xxΒ Β Β +Β Β Β connected to the integrated SPI flash
18SD310xxΒ Β Β +Β Β Β connected to the integrated SPI flash
Β GNDΒ Β Β Β Β Β Β Β Β Β Β 
Β +5VΒ Β Β Β Β Β Β Β Β Β ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅: +5Π’
Β Β Β Β Β Β Β Β Β Β Β Β Β 
ΠŸΡ€Π°Π²Π°Ρ сторона. Π‘Π²Π΅Ρ€Ρ…Ρƒ Π²Π½ΠΈΠ·.
β„–
Π²Ρ‹Π²ΠΎΠ΄Π°
НаимСнованиС
Π²Ρ‹Π²ΠΎΠ΄Π°
GPIOInputOutputI/OADCTOUCHШИМ
PWM
DAC  ОписаниС
Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β GNDΒ Β Β Β Β Β Β Β Β Β Β 
37IO2323OKOKΒ Β Β +Β VSIPIDHS1 STROBEΒ 
36 SCLIO2222OKOKΒ Β Β +Β VSPIWPΒ Β 
35 TXD0Β 1Β Β Β Β Β +Β Β Β debug output at boot
34 RXD0Β 3OKΒ Β Β Β +Β Β Β HIGH at boot
33 SDAIO2121OKOKΒ Β Β +Β VSIHDΒ Β 
Β GNDΒ Β Β Β Β Β Β Β Β Β Β 
31IO1919OKOKΒ Β Β +Β VSPIQΒ Β 
30IO1818OKOKΒ Β Β +Β VSPICLKHS1-DATA7Β 
29IO055OKOKΒ Β Β +Β VSPICSOHS1-DATA6outputs PWM signal at boot
28IO1717OKOKΒ Β Β +Β Β HS1-DATA5Β 
27IO1616OKOKΒ Β Β +Β Β HS1-DATA4Β 
26IO44OKOKΒ ADC10TOUCH0+Β HSPIHDHS1-DATA1Β 
25IO00Β Β Β ADC11TOUCh2+Β Β Β Β 
24IO22OKOKΒ ADC12TOUCh3+Β HSPIWPHS2-DATA0connected to on-board LED
23IO1515OKOKΒ ADC13TOUCh4+Β HSPICSOHS2-CMDΒ 
22SD18xxΒ Β Β +Β SPIDHS1-DATA1connected to the integrated SPI flash
21SD07xxΒ Β Β +Β SPIQHS1-DATA0connected to the integrated SPI flash
20CLK6xxΒ Β Β +Β SPICLKHS1-CLKconnected to the integrated SPI flash
Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β 0pulled upOKΒ Β Β Β Β Β Β outputs PWM signal at boot
Β Β 11xxΒ Β Β Β Β Β Β connected to the integrated SPI flash

К ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ устройствам ESP32 относятся:

  • 18 Каналов Π°Π½Π°Π»ΠΎΠ³ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ прСобразоватСля (АЦП )
  • 3 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ° SPI3
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ UART2
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ I2C16
  • Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ШИМ
  • 2 Π¦ΠΈΡ„Ρ€ΠΎ-Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… прСобразоватСля (ЦАП)
  • 2 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ° I2S10
  • ЕмкостныС ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ GPIO

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ АЦП (Π°Π½Π°Π»ΠΎΠ³ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ) ΠΈ ЦАП (Ρ†ΠΈΡ„Ρ€ΠΎ-Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ) Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΠΈΠ½Π°ΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ‹ сами Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎΠ΄ интСрфСйсы UART, I2C, SPI, PWM ΠΈ Ρ‚. Π΄. — ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ благодаря Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ‡ΠΈΠΏΠ° ESP32.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΈΠ½Ρ‹,Β Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС (это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»Π°Ρ‚Ρ‹ ESP32 DEVKIT V1 DOIT с 36 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ — располоТСниС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ производитСля). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… подходящими ΠΈΠ»ΠΈ Π½Π΅ подходящими для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС Π²Ρ…ΠΎΠ΄ΠΎΠ², Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ², Π° с ΠΊΠ°ΠΊΠΈΠΌΠΈ слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹, с «ΠžΠš», подходят для использования. ΠŸΠΈΠ½Ρ‹ Π±Π΅Π· «ΠžΠš», подходят для использования, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° Π½ΠΈΡ…Β Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π² основном ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.Β 

GPIO с 34 ΠΏΠΎ 39 ΡΠ²Π»ΡΡŽΡ‚ΡΡ GPI — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅. Π­Ρ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΠΈΠΆΠ°ΡŽΡ‰ΠΈΡ… рСзисторов. Они Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эти ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Ρ‹:

  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

ΠžΡ‚ GPIO 6 Π΄ΠΎ GPIO 11 прСдставлСны Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π°Ρ… ESP32. Однако эти ΠΏΠΈΠ½Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ встроСнной Ρ„Π»ΡΡˆ-памяти SPI Π½Π° микросхСмС ESP-WROOM-32 их рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ. НазначСниС этих ΠΏΠΈΠ½ΠΎΠ²:

  • GPIO 6 (SCK / CLK)
  • GPIO 7 (SDO / SD0)
  • GPIO 8 (SDI / SD1)
  • GPIO 9 (SHD / SD2)
  • GPIO 10 (SWP / SD3)
  • GPIO 11 (CSC / CMD)

ESP32 ΠΈΠΌΠ΅Π΅Ρ‚ 10 Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Смкостных сСнсорных Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ². Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ содСрТит элСктричСский заряд, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Β ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ касании ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ GPIO. Π­Ρ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ встроСны Π² Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ касания ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ мСханичСскиС ΠΊΠ½ΠΎΠΏΠΊΠΈ. ЕмкостныС сСнсорныС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для пробуТдСния ESP32 ΠΎΡ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ сна.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ сСнсорныС Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ этим GPIO:

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)

ESP32 ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ АЦП 18 x 12 Π±ΠΈΡ‚. Π­Ρ‚ΠΎ GPIO, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС АЦП:

  • ADC1_CH0 (GPIO 36)
  • ADC1_Ch2 (GPIO 37)
  • ADC1_Ch3 (GPIO 38)
  • ADC1_Ch4 (GPIO 39)
  • ADC1_Ch5 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_12 GPO (0)
  • ADC2_Ch3 (GPIO 2)
  • ADC2_Ch4 (GPIO 15)
  • ADC2_Ch5 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ADC2 нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании Wi-Fi. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Wi-Fi ΠΈ Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ значСния ΠΎΡ‚ GPIO ADC2, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вмСсто этого Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования GPIO ADC1, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ АЦП ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ 12 Π±ΠΈΡ‚. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ показания Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 4095, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 0 соотвСтствуСт 0 Π’, Π° 4095 — 3,3 Π’. Π£ вас Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ АЦП.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ АЦП ESP32 Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. Об этом слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ использовании Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² АЦП. НиТС прСдставлСн Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅ΠΌΡ‹Ρ…Β Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² зависимости ΠΎΡ‚ напряТСния:

На ESP32 ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π° 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»Π° ЦАП для прСобразования Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… сигналов Π² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ сигналы напряТСния. ΠŸΠΈΠ½Ρ‹ ЦАП:

  • ЦАП1 (GPIO25)
  • ЦАП2 (GPIO26)

На ESP32 Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° RTC GPIO. GPIO, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π² подсистСму с Π½ΠΈΠ·ΠΊΠΈΠΌ энСргопотрСблСниСм RTC, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ESP32 находится Π² состоянии Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ сна. Π­Ρ‚ΠΈ RTC GPIO ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ESP32 ΠΈΠ· Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ сна, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сопроцСссор Ultra Low Power (ULP). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ GPIO ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² качСствС внСшнСго источника пробуТдСния.

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO11 (GPIO0)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 ( GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)

ШИМ-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ESP32 ΠΈΠΌΠ΅Π΅Ρ‚ 16 нСзависимых ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ШИМ-сигналов с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ свойствами. ВсС Π²Ρ‹Π²ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ШИМ (GPIO с 34 ΠΏΠΎ 39 Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ШИМ).

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сигнал ШИМ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΊΠΎΠ΄Π΅:

  • Частота сигнала;
  • Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ†ΠΈΠΊΠ»;
  • ШИМ-ΠΊΠ°Π½Π°Π»;
  • GPIO, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ вывСсти сигнал.

ΠŸΡ€ΠΈ использовании ESP32 с Arduino IDE слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ESP32 I2C ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Wire):

  • GPIO 21 (SDA)
  • GPIO 22 (SCL)

ΠŸΠΈΠ½Ρ‹ для SPI ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

SPIMOSIMISOCLKCS
VSPIGPIO 23GPIO 19GPIO 18GPIO 5
HSPIGPIO 13GPIO 12GPIO 14GPIO 15

ВсС GPIO ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ настроСны для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

Strapping pin — ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ (ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π°Ρ‡Π΅ Π½Π° Π½Π΅Π³ΠΎ сигнала)

  • GPIO 0
  • GPIO 2
  • GPIO 4
  • GPIO 5
  • GPIO 12
  • GPIO 15

Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ESP32 Π² Ρ€Π΅ΠΆΠΈΠΌ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ. На Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΠ»Π°Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ со встроСнным USB / Serial Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ состоянии этих ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ². ΠŸΠ»Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ состояниС для ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Однако, Ссли ΠΊ этим ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства, Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒΒ ESP32Β ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρƒ.Β 

НСкоторыС GPIO ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ своС состояниС Π½Π° Hight ΠΈΠ»ΠΈ выводят ШИМ-сигналы ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈΠ»ΠΈ сбросС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊ этим GPIO, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ESP32.

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6 — GPIO 11 (ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹Β ΠΊ встроСнной Ρ„Π»ΡΡˆ-памяти SPI ESP32 — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ рСкомСндуСтся).
  • GPIO 14
  • GPIO 15

En (Enable) / RST (Reset) — Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для пСрСзапуска ESP32.

Для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ — ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСктролитичСский кондСнсатор 10ΠΌΠΊΠ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ EN ΠΈ GND!!! Π‘Π΅Π· кондСнсатора для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «boot/En/RST».

Π’Π°ΠΊΠΆΠ΅, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠ°Π΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄(Ρ‹) GND ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° с шиной GND ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹!!! Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ массу Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π½Π΅Ρ€Π²ΠΎΠ².

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊ, потрСбляСмый GPIO, составляСт 40 мА.

ESP32 Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π₯ΠΎΠ»Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ измСнСния Π² ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π² Π΅Π³ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ.

Β 

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ запросы ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ Raspberry Pi Pico ΠΈ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ интСрфСйсу ΠΊΠ½ΠΎΠΏΠΎΠΊ с использованиСм MicroPython.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ обсудим, ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ с Raspberry Pi Pico RP2040 ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ прСрывания. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΈΠ±ΠΎ ΠžΠΏΡ€ΠΎΡ , Π»ΠΈΠ±ΠΎ ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ . Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎΠ± устранСнии Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π²ΠΎΠ΄ΠΎΠ². Код Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ написан Π½Π° MicroPython. Π­Ρ‚ΠΎ руководство Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для всСх Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Raspberry Pi Pico, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 9.0003 Малина Пи Пико W .

Кнопки Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ устройства Π²Π²ΠΎΠ΄Π° для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… состояниС. Кнопка, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ питания ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ логичСский высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (1), Π° ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ ΠΊ Π·Π΅ΠΌΠ»Π΅, Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ логичСский Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (0). Raspberry Pi Pico питаСтся ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° RP2040, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ 36 ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (GPIO) . ВсС Π²Ρ‹Π²ΠΎΠ΄Ρ‹ GPIO Raspberry Pi Pico ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅. ВсС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ GPIO Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ настроСны ΠΊΠ°ΠΊ внСшниС прСрывания .

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠΏΡ€ΠΎΡ ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅

ΠžΠΏΡ€ΠΎΡ ΠΈ прСрывания β€” это Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для взаимодСйствия с внСшними ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, цифровая ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈ Ρ‚. Π΄. ΠžΠΏΡ€ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° устройству Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ трСбуСтся Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

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

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ частями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ обслуТивания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ (ISR). Когда происходит ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, ЦП Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Когда Π·Π°Π΄Π°Ρ‡Π° Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, процСссор ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ΠΎΠ½ Π±Ρ‹Π» остановлСн.

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

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия для этого руководства

  • Raspberry Pi Pico ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ MicroPython.
  • Кнопка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊΡ‚ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ).
  • Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° ΠΈ макСтная ΠΏΠ»Π°Ρ‚Π°.

Нам Π½ΡƒΠΆΠ΅Π½ Raspberry Pi Pico с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ MicroPython UF2 . Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с нашим руководством β€” Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ Raspberry Pi Pico для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… β€” Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с MicroPython ΠΈ Thonny, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pico.

Кнопки чтСния с использованиСм опроса Π² Raspberry Pi Pico (RP2040).

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄ опроса чтСния ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Pico, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° схСмС Π½ΠΈΠΆΠ΅.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Raspberry Pi Pico. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Fritzing. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ с использованиСм Fritzing

Raspberry Pi Pico ΠΈΠΌΠ΅Π΅Ρ‚ 26 лСгкодоступных GPIO Π½Π° своСй ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой ΠΈΠ· этих ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² GPIO для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’ΠΎΡ‚ схСма ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Raspberry Pi Pico W для справки. Распиновка

Raspberry Pi Pico W. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Datasheet

ΠœΡ‹ напишСм скрипт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π’Π«Π‘ΠžΠšΠžΠ™ ΠΈΠ»ΠΈ ΠΠ˜Π—ΠšΠžΠ™. Пико ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ рСзистора. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ рСзистор? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Π΅Π· настроСнного подтягивания ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΡˆΡƒΠΌΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΌ состоянии.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Pico ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

 

с PIN-ΠΊΠΎΠ΄Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ счСтчик=0 Π²Ρ‹Π²ΠΎΠ΄ = Π²Ρ‹Π²ΠΎΠ΄ (5, Π²Ρ‹Π²ΠΎΠ΄.IN, Π²Ρ‹Π²ΠΎΠ΄.PULL_UP) ΠΏΠΎΠΊΠ° Π²Π΅Ρ€Π½ΠΎ: Ссли pin.value()==0: print("Кнопка Π½Π°ΠΆΠ°Ρ‚Π°") счСтчик+=1 print("Count={}".format(counter))

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π½Π° Raspberry Pi Pico с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«.pyΒ». ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ½ΠΎΠΏΠΊΠ° находится Π² Π’Π«Π‘ΠžΠšΠžΠœ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π° Π½Π΅ Π² ΠΠ˜Π—ΠšΠžΠœ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ PULL_DOWN вмСсто PULL_UP ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ свой ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

 

ΠΈΠ· ΠΏΠΈΠ½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ счСтчик=0 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ = ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ (5, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚. IN, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚.PULL_DOWN) ΠΏΠΎΠΊΠ° Π²Π΅Ρ€Π½ΠΎ: Ссли pin.value() Ρ€Π°Π²Π½ΠΎ 1: счСтчик+=1 print("Кнопка Π½Π°ΠΆΠ°Ρ‚Π°") print("Count={}".format(counter))

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

ОбъяснСниС кода :

  • ΠœΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ класс Pin ΠΈΠ· модуля ΠΌΠ°ΡˆΠΈΠ½Ρ‹ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для взаимодСйствия с ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ GPIO. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ counter для подсчСта количСства Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ.
 

ΠΎΡ‚ ΡˆΡ‚ΠΈΡ„Ρ‚Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ counter=0

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: JavaScript (javascript)
  • БоздаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ pin , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 3 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ΠœΡ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌ GPIO 5 ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ PULL_UP.
 

pin = Pin(5, Pin. IN, Pin.PULL_UP)

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)
  • Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° while ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ€Π°Π²Π½ΠΎ Π»ΠΈ pin.value() 0, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Π·Π΅ΠΌΠ»Π΅ (Ρ‚. Π΅. ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°Ρ‚Π°). Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ счСтчика ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика.
 

, Ссли pin.value() Ρ€Π°Π²Π½ΠΎ 1: счСтчик+=1 print("Кнопка Π½Π°ΠΆΠ°Ρ‚Π°") ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ("Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ={}".Ρ„ΠΎΡ€ΠΌΠ°Ρ‚(счСтчик))

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

УстранСниС Π΄Ρ€Π΅Π±Π΅Π·Π³Π° ΠΏΠΈΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MicroPython Π² Raspberry Pi Pico

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

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ устранСниС Π΄Ρ€Π΅Π±Π΅Π·Π³Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ наш скрипт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ с нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ time Π² MicroPython. Он содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ time.ticks_ms() , которая описываСтся ΠΊΠ°ΠΊ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ счСтчик миллисСкунд с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, которая возвращаСтся послС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ значСния». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ случайноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π² миллисСкундах), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ увСличиваСтся Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя событиями.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ этот ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ скрипт ΠΈ сохранитС Ρ„Π°ΠΉΠ» Π½Π° Raspberry Pi Pico с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Β«. pyΒ»:

 

ΠΈΠ· PIN-ΠΊΠΎΠ΄Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹. врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° счСтчик=0 debounce_time = 0 Π²Ρ‹Π²ΠΎΠ΄ = Π²Ρ‹Π²ΠΎΠ΄ (5, Π²Ρ‹Π²ΠΎΠ΄.IN, Π²Ρ‹Π²ΠΎΠ΄.PULL_UP) ΠΏΠΎΠΊΠ° Π²Π΅Ρ€Π½ΠΎ: Ссли ((pin.value() Ρ€Π°Π²Π½ΠΎ 0) ΠΈ (time.ticks_ms()-debounce_time) > 300): счСтчик+=1 debounce_time=time.ticks_ms() print("Кнопка Π½Π°ΠΆΠ°Ρ‚Π°") print("Count={}".format(counter))

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

ΠœΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ debounce_time . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ провСряСм, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π»ΠΈ врСмя, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ, 300 миллисСкунд , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ (time.ticks_ms()-debounce_time) > 300) . Если это условиС выполняСтся, Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счСтчик Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ устанавливаСм debounce_time Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ time. ticks_ms() . Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° использованиС millis() 9Ѐункция 0004 Π² Arduino.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ прСрывания Π² Raspberry Pi Pico (RP2040)

ВсС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ GPIO Π² Raspberry Pi Pico ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ прСрывания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°:

  • Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ
  • Низкий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ : ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ происходит, ΠΊΠΎΠ³Π΄Π° Π½Π° Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ»ΠΈ логичСский 0.
  • ΠΠ°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚ : ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ происходит, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· ΠΠ˜Π—ΠšΠžΠ“Πž Π² Π’Π«Π‘ΠžΠšΠžΠ• состояниС.
  • Falling Edge : ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ происходит, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· состояния HIGH Π² LOW.

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ уровня Π² Pico Π½Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ρ‚.Π΅. ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ становится Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ GPIO мСняСт своС состояниС с HIGH Π½Π° LOW ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

РСкомСндуСмая ΡΡ‚Π°Ρ‚ΡŒΡ: OLED-дисплСй Raspberry Pi Pico SSD1306 Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ с использованиСм MicroPython

ИспользованиС ΠΊΠ½ΠΎΠΏΠΎΠΊ для запуска ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Raspberry Pi Pico

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ интСрфСйс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ прСрывания. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚ (ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚) напряТСния Π½Π° Π²Ρ‹Π²ΠΎΠ΄Π΅ для запуска прСрывания. 9БоСдинСния 0003 Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ использовали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для опроса Π²Ρ…ΠΎΠ΄Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚.Π΅. ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ GP5 ΠΈ GND .

  • Π’ Thonny IDE создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сцСнария прСрывания Π½Π° Pi Pico.
 

ΠΎΡ‚ ΡˆΡ‚ΠΈΡ„Ρ‚Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³ = 0 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ = ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ (5, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚. Π’Π₯ΠžΠ”, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚. PULL_UP) ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ (ΠΏΠΈΠ½): Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°Π³_прСрывания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³ = 1 pin.irq(Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€=Pin.IRQ_FALLING, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ=ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²) ΠΏΠΎΠΊΠ° Π²Π΅Ρ€Π½ΠΎ: Ссли Ρ„Π»Π°Π³_прСрывания Ρ€Π°Π²Π΅Π½ 1: print("ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅") ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³=0

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)
  • НаТмитС Π·Π½Π°Ρ‡ΠΎΠΊ Run ΠΈΠ»ΠΈ F5 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт.
  • Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ сцСнарий Π² Pico ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ interrupt.py ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«.pyΒ».

ΠŸΡ€ΠΈ запускС сцСнария Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ строку Β«ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅Β», ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡƒΡŽ Π² ΠΎΠΊΠ½Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Thonny ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ОбъяснСниС ΠΊΠΎΠ΄Π° внСшнСго прСрывания

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ класс Pin ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ interrupt_flag Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для отслСТивания возникновСния ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² MicroPython доступны для всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ pin класса Pin . GPIO 5 настроСн ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ PULL_UP .

 

ΠΎΡ‚ ΡˆΡ‚ΠΈΡ„Ρ‚Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³ = 0 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ = ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ (5, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚. IN, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚. PULL_UP)

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ callback() для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Код Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ быстро ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ использованиС ЦП основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠœΡ‹ устанавливаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ interrupt_flag ΠΊΠ°ΠΊ 1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово global , ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ мСняСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

 

ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (ΠΏΠΈΠ½-ΠΊΠΎΠ΄): Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°Π³_прСрывания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³=1

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊ ΠΏΠΈΠ½Ρƒ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ irq() . Π­Ρ‚Π° функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ : Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²-

(1) Pin. IRQ_FALLING – ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π·Π°Π΄Π½Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ.

(2) Pin.IRQ_RISING – ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ.

(3) Pin.IRQ_LOW_LEVEL – ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΠ˜Π—ΠšΠžΠœΠ£ ΡƒΡ€ΠΎΠ²Π½ΡŽ.

(4) Pin.IRQ_HIGH_LEVEL - ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π’Π«Π‘ΠžΠšΠžΠœΠ£ ΡƒΡ€ΠΎΠ²Π½ΡŽ.

(5) Pin.IRQ_FALLING | Pin.IRQ_RISING – ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌΡƒ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ Π·Π°Π΄Π½Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ.

ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ : ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ прСрывания.

 

pin.irq(Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€=Pin.IRQ_FALLING, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ=ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²)

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

Π’ Ρ†ΠΈΠΊΠ»Π΅ while ΠΌΡ‹ постоянно провСряСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ interrupt_flag . Если это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся ΠΊΠ°ΠΊ Β«1Β», это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. ΠœΡ‹ сбрасываСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Β«0Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ установлСна ​​снова ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ прСрывания.

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

ИспользованиС внСшнСго прСрывания для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиода с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MicroPython

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ встроСнный свСтодиод Raspberry Pi Pico ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Ρ€Π΅Π±Π΅Π·Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ внСшнСго прСрывания. Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ понятным, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ обсуТдали ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π½Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

 

# Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Electrocredible.com, язык: MicroPython ΠΈΠ· ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Pin врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³ = 0 debounce_time = 0 Π²Ρ‹Π²ΠΎΠ΄ = Π²Ρ‹Π²ΠΎΠ΄ (5, Π²Ρ‹Π²ΠΎΠ΄. IN, Π²Ρ‹Π²ΠΎΠ΄.PULL_UP) свСтодиод = ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ («свСтодиод», ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚. Π’Π«Π₯.) количСство = 0 ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ (ΠΏΠΈΠ½): Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ interrupt_flag, debounce_time Ссли (time.ticks_ms()-debounce_time) > 500: ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³ = 1 debounce_time=time.ticks_ms() pin.irq(Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€=Pin.IRQ_FALLING, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ=ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²) ΠΏΠΎΠΊΠ° Π²Π΅Ρ€Π½ΠΎ: Ссли Ρ„Π»Π°Π³_прСрывания Ρ€Π°Π²Π΅Π½ 1: ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅_Ρ„Π»Π°Π³ = 0 print("ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅") led.toggle()

Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ΄Π°: Python (python)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ встроСнный свСтодиод Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями ON ΠΈ OFF.

ΠžΠΏΡ€ΠΎΡ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅? Какой ΠΈΠ· Π½ΠΈΡ… я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

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

НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΠ± использовании Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π² Raspberry Pi Pico оказалась для вас ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своими мыслями Π² коммСнтариях Π½ΠΈΠΆΠ΅. Бпасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ :

  • Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ встроСнному Π΄Π°Ρ‚Ρ‡ΠΈΠΊΡƒ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Raspberry Pi Pico с использованиСм MicroPython.
  • Руководство ΠΏΠΎ ШИМ для Raspberry Pi Pico.
  • Руководство ΠΏΠΎ АЦП Raspberry Pi Pico с использованиСм MicroPython.
  • I2C Π² Raspberry Pi Pico.

Arduino Workshop — Π“Π»Π°Π²Π° 5 — ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСрывания. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ Π½ΠΈΡ… Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈ это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ Π²Ρ…ΠΎΠ΄Π°ΠΌΠΈ.

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

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

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, сущСствуСт Ρ‚Ρ€ΠΈ основных Ρ‚ΠΈΠΏΠ° измСнСния ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ: ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅. Когда Π²Ρ‹ сообщаСтС Arduino, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для Π²Ρ‹Π²ΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, Π²Ρ‹ сообщаСтС Π΅ΠΌΡƒ, ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… условиях Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. На ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅ сигнал ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ высокому, Π½Π° Π·Π°Π΄Π½Π΅ΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅ сигнал ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‚ высокого ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΌΡƒ ΠΈΠ»ΠΈ Π»ΠΈΠ±ΠΎ нарастаСт, Π»ΠΈΠ±ΠΎ ΠΏΠ°Π΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ называСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ. Когда это условиС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ваш Arduino запустит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ для этого прСрывания. Π­Ρ‚Π° функция извСстна ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обслуТивания прСрывания ΠΈΠ»ΠΈ ISR, ΠΊΠ°ΠΊ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅. ΠšΠ»ΡŽΡ‡ΠΎΠΌ ΠΊ прСрываниям являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ выполняСт Π² вашСм ISR, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ сработаСт, ΠΎΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ваш ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±Ρ‹Π» Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΈ обслуТит ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎΠ΅, Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ ISR Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ мСсту, Π³Π΄Π΅ ΠΎΠ½ остановился, ΠΈ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΏΠΎΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ISR, поэтому, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π–Πš-дисплСй ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ сСти Wi-Fi ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ТСсткой синхронизации ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, эти процСссоры часто выходят ΠΈΠ· строя, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, хотя ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ссли ваш ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½, выполняя ISR, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для использования ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ, поэтому Π²ΠΎΡ‚ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основных ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ‡Π΅Π³ΠΎ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ с Arduino.

Π”Π΅Ρ€ΠΆΠΈΡ‚Π΅ ISR ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ обслуТивания прСрывания, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ прСрывания ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эти ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ обслуТивания прСрывания Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для установки Ρ„Π»Π°Π³Π° ΠΈΠ»ΠΈ измСнСния состояния, Π° Π½Π΅ для выполнСния всСго Ρ€Π°Π·Π΄Π΅Π»Π° ΠΊΠΎΠ΄Π°. ISR Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ значСния ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «миллис», встроСнной Π² Arduino, ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ISR, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ основаны Π½Π° функциях прСрывания, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. Π—Π°Π΄Π΅Ρ€ΠΆΠ°Π½Π½Ρ‹Π΅ микросСкунды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ Π² микросСкундах, Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ основаны Π½Π° прСрываниях. Π›ΡŽΠ±Π°Ρ пСрСмСнная, которая измСняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ISR, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна ​​с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ volatile, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСрывания. На Arduino Uno Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ 2 ΠΈ 3 ΠΈΠΌΠ΅ΡŽΡ‚ возмоТности прСрывания, ΠΈ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС микросхСмы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ всС Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π½Π° всСх ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°Ρ…. НСкоторыС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, растСт ΠΈΠ»ΠΈ ΠΏΠ°Π΄Π°Π΅Ρ‚ сигнал, Π½ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ Π½Π° любом ΠΈΠ· Π½ΠΈΡ…, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ состояниС Π²Ρ…ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π±Ρ‹Π» Π»ΠΈ ΠΎΠ½ Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΌ ΠΈΠ»ΠΈ ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ. ΠΊΡ€Π°ΠΉ.

Для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ доступны всС Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ для ΡΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π°, Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π° ΠΈΠ»ΠΈ смСны ΡˆΡ‚ΠΈΡ„Ρ‚Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ прСрывания, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π˜Ρ‚Π°ΠΊ, я взгляну Π½Π° Arduino IDE. Π˜Ρ‚Π°ΠΊ, Ρƒ мСня Π΅ΡΡ‚ΡŒ базовая функция, ΠΈ ΠΎΠ½Π° нСвСроятно ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² «Ссли», Π³Π΄Π΅ ΠΌΡ‹ рассмотрСли «устранСниС Π΄Ρ€Π΅Π±Π΅Π·Π³Π°Β» ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ использованиС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Β«FΒ» ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Β«DebouncingΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ наши ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚ΠΊΠΎ, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Β«ifΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π±Ρ‹Π»ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡƒΡ‰Π΅Π½ΠΎ. Π˜Ρ‚Π°ΠΊ, это ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρƒ нас Π΅ΡΡ‚ΡŒ свСтодиодныС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈ СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ здСсь, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, это этот ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ΠΉ Ρ„Π»Π°Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ int. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„Π»Π°Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ„Π»Π°Π³Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ нуля, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ volatile, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ это Ρ†Π΅Π»ΠΎΠ΅ число ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π±Π΅Π· Π²Π΅Π΄ΠΎΠΌΠ° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части Ρ‚Π΅Π»Π° Arduino ΠΎ Π΅Π³ΠΎ Π²Π²ΠΎΠ΄Π΅. с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, вСсь ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сосрСдоточСн Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ своСй ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ обслуТивания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΈ Π½Π΅ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ volatile, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Arduino Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ эта пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² любоС врСмя Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ обслуТивания прСрывания.

Π£ нас Π΅ΡΡ‚ΡŒ наша пСрСмСнная Β«DebounceΒ», ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π°Ρ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ², ΠΈ здСсь ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ это ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ для Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ². Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ прСрывания, Π·Π°Ρ‚Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ для ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ Π² скобках Π²Ρ‹Π²ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Β«2Β» Π½Π° Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Β«2Β» ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ прСрывания. Π—Π°Ρ‚Π΅ΠΌ Β«, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, поэтому Β«ISR_buttonΒ» β€” это ΠΎΠ±Ρ‰Π΅Π΅ практичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ запускаСтС ΠΊΠ°ΠΊ ISR. Π˜Ρ‚Π°ΠΊ, ΠΊΠ½ΠΎΠΏΠΊΠ° прСрывания сСрвисной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ высокого ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΌΡƒ сигналу ΠΈΠ»ΠΈ ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ высокому сигналу ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π°ΠΌ Π½Π΅ всСгда Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ для прСрывания, Π²Π½ΡƒΡ‚Ρ€ΠΈ Arduino Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² синтаксиса для этого, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ для прСрывания являСтся самым бСзопасным, это Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ зависит ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Π½ΠΎ, Π²ΠΎΠΎΠ±Ρ‰Π΅ говоря, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ для прСрывания, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сам Π²Ρ‹Π²ΠΎΠ΄, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠ»Π°Ρ‚ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· сучка ΠΈ Π·Π°Π΄ΠΎΡ€ΠΈΠ½ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² этом пустом Ρ†ΠΈΠΊΠ»Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ использовали для стандартного устранСния Π΄Ρ€Π΅Π±Π΅Π·Π³Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ слишком Π΄ΠΎΠ»Π³ΠΎ. ЕдинствСнная Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ наша Arduino Π² эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ устранСния Π΄Ρ€Π΅Π±Π΅Π·Π³Π° Π΄Ρ‹Ρ€, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρƒ нас Π±Ρ‹Π»ΠΎ Β«((millis ()– LastPress) > debounceTimeΒ», Ссли это Π²Π΅Ρ€Π½ΠΎ, Ρ‚ΠΎ ΠΌΡ‹ собираСмся запуститС Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, которая Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ частотой, ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ этот ΡˆΡƒΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ добавляСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС для ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π€Π»Π°Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ истинным ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅, ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ собираСтся ΠΎΠ±ΠΎΠΉΡ‚ΠΈ всС это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «Ссли» Π½Π΅ выполняСтся, ΠΈ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ дСлая, ΠΈ СдинствСнный способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ„Π»Π°Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ 1, это Ссли Β« ISR_Button», запускаСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° обслуТивания прСрывания для Π²Ρ‹Π²ΠΎΠ΄Π° 2. Π’ этом случаС всС, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚, это устанавливаСт Ρ„Π»Π°Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈ этот процСсс измСнСния состояния Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ„Π»Π°Π³Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΎΠΊ. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ обслуТивания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ вСсь этот ΠΊΠΎΠ΄ Π² сСрвСр ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Ссли Π±Ρ‹ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ, ΠΈ это прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π±Ρ‹ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½ΠΎ Ссли Π±Ρ‹ Ρƒ нас Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… процСссов, это ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ Π±Ρ‹ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ Arduino застрял Π² этой слуТСбной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Ссли Π±Ρ‹ ΠΎΠ½ выполнялся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· инструкции Π² Ρ†ΠΈΠΊΠ»Π΅ void, особСнно Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†Π΅Π»ΡƒΡŽ ΠΊΡƒΡ‡Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, особСнно Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ оборудования ΠΈΠ»ΠΈ слуТб, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, бСзусловно, Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» void, Π½ΠΎ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° это Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° скрытая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° обслуТивания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎ всСм этим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ частям ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Π½ΠΎ Ссли ΠΎΠ½ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого ISR, это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° обслуТивания прСрывания ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли ΠΎΠ½ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наТатия ΠΈΠ»ΠΈ отпускания, ΠΈ СдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ, это Ρ„Π»Π°Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ€Π°Π²Π½Ρ‹ΠΉ Β«0Β», Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС устранСниС Π΄Ρ€Π΅Π±Π΅Π·Π³Π°, Π½Π΅Ρ‚ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π»ΠΎ Π»ΠΈ это Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈΠ»ΠΈ отпусканиС, для Ρ„Π»Π°Π³Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«0Β», Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот Ρ€Π°Π·Π΄Π΅Π» ΠΊΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° обслуТивания прСрывания Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° снова для сброса этого Ρ„Π»Π°Π³Π°.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π΅Π³ΠΎ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ настройки, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΒ», ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ наш ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ достигаСт Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΠΈ, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это Π² Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСм объСмС. эффСктивным способом, поэтому, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π΅Π³ΠΎ, это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ малСнький Ρ‚ΡƒΠΌΠ±Π»Π΅Ρ€. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ 3 здСсь, Π½ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ 13 ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ для свСтодиода. Однако Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ для ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ 2 ΠΈΠ»ΠΈ 3, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ, просто ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΠ² доску ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² поиск Β«ΠŸΠΈΠ½Ρ‹ прСрывания Arduino UnoΒ» ΠΈΠ»ΠΈ Β« Pins прСрывания TeensyΒ» ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, быстрый Google ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ лист Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ страницу Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ сообщит Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с прСрываниями измСнСния ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ со всСми трСмя, поэтому ΠΏΡ€ΠΈΠ±Ρ‹Ρ‚ΠΈΠ΅ , ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, состояниС Ρ‚Π°ΠΊΠΆΠ΅ мСняСтся. Π˜Ρ‚Π°ΠΊ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ± использовании ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΎΠ½ΠΈ нСвСроятно ΠΌΠΎΡ‰Π½Ρ‹Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ всС Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ нСсколько Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ISR ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ, Ссли Π²Ρ‹ слСдуСтС Ρ‚Π΅ΠΌ рСкомСндациям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΠ·Π»ΠΎΠΆΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅ для основных ΠΎΠ±Ρ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ использованию ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

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

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