میکروبیتی که در حال استفاده از آن هستید، دارای سنسور داخلی تشخیص حرکت یا همان شتاب سنج Accelerometer است که در سه محور x,y,x تشخیص میدهد. در بخش هفتم از سری آموزش های میکروپایتون به معرفی این سنسور و نحوه ی استفاده از آن خواهیم پرداخت. در ادامه با مرجع تخصصی برد میکروبیت micro:bit به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور شتاب سنج Accelerometer
سنسور شتاب سنج Accelerometer یک تراشه با قابلیت حرکت در سه محور x,y,z است. شتاب سنج رنج بین +۲g تا -۲g را اندازه گیری کرده و با میکروپایتون خیلی قابل تعییر نیست. این رنج بین ۰ تا ۱۰۲۴ قابل تنظیم است. سنسور قابلیت تشخیص حرکت در سه محور را دارد:
- محور X = حرکت از چپ به راست
- محور Y = حرکت به سمت جلو و عقب
- محور Z = حرکت به سمت بالا و پایین
دستورات برنامه نویسی مورد نیاز میکروپایتون
استفاده از import:
در پایتون بخشی از دستورات جز امکانات اصلی پایتون است که فراخوانی و به راحتی استفاده میشود. اما برخی از دستورات مستقیم قابل استفاده نیست و برای فراخوانی آن ها بایستی ماژول با نام مشخص خودش را استفاده کرد. برای این کار از import استفاده میکنیم.
import module name
روش دیگر استفاده از دستور زیر است:
from modulename import classname
به عنوان مثال در این آموزش از ماژول میکروبیت استفاده شده است که به صورت زیر در برنامه تعریف میشود.
from microbit import *
نمایش دیتا در میکروپایتون:
برای نمایش دیتای دریافتی از سنسورها نیاز به دریافت اطلاعات از میکروکنترلر و پایتون داریم. برای اینکار پایتون از print استفاده میکند.
print (data )
اگر پارامتری که در print نمایش داده میشود یک مقدار رشته ای در داخل “” باشد، دقیقا همان پارامتر در خروجی نمایش داده میشود. با هر بار اجرای تابع یک سطر از خروجی تولید شده و در سطر بعدی دستور جدید تایپ میشود.
محاسبه مقادیر محور X,Y,Z
برای اندازه گیری محور X,Y,X میکروبیت را در سه جهت میتوانید تغییر مکان و جا به جایی دهید.
- محور X = حرکت از چپ به راست
- محور Y = حرکت به سمت جلو و عقب
- محور Z = حرکت به سمت بالا و پایین
در ادامه کد میکروپایتون برای نمایش و پرینت مقادیر سه محور آموزش داده شده است. کد را کپی و در میکروپایتون وارد کنید.
from microbit import * while True: x = accelerometer.get_x() y = accelerometer.get_y() z = accelerometer.get_z() print("x, y, z:", x, y, z) sleep(500)
برای نمایش دیتای دریافتی از محور x از دستور زیر استفاده شده است:
x = accelerometer.get_x()
برای نمایش دیتای دریافتی از محور y از دستور زیر استفاده شده است:
y = accelerometer.get_y()
برای نمایش دیتای دریافتی از محور z از دستور زیر استفاده شده است:
z = accelerometer.get_z()
برای نمایش دیتا در سریال از دستور print استفاده شده است:
print("x, y, z:", x, y, z)
برای نمایش دیتا در سریال مانیتور بر روی گزینه openserial کلیک کنید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
دریافت عدد تصادفی در makecode
برای ساخت بلوک برنامه نویسی در makecode با یک مثال شروع میکنیم. برای نمایش یک عدد رندم تصادفی به کمک ال ای دی های داخلی میکروبیت از روش زیر استفاده میکنیم. برای انتخاب دستور Random از شاخه ریاضیات math استفاده میکنیم. بلوک pick random را انتخاب و رنج بازه ی عدد تصادفی را انتخاب کنید. در این آموزش از ۰ تا ۶ انتخاب شده است. سپس برنامه را دانلود کرده و میکروبیت را تکان shake دهید. یک عدد تصادفی بین ۰ تا ۶ برای شما بر روی ال ای دی میکروبیت نمایش داده میشود.
جهت ورود به make code از لینک زیر اقدام کنید.
https://makecode.microbit.org/#editor
دریافت عدد تصادفی در Python
برای نمایش عدد تصادفی بر روی ال ای دی های میکروبیت در پایتون به روش زیر کدنویسی انجام میشود.
from microbit import * import random while True: if accelerometer.was_gesture('shake'): display.show(random.randint(1, 6))
برای دریافت دیتا از سنسور شتاب سنج از دستور accelerometer.state_gesture استفاده میکنیم که انتخاب وضعیت state دلخواه است. اگر مود accelerometer بر روی shake تنظیم شده یاشد، بایستی میکروبیت را تکان دهید تا خروجی برای شما ارسال کند. در این کد میخواهیم یک عدد تصادفی در یک رنج مشخص برای ما در ال ای دی ها مشخص شود. برای اینکار از دستور برنامه نویسی random.randint() استفاده میکنیم که در پرانتز بازه ی مورد نظر را مثلا بین ۱ تا ۱۰ را قرار میدهیم.
دریافت دیتا فقط از یک محور
برای دریافت دیتا از یک محور شتاب سنج کافیست از دستور accelerometer_get(x,y,z ) استفاده کرد. به عنوان مثال اگر بخواهیم دیتای دریافتی از سنسور را در محور x محاسبه کنیم و یک شرط نویسی انجام دهیم، کد برنامه به صورت زیر قابل اجرا است.
from microbit import * while True: reading = accelerometer.get_x() if reading > 20: display.show("R") elif reading < -20: display.show("L") else: display.show("-")
در این کد دیتا از محور x خوانده شده و توسط ساختار شرطی if else کدنویسی شده است. در صورتیکه مقدار دریافتی از سنسور در محور x بزرگتر از ۲۰ باشد، در نمایشگر ال ای دی توسط تابع display حرف R نمایش داده میشود. سپس در صورتیکه دیتای دریافتی کمتر از ۲۰ باشد، ال ای دی ها L را نمایش میدهد.
روشن و خاموش شدن ال ای دی با قابلیت Accelerometer
از قابلیت تشخیص حرکت شتاب سنج Accelerometer به عنوان ورودی در پروژه ها میتوانیم استفاده کنیم. در این بخش با تکان دادن میکروبیت در محور x یک خروجی ال ای دی را روشن و خاموش میکنیم.
from microbit import * while True: reading = accelerometer.get_x() if reading > 20: pin1.write_digital(1) # turn pin0 (and the LED) on elif reading < -20: pin1.write_digital(0) # turn pin0 (and the LED) off
جمع بندی لیدی پای
کاربرد سنسور تشخیص حرکت با Accelerometer بسیار زیاد است به طوریکه میتوانید هزارن ایده و پروژه را به واسطه این ماهیت اجرا و پیاده سازی کنید. قطعا امکان اجرای تمامی مثال ها در یک آموزش امکان پذیر نیست و دستورات اصلی در متن آموزش گفته شده است. مطابق با آن پیش رفته و دستورات را در کدهای پایتون و جاوااسکریپت پیاده سازی و اجرا کنید.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی برد میکروبیت و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.