LEGO MINDSTORMS Education EV3 + MicroPython: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ дСтский конструктор взрослым языком

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! ΠœΡ‹ ΡƒΠΆΠ΅ рассказывали ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ LEGO MINDSTORMS Education EV3. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ β€” ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ² STEAM ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ. Π’ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ. Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ стСнды ΠΈΠ· ΠΊΡƒΠ±ΠΈΠΊΠΎΠ² LEGO ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΏΠΎ рСгистрации ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠΏΡ‹Ρ‚Ρ‹ Π΅Ρ‰Π΅ интСрСснСС ΠΈ нагляднСС ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ дСтям Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ„ΠΈΠ·ΠΈΠΊΡƒ. НапримСр, школьники ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ плавлСния ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прилоТСния ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. Но это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ: сСгодня ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот Π½Π°Π±ΠΎΡ€ срСдой программирования MicroPython ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для обучСния Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅.

LEGO MINDSTORMS Education EV3 + MicroPython: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ дСтский конструктор взрослым языком

Π£Ρ‡ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ EV3

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

Базовая срСда программирования EV3 создана Π½Π° основС графичСского языка LabVIEW ΠΈ позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для Ρ€ΠΎΠ±ΠΎΡ‚Π° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ: ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ прСдставлСны Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ.

LEGO MINDSTORMS Education EV3 + MicroPython: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ дСтский конструктор взрослым языком

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

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ нСсколько хитростСй, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выполняСт Ρ‚Π΅ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π±Π»ΠΎΠΊΠΈ. Π’ срСдС EV3 это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ благодаря ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с MicroPython: Π΄Π΅Ρ‚ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ срСдС программирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π½Π° языкС Python Π² Visual Studio Code ΠΎΡ‚ Microsoft. Они видят, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° способа Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π½ΠΎ ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° MicroPython

Π‘Ρ€Π΅Π΄Π° EV3 построСна Π½Π° Π±Π°Π·Π΅ процСссора ARM9, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ оставили Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стал ΠΎΠ±Ρ€Π°Π· для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с MicroPython. Он позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python для программирования EV3, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΅Ρ‰Π΅ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ.Β 

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· EV3 MicroPython Π½Π° Π»ΡŽΠ±ΡƒΡŽ microSD-ΠΊΠ°Ρ€Ρ‚Ρƒ, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ EV3 ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ бСсплатноС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Visual Studio. И ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅.Β 

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° Π½Π° MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ дСтский конструктор взрослым языком

На нашСм сайтС Π΅ΡΡ‚ΡŒ нСсколько ΡƒΡ€ΠΎΠΊΠΎΠ² для освоСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… понятий Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. МодСли Π½Π° EV3 знакомят Π΄Π΅Ρ‚Π΅ΠΉ с Π°Π·Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² самоуправляСмых автомобилях, заводских Ρ€ΠΎΠ±ΠΎΡ‚Π°Ρ…-сборщиках, станках с ЧПУ.Β 

ΠœΡ‹ возьмСм для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ·ΠΎΡ€Ρ‹ ΠΈ гСомСтричСскиС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Π”Π°Π½Π½Ρ‹ΠΉ кСйс являСтся ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ взрослых Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ²-сварщиков ΠΈΠ»ΠΈ Ρ„Ρ€Π΅Π·Π΅Ρ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 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 ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ†Π²Π΅Ρ‚Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ Π±Π΅Π»ΡƒΡŽ Π±ΡƒΠΌΠ°Π³Ρƒ ΠΈΠ»ΠΈ синюю ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ, Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ касания Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ рисуСт ΡƒΠ·ΠΎΡ€, возвращаСтся Π² исходноС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ повторяСт всС Π·Π°Π½ΠΎΠ²ΠΎ.

Когда устройство Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, свСтодиоды Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ красный Ρ†Π²Π΅Ρ‚, ΠΈ Π½Π° Π–Πš-экранС отобраТаСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Β«ΠΏΠ°Π»Π΅Ρ† Π²Π½ΠΈΠ·Β»:

while True:
Β Β brick.light(Color.RED)
Β Β brick.display.image(ImageFile.THUMBS_DOWN)

ДоТидаСмся, ΠΊΠΎΠ³Π΄Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ†Π²Π΅Ρ‚Π° считаСт синий ΠΈΠ»ΠΈ Π±Π΅Π»Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚, устанавливаСм Ρ†Π²Π΅Ρ‚ свСтодиодов Π·Π΅Π»Π΅Π½Ρ‹ΠΌ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Π½Π° Π–Πš-экранС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Β«ΠΏΠ°Π»Π΅Ρ† Π²Π²Π΅Ρ€Ρ…Β» ΠΈ сообщаСм, Ρ‡Ρ‚ΠΎ устройство Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅:

Β Β 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)</i>

Π’ΠΎΡ‚ такая нСслоТная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ запускаСм Π΅Π΅ ΠΈ смотрим Π½Π° Ρ€ΠΎΠ±ΠΎΡ‚Π°-Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ½ΠΈΠΊΠ° Π² Π΄Π΅Π»Π΅.Β 

Π§Ρ‚ΠΎ Π΄Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

LEGO MINDSTORMS Education EV3 + MicroPython: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ дСтский конструктор взрослым языком

EV3Β β€” это инструмСнт для ΠΏΡ€ΠΎΡ„ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… профСссий STEM ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ практичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄Π΅Ρ‚ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΎΠΏΡ‹Ρ‚ тСхничСских Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ создания ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ², учатся ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ситуации, ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΎΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ конструкции программирования.

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com