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

0
646
ضبط و پخش عملکرد کاربر
ضبط و پخش عملکرد کاربر

برد آردوینو

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

قطعات مورد نیاز:

برد آردوینو بردبورد سیم کلید فشاری LED مقاومت(برای LED) پتانسیومتر ۱۰کیلواهم سرو موتور

گام اول: شماتیک

شماتیک
شماتیک

 

اتصالات را مطابق دستورزیر وصل می‌کنیم: پتانسومتر به پین A0 کلید فشاری به پین D2 سرو موتور به پین D3 LED به پین D13

گام دوم: کد

کد زیر را روی برد آردوینو بارگذاری نمایید.

#include <Servo.h>
#include <EEPROM.h>//used to store recorded values

Servo myServo;

float resolution = 1000;//MUST be less than EEPROM.length() (check serial monitor)
float recordTime = 5; //delay time
bool recording = false;

void setup() {
pinMode(13, OUTPUT); //status led
pinMode(2, OUTPUT);
myServo.attach(3);

Serial.begin(9600);
digitalWrite(2, HIGH);
//Serial.println(EEPROM.length());
}

void loop() {
if (recording == true) {//record
for (int i = 1; i <= resolution; i++) {
digitalWrite(13, HIGH); //light status led
int val = map(analogRead(A0), 0, 1023, 0, 180);

EEPROM.write(i, val);
//Serial.println(EEPROM.read(i));
myServo.write(val);
delay(recordTime);
}

digitalWrite(13, LOW); //turn off status led
delay(1000);//give time for person
recording = false;
}
else {
for (int i = 1; i <= resolution; i++) {//playback
if (digitalRead(2) == 0) {//stop playback and record new values
recording = true;
break;
}
int readval = EEPROM.read(i);
myServo.write(readval);
//Serial.println(readval);
delay(recordTime);
}

digitalWrite(13, HIGH); //show a new repeat
delay(100);
digitalWrite(13, LOW);
}
}

 

توجه‌داشته‌باشید، کامنت “()MUST be less than EEPROM.length//” برای پیداکردن حافظه EEPROM برد آردوینو شماست. برای پی‌بردن به مقدار حافظه خط “;((Serial.println(EEPROM.read(i//” را ازحالت کامنت خارج‌کنید تا اندازه EEPROM در سریال مانیتور چاپ شود. سپس می‌توانید مقدارمتغیر ذکرشده را براساس مقدارحافظه نمایش‌داده‌شده تغییردهید.

روش استفاده:

برای ضبط با این مدار ساده کافی است کلید فشاری را فشار دهید و اطلاعات را از طریق پتانسیومتر وارد کنید. اکنون برد اقدامات شما را ضبط کرده و بی‌وقفه تکرار می‌کند و درانتهای هرمرحله تکرار LED چشمک می‌زند. این روند تازمانیکه مجدداً کلید را برای ضبط جدید بفشارید تکرار می‌شود. می‌توانید با تغییر متغیرهای “resolution” و “recordTime” مدت‌زمان ضبط را تغییردهید.
نکات:
این کد از حافظه EEPROM در آردوینو استفاده می‌کند، بنابراین می‌توانید: موقعیت‌های موردنظر خود را به‌صورت قسمت به قسمت در حافظه ذخیره‌کنید. بدین٬صورت‌که بعداز تغییر پتانسیومتر دکمه را فشاردهید تا در حافظه ذخیره‌شود، این‌کار را تازمانیکه تمام موقعیت‌های موردنظرتان ذخیره‌شوند انجام‌دهید. سپس دستگاه تمام این موقعیت‌ها را به‌صورت پیوسته انجام می‌دهد. اگر نیازی به ذخیره اطلاعات در زمان قطع‌برق ندارید می‌توانید به‌جای EEPROM اطلاعات را روی یک آرایه‌ی صحیح ذخیره‌نمایید.

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

 

 

منبع: سیسوگ

مطلب قبلیآموزش میکروکنترلر ARM سری STM32F4 قسمت دوم
مطلب بعدیقسمت بیست‌و سوم : رابط کاربری سریال (SPI)

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید