برد آردوینو
گاهی در سیستمها نیاز داریم رفتار ورودی به سیستم به شکل پیدرپی توسط سیستم تکرار شود و یا سیستم با بازه زمانی مشخص رفتارها را تکرار کند. این پروژه به شما اجازه میدهد تا ورودی سنسور را توسط برد آردوینو ضبط کنید، آنرا ذخیرهنمایید و اطلاعات ذخیرهشده مجدداً تکرارشوند. این اطلاعات روی حافظه 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 اطلاعات را روی یک آرایهی صحیح ذخیرهنمایید.
منبع: سیسوگ