Β Β digitalWrite(ledPin, LOW);
Β Β delay(period);
}
void stuffHapenned()
{
Β Β flashFast = ! flashFast;
}
Π ΡΡΠΎΠΌ ΡΠΊΠ΅ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ loop ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ flashFast, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ true ΠΈ false.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ flashFast Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ volatile. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΊΠ΅ΡΡ ΠΈ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΒΡΠΈΠΊΠ°ΡΠΎΡΠ° volatile, Π½ΠΎ ΠΎΠ½ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C ΠΌΠΎΠΆΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΡΡΠΈΡΡΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΡΡΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΡΠ²Π°Π½, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
ΠΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°.
β’ ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π±ΡΡΡΡΠΎ.
β’ ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ volatile.
β’ ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ delay, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ delayMicroseconds.
β’ ΠΠ΅ ΠΎΠΆΠΈΠ΄Π°ΠΉΡΠ΅ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΡΡ.
β’ ΠΠ΅ ΠΎΠΆΠΈΠ΄Π°ΠΉΡΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ millis, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΡΠ΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π² ΡΠΊΠ΅ΡΡΠ°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΠΈ, ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²Π½ΠΎ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π²ΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ noInterrupts ΠΈ interrupts. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈ ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π½ΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, Π° Π²ΡΠΎΡΠ°Ρ β ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ.
Π―Π²Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ²ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² ΠΈ ΡΠΎΡΠ½ΠΎ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ delayMicroseconds.
ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
ΠΡΠ·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠΎΠ±ΡΡΠΈΡΠΌ, Π½ΠΎ ΠΈ ΠΏΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠΎΠ±ΡΡΠΈΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π’Π°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° TimerOne ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://playground.arduino.cc/Code/Timer1.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TimerOne ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ 1 ΠΊΠΡ. ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΡΡΠΈΠ»Π»ΠΎΠ³ΡΠ°Ρ ΠΈΠ»ΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅ΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ 12, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΈΠ³Π½Π°Π» (ΡΠΈΡ. 3.2).
Π ΠΈΡ. 3.2. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ², ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
// sketch_03_03_1kHz
#include <TimerOne.h>
int outputPin = 12;
volatile int output = LOW;
void setup()
{
Β Β pinMode(12, OUTPUT);
Β Β Timer1.initialize(500);
Β Β Timer1.attachInterrupt(toggleOutput);
}
void loop()
{
}
void toggleOutput()
{
Β Β digitalWrite(outputPin, output);
Β Β output = ! output;
}
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ delay, Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π½ΡΡΡΠΈ loop. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ delay Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ.
ΠΠ ΠΠΠΠ§ΠΠΠΠ
ΠΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 1 Π΄ΠΎ 8 388 480 ΠΌΠΊΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄ΠΎ 8,4 Ρ. ΠΠ΅Π»ΠΈΡΠΈΠ½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ initialize Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° TimerOne Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Ρ ΡΠΈΡΠΎΡΠ½ΠΎ-ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΡΠΈΠ΅ΠΉ (Pulse Width Modulation, PWM) Π½Π° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°Ρ 9 ΠΈ 10 ΠΏΠ»Π°ΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΈΠ·Π»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ analogWrite, Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ PWM. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠ° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0β¦1023 Π²ΠΌΠ΅ΡΡΠΎ 0β¦255 Π² ΡΡΠ½ΠΊΡΠΈΠΈ analogWrite. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ analogWrite ΡΠ°ΡΡΠΎΡΠ° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π² ΡΠΈΠ³Π½Π°Π»Π΅ PWM ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 500 ΠΡ, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ TimerOne ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ ΡΠ°ΡΡΠΎΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ.
Π§ΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π» PWM Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ TimerOne, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Timer1.pwm, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
// sketch_03_04_pwm
#include <TimerOne.h>
void setup()
{
Β Β pinMode(9, OUTPUT);
Β Β pinMode(10, OUTPUT);
Β Β Timer1.initialize(1000);
Β Β Timer1.pwm(9, 512);
Β Β Timer1.pwm(10, 255);
}
void loop()
{
}
ΠΠ΄Π΅ΡΡ Π²ΡΠ±ΡΠ°Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ², ΡΠ°Π²Π½ΡΠΉ 1000 ΠΌΠΊΡ, ΡΠΎ Π΅ΡΡΡ ΡΠ°ΡΡΠΎΡΠ° ΡΠΈΠ³Π½Π°Π»Π° PWM ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 1 ΠΊΠΡ. ΠΠ° ΡΠΈΡ. 3.3 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΠΎΡΠΌΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π½Π° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°Ρ 10 (Π²Π²Π΅ΡΡ Ρ) ΠΈ 9 (Π²Π½ΠΈΠ·Ρ).
Π ΠΈΡ. 3.3. Π¨ΠΈΡΠΎΡΠ½ΠΎ-ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠΈΠ³Π½Π°Π» Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ 1 ΠΊΠΡ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TimerOne
Π Π°Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, Π΄ΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ ΡΠΈΠ³Π½Π°Π»Π° PWM. ΠΡΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π΄ΠΎ 10, ΡΠ°ΡΡΠΎΡΠ° ΡΠΈΠ³Π½Π°Π»Π° PWM Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡΡ Π΄ΠΎ 100 ΠΊΠΡ. Π€ΠΎΡΠΌΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Ρ ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡ. 3.4.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ, ΠΏΡΠΎΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π²ΡΠ΅ ΠΆΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ 25 ΠΈ 50% ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π ΠΈΡ. 3.4. Π¨ΠΈΡΠΎΡΠ½ΠΎ-ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠΈΠ³Π½Π°Π» Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ 100 ΠΊΠΡ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TimerOne
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΡΡΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π½Π΅ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΎΠΆΠ½ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π»ΡΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΄Π½ΡΡ Π·Π°Π΄Π°Ρ. Π’ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π΄ΡΠΌΠ°ΠΉΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π Π³Π»Π°Π²Π΅ 14 ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ΅ΠΌΠΎΠΌ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Arduino Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΡ Π΅ΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠΌ Π² Π³Π»Π°Π²Π΅ 5, Π³Π΄Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΡΠ½Π΅ΡΠ³ΠΈΠΈ ΠΏΠ»Π°ΡΠΎΠΉ Arduino Π·Π° ΡΡΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π΅Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ½Π΅ΡΠ³ΠΎΡΠ±Π΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ, ΠΈ Π² Π³Π»Π°Π²Π΅ 13, Π³Π΄Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Arduino Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°.
4. Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Arduino
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ»Π°ΡΡ Arduino ΠΈ ΠΊΠ°ΠΊ Π²ΡΠΆΠ°ΡΡ ΠΈΠ· Π½Π΅Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Arduino?
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°Π½ΡΡΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΊΠ΅ΡΡΠ΅ΠΉ, ΠΏΠΎΡΡΠ°ΡΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Arduino, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², Π½Π°ΡΠ°Π² Ρ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ½ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΌΠ΅Π³Π°Π³Π΅ΡΡ ΠΈ Π³ΠΈΠ³Π°Π³Π΅ΡΡ.
Π’Π°ΠΊΡΠΎΠ²ΡΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΠΏΠ»Π°ΡΠ΅ Arduino Uno ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΡΡΠΎΡΡ 16 ΠΠΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ (ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΊΡ. Π’ΠΎ Π΅ΡΡΡ Uno ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎ 16 ΠΌΠ»Π½ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΎΠ΄Π΅ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ Π² ΡΠΊΠ΅ΡΡΠ°Ρ , ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.