}
void loop()
{
Β Β if (digitalRead(switchPin) == LOW)
Β Β {
Β Β Β Β flashing = ! flashing;
Β Β Β Β // ΠΈ Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄
Β Β Β Β if (! flashing)
Β Β Β Β {
Β Β Β Β Β Β digitalWrite(ledPin, LOW);
Β Β Β Β }
Β Β }
Β Β long now = millis();
Β Β if (flashing && now > lastChangeTime + period)
Β Β {
Β Β Β Β ledState = ! ledState;
Β Β Β Β digitalWrite(ledPin, ledState);
Β Β Β Β lastChangeTime = now;
Β Β }
}
Π ΡΡΠΎΠΌ ΡΠΊΠ΅ΡΡΠ΅ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΄Π²Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, lastChangeTime ΠΈ ledState. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ lastChangeTime Ρ ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ Β«Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎΒ» ΠΈ Β«Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΎΒ», Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ledState Ρ ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° β Β«Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎΒ» ΠΈΠ»ΠΈ Β«Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΎΒ», ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠ½ ΠΏΡΠ΅Π±ΡΠ²Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡ loop Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ loop ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°ΡΠ°, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΌΠΈΠ³Π°Π½ΠΈΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ if, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π΄Π°Π»Π΅Π΅, ΠΏΡΠΎΡΡΠΎ Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄, Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΡΠ·Π²Π°Π»ΠΎ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΌΠΈΠ³Π°Π½ΠΈΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ ΠΌΠΎΠ³ Π±Ρ ΠΎΡΡΠ°ΡΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ:
if (! flashing)
{
Β Β digitalWrite(ledPin, LOW);
}
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΡ loop ΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ millis() ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ lastChangeTime, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΡΠΌ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ period. Π’ΠΎ Π΅ΡΡΡ ΠΊΠΎΠ΄ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ if Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° ΠΏΡΠΎΡΠ»ΠΎ Π±ΠΎΠ»Π΅Π΅ period ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄.
ΠΠ°ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ledState ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅, ΠΈ Π½Π° ΡΠΈΡΡΠΎΠ²ΠΎΠΌ Π²ΡΡ ΠΎΠ΄Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ now ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² lastChangeTime, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΡΡΠΏΠΈΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Timer
Π Π΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ°ΡΠ·Π° Π±Π΅Π· ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈΒ», Π±ΡΠ»ΠΎ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΎ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ millis. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈ ΠΏΠΎΡΠΎΠΌΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Arduino.
ΠΠΎΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://playground.arduino.cc//Code/Timer.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:
// sketch_14_03_flashing_3
#include <Timer.h>
const int ledPin = 13;
const int switchPin = 5;
const int period = 1000;
boolean flashing = false;
int ledState = LOW;
Timer t;
void setup()
{
Β Β pinMode(ledPin, OUTPUT);
Β Β pinMode(switchPin, INPUT_PULLUP);
Β Β t.every(period, flashIfRequired);
}
void loop()
{
Β Β if (digitalRead(switchPin) == LOW)
Β Β {
Β Β Β Β flashing = ! flashing;
Β Β Β Β if (! flashing)
Β Β Β Β {
Β Β Β Β Β Β digitalWrite(ledPin, LOW);
Β Β Β Β }
Β Β }
Β Β t.update();
}
void flashIfRequired()
{
Β Β if (flashing)
Β Β {
Β Β Β Β ledState = ! ledState;
Β Β Β Β digitalWrite(ledPin, ledState);
Β Β }
}
Π§ΡΠΎΠ±Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΊΠ΅ΡΡΠ΅ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΈΠΌΡ t) ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈ setup ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄Ρ:
t.every(period, flashIfRequired);
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ loop ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ:
t.update();
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΡ update ΠΏΡΠΎΠ²Π΅ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ millis, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ flashIfRequired).
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Timer ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π·Π΄Π΅Π»Π°.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ, ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ³Π»ΠΎΠΌ.
Π Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΠΌΠΈ Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ Arduino, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Arduino.
15. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅, ΡΡΠΎ, ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠΎΡΠΌΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π²ΡΠΏΡΡΡΠΈΡΡ Π΅Π΅ Π² ΡΠ²Π΅Ρ. ΠΡΠ° Π³Π»Π°Π²Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Arduino β Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Arduino ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π² Π°Π΄ΡΠ΅Ρ Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ΅ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΈΠΊΡΠΎ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ΄Π°ΠΆΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΡΠ΅Π½Π½ΠΎΡΡΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Arduino. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠΎΡΡ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΠ°ΡΡΡΠΌ ΠΏΠΎ ΡΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ Arduino.
Π§Π°ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄Π°ΡΡΠΈΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ½ΠΈ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΡΠΏΡΠΎΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ². ΠΠ΅Ρ ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎΡΠ΅ΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°ΡΡ ΡΠ΅ΡΠ½ΠΈΡΡΡΠΉ ΠΏΡΡΡ, Π²ΡΡΡΠ½ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ°, ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ Π»ΡΠ΄ΠΈ ΡΠΌΠΎΠ³ΡΡ ΠΎΡΡΡΠΊΠ°ΡΡ Π΅Π΅.
Π‘ΠΠΠΠ’
ΠΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Application Programmer Interface, API) β ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ²ΠΎΠΉ ΡΠΊΠ΅ΡΡ. ΠΡΠΎΠ΅ΠΊΡΠΈΡΡΡ API, Π²ΡΠ΅Π³Π΄Π° Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π±Π΅ Π²ΠΎΠΏΡΠΎΡ: Β«Π§ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ?Β» ΠΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΊΡΡΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΡΠΈΠΌΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΡΠ°Π΄ΠΈΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ TEA5767)Β», ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΡΠΊΠ΅ΡΡΠ΅ΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΏΠΈΡΡΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΠΊΡΡΠ³ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΊΠ΅ΡΡΠΈ ΠΏΠΈΡΡΡΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C++, ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° C. Π ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ (ΠΈΡ Π΄Π°Π½Π½ΡΠ΅) ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠΌ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π°ΡΡΠΎΡΠΈΠΈΡΡΡΡΡΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ, ΠΈ ΡΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΠΈ, ΠΈΠ»ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ, ΠΈ ΡΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°.
Π― Π³ΠΎΠ²ΠΎΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ Π²ΠΈΠ΄ΠΎΠ² Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΌΠΈΡΠ΅ Arduino, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΡΠΌΠΎΠΉ. ΠΠ»Π°ΡΡ β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π² Π½Π΅ΠΊΠΎΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΊΡΡΡΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ API ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΊΠ΅ΡΡΠ΅ΠΉ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ (ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ»Π΅Π½Ρ), Π° Π½Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ (ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΡΠ»Π΅Π½Ρ).
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΡΠ°Π΄ΠΈΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ TEA5767)
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Arduino, Ρ Π²ΠΎΠ·ΡΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π² Π³Π»Π°Π²Π΅ 7 Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π£ΠΠ-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ TEA5767, ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΡ Π΅Π³ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. Π‘ΠΊΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡ ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ½ ΡΠ»ΡΠΆΠΈΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ.
ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ API.
2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ.
5. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΌ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π²ΡΠ±ΡΠ°Π» ΠΈΠΌΡ TEA5767Radio Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠ½ΡΡΡΠΈ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π΄Π²Π° ΡΠ°ΠΉΠ»Π°: TEA5767Radio.h ΠΈ TEA5767Radio.cpp.