میکروبیت micro:bit میکروپایتون Micropython

آموزش برد میکروبیت BBC micro:bit بخش هفتم: تشخیص حرکت Movement

getting-started-with-bbc-microbit-step-seven-accelerometer-digispark
نوشته شده توسط پریسا پوربلورچیان

میکروبیتی که در حال استفاده از آن هستید، دارای سنسور داخلی تشخیص حرکت یا همان شتاب سنج Accelerometer است که در سه محور x,y,x تشخیص میدهد. در بخش هفتم از سری آموزش های میکروپایتون به معرفی این سنسور و نحوه ی استفاده از آن خواهیم پرداخت. در ادامه با مرجع تخصصی برد میکروبیت micro:bit به زبان فارسی، دیجی اسپارک همراه باشید.

 


سنسور شتاب سنج Accelerometer


سنسور شتاب سنج Accelerometer یک تراشه با قابلیت حرکت در سه محور x,y,z است. شتاب سنج رنج بین +۲g تا -۲g را اندازه گیری کرده و با میکروپایتون خیلی قابل تعییر نیست. این رنج بین ۰ تا ۱۰۲۴ قابل تنظیم است. سنسور قابلیت تشخیص حرکت در سه محور را دارد:

  1.  محور X = حرکت از چپ به راست
  2. محور Y = حرکت به سمت جلو و عقب
  3. محور Z = حرکت به سمت بالا و پایین

سنسور شتاب و ژایرو برد میکروبیت micro:bit - دیجی اسپارک

 


دستورات برنامه نویسی مورد نیاز میکروپایتون


استفاده از import:

در پایتون بخشی از دستورات جز امکانات اصلی پایتون است که فراخوانی و به راحتی استفاده می‌شود. اما برخی از دستورات مستقیم قابل استفاده نیست و برای فراخوانی آن ها بایستی ماژول با نام مشخص خودش را استفاده کرد. برای این کار از import استفاده می‌کنیم.

import module name

 

روش دیگر استفاده از دستور زیر است:

from modulename import classname

 

به عنوان مثال در این آموزش از ماژول میکروبیت استفاده شده است که به صورت زیر در برنامه تعریف می‌شود.

from microbit import *

 

نمایش دیتا در میکروپایتون:

برای نمایش دیتای دریافتی از سنسورها نیاز به دریافت اطلاعات از میکروکنترلر و پایتون داریم. برای اینکار پایتون از print استفاده می‌کند.

print (data )

اگر پارامتری که در print نمایش داده می‌شود یک مقدار رشته ای در داخل “” باشد، دقیقا همان پارامتر در خروجی نمایش داده می‌شود. با هر بار اجرای تابع یک سطر از خروجی تولید شده و در سطر بعدی دستور جدید تایپ می‌شود.

 


محاسبه مقادیر محور X,Y,Z


برای اندازه گیری محور X,Y,X میکروبیت را در سه جهت میتوانید تغییر مکان و جا به جایی دهید.

  1.  محور X = حرکت از چپ به راست
  2. محور Y = حرکت به سمت جلو و عقب
  3. محور 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)

برنامه نویسی میکروپایتون در برد میکروبیت micro:bit - دیجی اسپارک

 

برای نمایش دیتا در سریال مانیتور بر روی گزینه openserial کلیک کنید.

دیتای سنسور شتاب برد میکروبیت در micropython - دیجی اسپارک

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


دریافت عدد تصادفی در makecode


برای ساخت بلوک برنامه نویسی در makecode با یک مثال شروع می‌کنیم. برای نمایش یک عدد رندم تصادفی به کمک ال ای دی های داخلی میکروبیت از روش زیر استفاده می‌کنیم. برای انتخاب دستور Random از شاخه ریاضیات math استفاده می‌کنیم. بلوک pick random را انتخاب و رنج بازه ی عدد تصادفی را انتخاب کنید. در این آموزش از ۰ تا ۶ انتخاب شده است. سپس برنامه را دانلود کرده و میکروبیت را تکان shake دهید. یک عدد تصادفی بین ۰ تا ۶ برای شما بر روی ال ای دی میکروبیت نمایش داده می‌شود.

جهت ورود به make code از لینک زیر اقدام کنید.

https://makecode.microbit.org/#editor

دریافت عدد تصادفی در makecode میکروبیت - دیجی اسپارک

 

دریافت عدد تصادفی در makecode برد micro:bit - دیجی اسپارک

 


دریافت عدد تصادفی در Python


برای نمایش عدد تصادفی بر روی ال ای دی های میکروبیت در پایتون به روش زیر کدنویسی انجام می‌شود.

from microbit import *
import random

while True:
    if accelerometer.was_gesture('shake'):
        display.show(random.randint(1, 6))
        

 

دریافت عدد تصادفی در Python با میکروبیت - دیجی اسپارک

 

برای دریافت دیتا از سنسور شتاب سنج از دستور 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 - دیجی اسپارک

 


جمع بندی لیدی پای


کاربرد سنسور تشخیص حرکت با Accelerometer بسیار زیاد است به طوریکه میتوانید هزارن ایده و پروژه را به واسطه این ماهیت اجرا و پیاده سازی کنید. قطعا امکان اجرای تمامی مثال ها در یک آموزش امکان پذیر نیست و دستورات اصلی در متن آموزش گفته شده است. مطابق با آن پیش رفته و دستورات را در کدهای پایتون و جاوااسکریپت پیاده سازی و اجرا کنید.

 


وسایل مورد نیاز


برد میکروبیت BBC micro:bit

گیره سوسماری 

ال ای دی

 

چنانچه در مراحل راه اندازی برد میکروبیت و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه