ΠΠ΄ΡΠ°Π²Π΅ΠΉ, Π₯Π°Π±Ρ! ΠΠ΅ΡΠ΅ ΡΠΌΠ΅ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° LEGO MINDSTORMS Education EV3. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΡΠ°Π·ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠ° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π· ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ, ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° STEAM ΡΠΌΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎ ΠΌΠΈΡΠ»Π΅Π½Π΅. Π’Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΠΏΡΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ°ΡΠ° ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°ΡΠ°. ΠΠ°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΠΈΡΠ΅ ΡΡΠ΅Π½Π΄ΠΎΠ²Π΅ ΠΎΡ LEGO Π±Π»ΠΎΠΊΡΠ΅ΡΠ° ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡΠ°Π²ΡΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΏΠΎ-ΠΈΠ½ΡΡΠΈΠ³ΡΠ²Π°ΡΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π½Π° Π΄Π΅ΡΠ°ΡΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΡΠΈΠ·ΠΈΠΊΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π½ΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ±Π΅ΡΠ°Ρ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°ΡΠ° Π½Π° ΡΠΎΠΏΠ΅Π½Π΅ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° Π³ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊ. ΠΠΎ ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΌΠΎ Π½Π°ΡΠ°Π»ΠΎΡΠΎ: Π΄Π½Π΅Ρ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΡΡ ΡΡΠ΅Π΄Π° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ MicroPython ΠΈ Π΄Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΎΠ±ΠΎΡΠΈΠΊΠ°.

Π£ΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° EV3
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΡΠ΅Π½ΠΈΡΠΈ ΠΈΡΠΊΠ°Ρ Π΄Π° Π²ΠΈΠΆΠ΄Π°Ρ ΡΠ²Π΅ΡΠ΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. ΠΠ°, ΡΠΊΡΡΠ½ΠΎ ΠΈΠΌ Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΡΠΈΡΠ»Π° Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°, ΠΈ ΡΠ΅ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΡΠ²Π΅ΡΠ½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ, Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΠΎΠ±ΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π΄Π²ΠΈΠΆΠ°Ρ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ²ΡΡΠ΄Π΅ ΡΠ»ΠΎΠΆΠ΅Π½ Π·Π° Π΄Π΅ΡΠ°ΡΠ°, Π·Π°ΡΠΎΠ²Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ Ρ Π½Π΅ΡΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ EV3 Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° Π½Π° Π±Π°Π·Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈΡ Π΅Π·ΠΈΠΊ LabVIEW ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΠΎΠ±ΠΎΡΠ° Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ: ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ ΠΊΠ°ΡΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π»Π°ΡΠΈΠΌ ΠΈ ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅.

Π’ΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ, Π½ΠΎ ΡΠΎΠΉ Π½Π΅ Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Ρ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅. ΠΡΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π° Π΄Π΅ΡΠ°ΡΠ° ΠΈΠΌ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ ΡΠ°Π·ΠΈ ΡΡΡΠΏΠΊΠ°.Β
ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΈΠΊΠ°, Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΡΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅. Π ΡΡΠ΅Π΄Π°ΡΠ° EV3 ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ MicroPython: Π΄Π΅ΡΠ°ΡΠ° ΡΡΠ·Π΄Π°Π²Π°Ρ Π΅Π΄Π½Π°ΡΠ° ΠΈ ΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Python Π² Visual Studio Code Π½Π° Microsoft. Π’Π΅ Π²ΠΈΠΆΠ΄Π°Ρ, ΡΠ΅ ΠΈ Π΄Π²Π°ΡΠ° Π½Π°ΡΠΈΠ½Π° ΡΠ°Π±ΠΎΡΡΡ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ Π½Π°ΡΠΈΠ½, Π½ΠΎ Ρ ΠΊΠΎΠ΄Π° Π΅ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ.
ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π½Π° MicroPython
Π‘ΡΠ΅Π΄Π° EV3 Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ARM9 ΠΏΡΠΎΡΠ΅ΡΠΎΡ, Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ° ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° ΠΎΡΠ²ΠΎΡΠ΅Π½Π°. Π’ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΡΡΡΠΌΡΠ΅ΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ, Π΅Π΄Π½Π° ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ MicroPython. Π’ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Python Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° EV3, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π½Π°Π±ΠΎΡΠ° ΠΎΡΠ΅ ΠΏΠΎ-Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ ΡΠ΅Π°Π»Π½ΠΈ ΠΆΠΈΡΠ΅ΠΉΡΠΊΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ.Β
ΠΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ Π½Π° Π²ΡΡΠΊΠ° microSD ΠΊΠ°ΡΡΠ°, Π΄Π° Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠΌΠΏΡΡΡΡΠ° EV3 ΠΈ Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π·Π° Visual Studio. Π ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°.Β
ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΠΌΠ΅ ΠΏΡΡΠ²ΠΈΡ ΡΠΎΠ±ΠΎΡ Π½Π° MycroPython

ΠΠ° Π½Π°ΡΠΈΡ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΠΊΠ° Π·Π° ΡΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠΎΠ±ΠΎΡΠΈΠΊΠ°ΡΠ°. ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° EV3 Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Ρ Π΄Π΅ΡΠ°ΡΠ° Ρ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, ΡΠ°Π±ΡΠΈΡΠ½ΠΈ ΡΠΎΠ±ΠΎΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ, CNC ΠΌΠ°ΡΠΈΠ½ΠΈ.Β
Π©Π΅ Π²Π·Π΅ΠΌΠ΅ΠΌ Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΡΠΎΠΆΠ½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈ Π΄Π° ΡΠΈΡΡΠ²Π° ΡΠΈΠ³ΡΡΠΈ ΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠΈ. Π’ΠΎΠ·ΠΈ ΠΊΠ°Π·ΡΡ Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Π²ΡΠ·ΡΠ°ΡΡΠ½ΠΈ ΡΠΎΠ±ΠΎΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π°Π²Π°ΡΡΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π·Π΅ΡΠΎΠ²ΡΠΈΡΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° EV3 Π·Π°Π΅Π΄Π½ΠΎ Ρ MicroPython Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΅Π½ΠΈΡΠΈΡΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ΅ΡΡΠΎΠΆΠ½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ° Π΄ΡΠΏΠΊΠΈ Π² ΠΏΠ΅ΡΠ°ΡΠ½Π° ΠΏΠ»Π°ΡΠΊΠ° Π·Π° ΡΠ°ΡΠΈ, Π½ΠΎ ΡΠΎΠ²Π° Π΅ Π²Π΅ΡΠ΅ Π΄ΡΡΠ³ Π½ΠΈΠ²ΠΎ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ:
- ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ LEGO MINDSTORMS Education EV3;Β
- Π³ΠΎΠ»ΡΠΌ Π»ΠΈΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½Π° Ρ Π°ΡΡΠΈΡ;
- ΡΠ²Π΅ΡΠ½ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΈ.Β
Π‘Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ°ΠΌΠΈΡ ΡΠΎΠ±ΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² , Π° Π½ΠΈΠ΅ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅.
ΠΡΡΠ²ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ EV3:
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ Π·Π°Π²ΡΡΡΠ° ΡΡΡΠΊΠ°ΡΠ°, ΠΊΠ°ΡΠΎ ΠΌΠΎΡΠΎΡ Π² ΠΏΠΎΡΡ B. ΠΠ°Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°ΡΠ΅Π»Π½ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΡΡΡΠ΅ΠΏΠ΅Π½Π½Π° Π·ΡΠ±Π½Π° ΡΡΠ°Π½ΡΠΌΠΈΡΠΈΡ Ρ Π±ΡΠΎΠΉ Π·ΡΠ±ΠΈ 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Π½Π΅ Π½Π° ΡΡΡΠΊΠ°ΡΠ° ΠΊΠ°ΡΠΎ ΠΌΠΎΡΠΎΡ Π² ΠΏΠΎΡΡ C:
seesaw_motor = Motor(Port.C)
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ, ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Ρ ΡΠ³ΡΠ»Π° Π½Π° Π½Π°ΠΊΠ»ΠΎΠ½Π° Π½Π° ΡΡΡΠΊΠ°ΡΠ°, Π² ΠΏΠΎΡΡ 2:
gyro_sensor = GyroSensor(Port.S2)
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΡΠ²Π΅ΡΠ΅Π½ ΡΠ΅Π½Π·ΠΎΡ Π² ΠΏΠΎΡΡ 3. Π‘Π΅Π½Π·ΠΎΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π±ΡΠ»Π°ΡΠ° Ρ Π°ΡΡΠΈΡ ΠΏΠΎΠ΄ ΡΠ΅ΡΡΠΎΠΆΠ½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°:
color_sensor = ColorSensor(Port.S3)
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΡΠ΅Π½Π·ΠΎΡ Π·Π° Π΄ΠΎΠΏΠΈΡ Π² ΠΏΠΎΡΡ 4. Π ΠΎΠ±ΠΎΡΡΡ Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΡΠΈΡΡΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅Π½Π·ΠΎΡΡΡ Π΅ Π½Π°ΡΠΈΡΠ½Π°Ρ:
touch_sensor = TouchSensor(Port.S4)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Ρ ΠΈ ΡΠΏΡΡΠΊΠ°Ρ ΡΡΡΠΊΠ°ΡΠ°:
def pen_holder_raise():
seesaw_motor.run_target(50, 25, Stop.HOLD)
wait(1000)
def pen_holder_lower():
seesaw_motor.run_target(50, 0, Stop.HOLD)
wait(1000)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π·Π° Π·Π°Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΠΈΡΠ°Π»ΠΊΠ°ΡΠ° Π΄ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ ΡΠ³ΡΠ» ΠΈΠ»ΠΈ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ³ΡΠ»:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
ΠΠΊΠΎ ΡΠ΅Π»Π΅Π²ΠΈΡΡ ΡΠ³ΡΠ» Π΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ³ΡΠ» Π½Π° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡΠΊΠΈΡ ΡΠ΅Π½Π·ΠΎΡ, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠΎΠ²Π°ΡΠ° ΡΡΡΠ΅Π»ΠΊΠ° Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½Π° ΡΠΊΠΎΡΠΎΡΡ:
Β Β Β Β turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
ΠΠΊΠΎ ΡΠ΅Π»Π΅Π²ΠΈΡΡ ΡΠ³ΡΠ» Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ³ΡΠ» Π½Π° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡΠΊΠΈΡ ΡΠ΅Π½Π·ΠΎΡ, ΡΠ΅ ΡΠ΅ Π΄Π²ΠΈΠΆΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠΎΠ²Π°ΡΠ° ΡΡΡΠ΅Π»ΠΊΠ°:
Β Β Β Β turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Π‘ΠΏΠΈΡΠ°ΠΌΠ΅ Π²ΡΡΡΡΡΠ°ΡΠ° ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅Π»Π΅Π²ΠΈΡΡ ΡΠ³ΡΠ» Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ:
Β Β turntable_motor.stop(Stop.BRAKE)
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΠΏΠΈΡΠ°Π»ΠΊΠ°ΡΠ° Π² Π³ΠΎΡΠ½Π°ΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ:
pen_holder_raise()
Π‘Π΅Π³Π° ΠΈΠ΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° β Π±Π΅Π·ΠΊΡΠ°Π΅Π½ ΡΠΈΠΊΡΠ». ΠΡΡΠ²ΠΎ, EV3 ΡΠ°ΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅Π½Π·ΠΎΡΡΡ Π·Π° ΡΠ²ΡΡ ΠΎΡΠΊΡΠΈΠ΅ Π±ΡΠ»Π° Ρ Π°ΡΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ ΡΡΠ°ΡΡΠΎΠ²Π° ΠΊΠ»Π΅ΡΠΊΠ°, Π° ΡΠ΅Π½Π·ΠΎΡΡΡ Π·Π° Π΄ΠΎΠΏΠΈΡ Π±ΡΠ΄Π΅ Π½Π°ΡΠΈΡΠ½Π°Ρ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΈΡΡΠ²Π° ΠΌΠΎΠ΄Π΅Π», Π²ΡΡΡΠ° ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΠ°ΡΡ Π²ΡΠΈΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΠΎΠ³Π°ΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π΅ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° ΡΠ²Π΅ΡΡΡ Π² ΡΠ΅ΡΠ²Π΅Π½ΠΎ, Π° Π½Π° LCD Π΅ΠΊΡΠ°Π½Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ βΠΏΠ°Π»Π΅Ρ Π½Π°Π΄ΠΎΠ»Ρβ:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Π§Π°ΠΊΠ°ΠΌΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅Π½Π·ΠΎΡΡΡ Π·Π° ΡΠ²ΡΡ ΠΎΡΡΠ΅ΡΠ΅ ΡΠΈΠ½ ΠΈΠ»ΠΈ Π±ΡΠ» ΡΠ²ΡΡ, Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ²Π΅ΡΡΡ Π½Π° ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΈΡΠ΅ Π½Π° Π·Π΅Π»Π΅Π½ ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° LCD Π΅ΠΊΡΠ°Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ βΠΏΠ°Π»Π΅Ρ Π½Π°Π³ΠΎΡΠ΅β ΠΈ ΡΡΠΎΠ±ΡΠ°Π²Π°ΠΌΠ΅, ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ Π·Π° ΡΠ°Π±ΠΎΡΠ°:
Β Β while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Π§Π°ΠΊΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΡΠ΅Π½Π·ΠΎΡΠ° Π·Π° Π΄ΠΎΠΏΠΈΡ, ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°ΠΌΠ΅ Π½Π° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡΠΊΠΈΡ ΡΠ΅Π½Π·ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡ 0 ΠΈ Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠΈΡΡΠ²Π°ΠΌΠ΅:
Β Β while not touch_sensor.pressed():
wait(10)
gyro_sensor.reset_angle(0)
pen_holder_turn_to(15)
pen_holder_lower()
pen_holder_turn_to(30)
pen_holder_raise()
pen_holder_turn_to(45)
pen_holder_lower()
pen_holder_turn_to(60)
ΠΠΎΠ²Π΄ΠΈΠ³Π°ΠΌΠ΅ Π΄ΡΡΠΆΠ°ΡΠ° Π½Π° ΠΏΠΈΡΠ°Π»ΠΊΠ°ΡΠ° ΠΈ Π³ΠΎ Π²ΡΡΡΠ°ΠΌΠ΅ Π² Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ:
Β Β pen_holder_raise()
pen_holder_turn_to(0)
ΠΡΠΎ ΡΠ°ΠΊΠ°Π²Π° ΠΏΡΠΎΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅. Π ΡΠ΅Π³Π° Ρ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ±ΠΎΡΡΡ ΡΠΈΡΡΠ²Π° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.Β
ΠΠ°ΠΊΠ²ΠΎ Π΄Π°Π²Π°Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ

EV3 Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½Π΅ Π² ΡΡΠ΅ΡΠ°ΡΠ° Π½Π° STEM ΠΏΡΠΎΡΠ΅ΡΠΈΠΈΡΠ΅ ΠΈ Π²Ρ
ΠΎΠ΄Π½Π° ΡΠΎΡΠΊΠ° Π² ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎΡΡΠΈ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Ρ Π½Π΅Π³ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ, Π΄Π΅ΡΠ°ΡΠ° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Ρ ΠΎΠΏΠΈΡ Π² ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»Π½ΠΈ ΡΠΎΠ±ΠΎΡΠΈ, Π½Π°ΡΡΠ°Π²Π°Ρ ΡΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Ρ ΡΠ΅Π°Π»Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΡΠ°Π·Π±ΠΈΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ, ΡΡΠ²ΠΎΡΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ.
ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°ΡΠ° Π½Π° MicroPython ΠΏΡΠ°Π²ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° EV3 ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ° Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π² Π³ΠΈΠΌΠ½Π°Π·ΠΈΡΡΠ°. Π£ΡΠ΅Π½ΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΎΠΏΠΈΡΠ°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π΅Π·ΠΈΡΠΈ, Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅. ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΈΡΠ΅ EV3 ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π½Π΅ Π΅ ΡΡΡΠ°ΡΠ½ΠΎ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΡ Π·Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π·Π° ΠΏΡΡΠ²Π°ΡΠ° ΡΡΡΠΏΠΊΠ° ΠΊΡΠΌ ΡΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎΡΡΠΈ. Π Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π² ΡΡΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠΎ, Π½ΠΈΠ΅ ΡΠΌΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΠ»ΠΈ ΠΈ ΡΡΠ΅Π±Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ. Π ΡΡΡ
Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠΌΠ΅Π½ΠΈΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π΄Π΅Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
