هر سیستمی دارای علائمی جهت اعلام وضعیت می باشد. بدن انسان چنن نوع علامت جهت اعلام وضعیت دارد. یکی از این علائم ضربان قلب می باشد. یکی از پارامترهای سلامتی می باشد. با پیشرفته تر شدن گجت های پوشیدنی بررسی وضعیت ضربان قلب به یک امر عادی تبدیل شده است. در این پست شیوه ی ساخت یک ضربان سنج قابل حمل را آموزش میدهم. در ادامه با مرجع تخصصی آردوینو دیجی اسپارک همراه باشید.
ساختار سنسور ضربان قلب
همانطور که میدانید سنسور ضربان قلب در دسته ی بیومتریک ها قرار دارد. به عبارتی یکی از شگفت انگیز ترین سنسور های بیومتریک می باشد. این ماژول از تراشه آپ امپ MCP6001 در کنار سنسور APDS9008 بهره میبرد. یک ال ای دی پشت سنسور APDS قرار دارد. پس از قرار دادن پوست بدن روی سنسور در اثر بازگشت نور ضربان قلب را شناسایی می کند. سپس از طریق درگاه آنالوگ به مبکروکنترلر ارسال میکند. لازم به ذکر است از بردهای آردوینو و رزبری پای و Node MCU و دیگر بردهای میروکنترلر میتوانید استفاده کنید.
وسایل مورد نیاز
برد آردوینو Arduino UNO یا برد آردوینو Pro micro
اتصال ضربان سنج به آردوینو
در این آموزش شیوه ی اتصال به برد آردوینو UNO و آردوینو Pro micro جهت جاسازی در لباس را توضیح خواهم داد. اول با برد آردوینو UNO شروع میکنیم.
پایه + سنسور ضربان را به ۵ ولت آردوینو وصل میکنیم.
پایه – سنسور ضربان را به GND آردوینو وصل میکنیم.
پایه S (سیگنال) سنسور را به پایه A0 (آنالوگ) آردوینو وصل میکنیم.
پایه DI از ال ای دی حلقه ای را به پایه ۵ (دیجیتال) آردوینو وصل میکنیم.
پایه VCC ال ای دی حلقه ای را به پابه ۳٫۳ آردوینو وصل میکنیم.
پایه GND ال ای دی حقه ای را به پابه GND آردوینو وصل میکنیم.
فراخوانی کتابخانه
در این آموزش من از کتابخانهی neopixel استفاده کردهام. برای دانلود کتابخانه به صفحه محصول حلقه ال ای دی LED Neo Pixel ring RGB مراجعه و در انتهای صفحه لینک کتابخانه وجود دارد.
نکته بسیار مهم
از آنجایی که برای ساده شدن و کم حجم بودن کدها از دو کد مجزا استفاده کرده ام ، باید به همگام کامپایل کردن از دو تب مجزا استفاده کنید. برای این منظور کافیست بعد از باز کردن برنامه آردوینو از کلیدهای میانبر Ctrl+Shift+N استفاده کنید همانطور که درتصویر زیر میبینید، یک نام برای تب مورد نظر تعریف میکنید و سپس تایید و سپس در درایور مورد نظر خود ذخیره نمایید . حالا کد اول در یکی از تب ها و کد دوم را در دیگری قرار دهید.
کدهای برنامه ضربان قلب آردوینو
#include <Adafruit_NeoPixel.h> // Library containing // Behavior setting variables int pulsePin = 0; // Pulse Sensor purple wire connected to analog pin 0 int blinkPin = 13; // Digital pin to blink led at each beat int fadePin = 5; // pin to do fancy neopixel effects at each beat int fadeRate = 0; // used to fade LED on with PWM on fadePin // these variables are volatile because they are used during the interrupt service routine volatile int BPM; // used to hold the pulse rate volatile int Signal; // holds the incoming raw data volatile int IBI = 600; // holds the time between beats, the Inter-Beat Interval volatile boolean Pulse = false; // true when pulse wave is high, false when it's low volatile boolean QS = false; // becomes true when Arduoino finds a beat. // Set up use of NeoPixels const int NUMPIXELS = 12; // Put the number of NeoPixels you are using here const int BRIGHTNESS = 60; // Set brightness of NeoPixels here Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, fadePin, NEO_GRB + NEO_KHZ800); void setup(){ pinMode(blinkPin,OUTPUT); // pin that will blink to your heartbeat! // Serial.begin(115200); // Serial output data for debugging or external use strip.begin(); strip.setBrightness(BRIGHTNESS); for (int x=0; x < NUMPIXELS; x++) { // Initialize all pixels to 'off' strip.setPixelColor(x, strip.Color(0, 0, 0)); } strip.show(); // Ensure the pixels are off delay(1000); // Wait a second interruptSetup(); // sets up to read Pulse Sensor signal every 2mS } void loop(){ // sendDataSerial('S', Signal); // send Processing the raw Pulse Sensor data if (QS == true){ // Quantified Self flag is true when arduino finds a heartbeat fadeRate = 255; // Set 'fadeRate' Variable to 255 to fade LED with pulse // sendDataSerial('B',BPM); // send heart rate with a 'B' prefix // sendDataSerial('Q',IBI); // send time between beats with a 'Q' prefix QS = false; // reset the Quantified Self flag for next time } ledFadeToBeat(); // Routine that fades color intensity to the beat delay(20); // take a break } void ledFadeToBeat() { fadeRate -= 15; // Set LED fade value fadeRate = constrain(fadeRate,0,255); // Keep LED fade value from going into negative numbers setStrip(fadeRate); // Write the value to the NeoPixels // sendDataSerial('R',fadeRate); } void sendDataSerial(char symbol, int data ) { // Serial.print(symbol); // symbol prefix tells Processing what type of data is coming // Serial.println(data); // the data to send culminating in a carriage return } void setStrip(int r) { // Set the strip to one color intensity (red) int g = 0; // Green is set to zero (for non-red colors, change this) int b = 0; // Blue is set to zero (for non-red colors, change this) for (int x=0; x < NUMPIXELS; x++) { strip.setPixelColor(x, strip.Color(r, g, b)); } strip.show(); }
کدهای سنسور ضربان قلب
volatile int rate[10]; // used to hold last ten IBI values volatile unsigned long sampleCounter = 0; // used to determine pulse timing volatile unsigned long lastBeatTime = 0; // used to find the inter beat interval volatile int P =512; // used to find peak in pulse wave volatile int T = 512; // used to find trough in pulse wave volatile int thresh = 512; // used to find instant moment of heart beat volatile int amp = 100; // used to hold amplitude of pulse waveform volatile boolean firstBeat = true; // used to seed rate array so we startup with reasonable BPM volatile boolean secondBeat = true; // used to seed rate array so we startup with reasonable BPM void interruptSetup(){ // Initializes Timer2 to throw an interrupt every 2mS. TCCR2A = 0x02; // DISABLE PWM ON DIGITAL PINS 3 AND 11, AND GO INTO CTC MODE TCCR2B = 0x06; // DON'T FORCE COMPARE, 256 PRESCALER OCR2A = 0X7C; // SET THE TOP OF THE COUNT TO 124 FOR 500Hz SAMPLE RATE TIMSK2 = 0x02; // ENABLE INTERRUPT ON MATCH BETWEEN TIMER2 AND OCR2A sei(); // MAKE SURE GLOBAL INTERRUPTS ARE ENABLED } // THIS IS THE TIMER 2 INTERRUPT SERVICE ROUTINE. // Timer 2 makes sure that we take a reading every 2 miliseconds ISR(TIMER2_COMPA_vect){ // triggered when Timer2 counts to 124 cli(); // disable interrupts while we do this Signal = analogRead(pulsePin); // read the Pulse Sensor sampleCounter += 2; // keep track of the time in mS with this variable int N = sampleCounter - lastBeatTime; // monitor the time since the last beat to avoid noise // find the peak and trough of the pulse wave if(Signal < thresh && N > (IBI/5)*3){ // avoid dichrotic noise by waiting 3/5 of last IBI if (Signal < T){ // T is the trough T = Signal; // keep track of lowest point in pulse wave } } if(Signal > thresh && Signal > P){ // thresh condition helps avoid noise P = Signal; // P is the peak } // keep track of highest point in pulse wave // NOW IT'S TIME TO LOOK FOR THE HEART BEAT // signal surges up in value every time there is a pulse if (N > 250){ // avoid high frequency noise if ( (Signal > thresh) && (Pulse == false) && (N > (IBI/5)*3) ){ Pulse = true; // set the Pulse flag when we think there is a pulse digitalWrite(blinkPin,HIGH); // turn on pin 13 LED IBI = sampleCounter - lastBeatTime; // measure time between beats in mS lastBeatTime = sampleCounter; // keep track of time for next pulse if(firstBeat){ // if it's the first time we found a beat, if firstBeat == TRUE firstBeat = false; // clear firstBeat flag return; // IBI value is unreliable so discard it } if(secondBeat){ // if this is the second beat, if secondBeat == TRUE secondBeat = false; // clear secondBeat flag for(int i=0; i<=9; i++){ // seed the running total to get a realisitic BPM at startup rate[i] = IBI; } } // keep a running total of the last 10 IBI values word runningTotal = 0; // clear the runningTotal variable for(int i=0; i<=8; i++){ // shift data in the rate array rate[i] = rate[i+1]; // and drop the oldest IBI value runningTotal += rate[i]; // add up the 9 oldest IBI values } rate[9] = IBI; // add the latest IBI to the rate array runningTotal += rate[9]; // add the latest IBI to runningTotal runningTotal /= 10; // average the last 10 IBI values BPM = 60000/runningTotal; // how many beats can fit into a minute? that's BPM! QS = true; // set Quantified Self flag // QS FLAG IS NOT CLEARED INSIDE THIS ISR } } if (Signal < thresh && Pulse == true){ // when the values are going down, the beat is over digitalWrite(blinkPin,LOW); // turn off pin 13 LED Pulse = false; // reset the Pulse flag so we can do it again amp = P - T; // get amplitude of the pulse wave thresh = amp/2 + T; // set thresh at 50% of the amplitude P = thresh; // reset these for next time T = thresh; } if (N > 2500){ // if 2.5 seconds go by without a beat thresh = 512; // set thresh default P = 512; // set P default T = 512; // set T default lastBeatTime = sampleCounter; // bring the lastBeatTime up to date firstBeat = true; // set these to avoid noise secondBeat = true; // when we get the heartbeat back } sei(); // enable interrupts when youre done! }// end isr
در این برنامه ال ای دی های نئوپیکسل Neopixel فقط رنگ قرمز را نشان میدهد که شما میتوانید به رنگ دلخواهتان تغییر دهید.
نمونه کد ضربان قلب برای برد آردوینو Pro micro
volatile int rate[10]; // used to hold last ten IBI values volatile unsigned long sampleCounter = 0; // used to determine pulse timing volatile unsigned long lastBeatTime = 0; // used to find the inter beat interval volatile int P =512; // used to find peak in pulse wave volatile int T = 512; // used to find trough in pulse wave volatile int thresh = 512; // used to find instant moment of heart beat volatile int amp = 100; // used to hold amplitude of pulse waveform volatile boolean firstBeat = true; // used to seed rate array so we startup with reasonable BPM volatile boolean secondBeat = true; // used to seed rate array so we startup with reasonable BPM void interruptSetup(){ // Initializes Timer2 to throw an interrupt every 2mS. TCCR1A = 0x02; // DISABLE PWM ON DIGITAL PINS 3 AND 11, AND GO INTO CTC MODE TCCR1B = 0x05; // DON'T FORCE COMPARE, 256 PRESCALER OCR1A = 0X7C; // SET THE TOP OF THE COUNT TO 124 FOR 500Hz SAMPLE RATE TIMSK1 = 0x02; // ENABLE INTERRUPT ON MATCH BETWEEN TIMER2 AND OCR2A sei(); // MAKE SURE GLOBAL INTERRUPTS ARE ENABLED } // THIS IS THE TIMER 2 INTERRUPT SERVICE ROUTINE. // Timer 2 makes sure that we take a reading every 2 miliseconds ISR(TIMER2_COMPA_vect){ // triggered when Timer2 counts to 124 cli(); // disable interrupts while we do this Signal = analogRead(pulsePin); // read the Pulse Sensor sampleCounter += 2; // keep track of the time in mS with this variable int N = sampleCounter - lastBeatTime; // monitor the time since the last beat to avoid noise // find the peak and trough of the pulse wave if(Signal < thresh && N > (IBI/5)*3){ // avoid dichrotic noise by waiting 3/5 of last IBI if (Signal < T){ // T is the trough T = Signal; // keep track of lowest point in pulse wave } } if(Signal > thresh && Signal > P){ // thresh condition helps avoid noise P = Signal; // P is the peak } // keep track of highest point in pulse wave // NOW IT'S TIME TO LOOK FOR THE HEART BEAT // signal surges up in value every time there is a pulse if (N > 250){ // avoid high frequency noise if ( (Signal > thresh) && (Pulse == false) && (N > (IBI/5)*3) ){ Pulse = true; // set the Pulse flag when we think there is a pulse digitalWrite(blinkPin,HIGH); // turn on pin 13 LED IBI = sampleCounter - lastBeatTime; // measure time between beats in mS lastBeatTime = sampleCounter; // keep track of time for next pulse if(firstBeat){ // if it's the first time we found a beat, if firstBeat == TRUE firstBeat = false; // clear firstBeat flag return; // IBI value is unreliable so discard it } if(secondBeat){ // if this is the second beat, if secondBeat == TRUE secondBeat = false; // clear secondBeat flag for(int i=0; i<=9; i++){ // seed the running total to get a realisitic BPM at startup rate[i] = IBI; } } // keep a running total of the last 10 IBI values word runningTotal = 0; // clear the runningTotal variable for(int i=0; i<=8; i++){ // shift data in the rate array rate[i] = rate[i+1]; // and drop the oldest IBI value runningTotal += rate[i]; // add up the 9 oldest IBI values } rate[9] = IBI; // add the latest IBI to the rate array runningTotal += rate[9]; // add the latest IBI to runningTotal runningTotal /= 10; // average the last 10 IBI values BPM = 60000/runningTotal; // how many beats can fit into a minute? that's BPM! QS = true; // set Quantified Self flag // QS FLAG IS NOT CLEARED INSIDE THIS ISR } } if (Signal < thresh && Pulse == true){ // when the values are going down, the beat is over digitalWrite(blinkPin,LOW); // turn off pin 13 LED Pulse = false; // reset the Pulse flag so we can do it again amp = P - T; // get amplitude of the pulse wave thresh = amp/2 + T; // set thresh at 50% of the amplitude P = thresh; // reset these for next time T = thresh; } if (N > 2500){ // if 2.5 seconds go by without a beat thresh = 512; // set thresh default P = 512; // set P default T = 512; // set T default lastBeatTime = sampleCounter; // bring the lastBeatTime up to date firstBeat = true; // set these to avoid noise secondBeat = true; // when we get the heartbeat back } sei(); // enable interrupts when youre done! }// end isr
از آنجایی که وقفه های برد Pro micro با آردوینو Uno متفاوت است ، یک سری از کدها تغییر داده شده است که باید از کد بالا برای Pro micro استفاده نمایید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
با این ناهماهنگی ضربان قلب احساس میکنم فیلم ترسناک میدیدم!
سلام
ضمن تشکر از توجه شما، منظورتان را متوجه نشدم. لطفا دقیق تر بیان نمایید.
منظورشون ناهمانگی ضربان قب شما در ویدیو میباشد.
سلام وقت بخیر؛ برای من پالس تولید نمیکنه
چندین بار تست کردم نشد در صورتی که در نرم افزار پروتئوس کار میکنه!!!
با سلام
توضیحات بیشتری از روند اجرا دهید تا راهنمایی شود.
سلام کدهارو من نتونستم کامپایل کنم امکانش باشه فایل رو برام ایمیل کنید
سلام
کد ها را کپی پیست نمایید . مشکلی نخواهید داشت.
با سلام
در قسمت volatile int BPM; // used to hold the pulse rate
(قسمت اول سطر ۶۸)
اشکال میگیرد
ادرس اسکرین شات :
http://uupload.ir/files/gyfn_untitled.png
سلام
روی کدام یک از بردهای آردوینو کامپایل کردید؟
UNO و دو کد اول
سلام
ضمن تشکر از توجه شما، کدها را بررسی کردم،متاسفانه یک قسمت از کدها دوبار تکرار شده بود که این مشکل برطرف شد. لطفا کدها را مجددا کپی نمایید و اگر بازهم مشکل داشتید از همین طریق ادامه دهید.
ممنون از پاسخگوییتون
خواهش میکنم . اگر به مشکل برخوردید حتما از همین طریق اقدام نمایید.
سلام اغلب آموزشهاتون بر مبنای رزبری است اما این یکی رو با آردنیو گفتین
ممکنه با رزبری رو بگذارین؟
تشکر
سلام
سعى میکنیم سنسور و ماژول ها رو با میکروکنترل هاى متفاوتى راه اندازى کنیم. چنانچه تقاضا براى این مورد باشد، پس از بررسى در دستور کار قرار خواهیم داد.
ممنون از شما،
تقاضا که همین جا عرض شد
اما کلا خیلی خوبه که اصلا به این هم پرداخته بشه که کِی بایستی رفت سراغ آردوینو، کِی رزبری و کِی هیچکدوم؟
در کنار هم یاد بگیرید. خیلى از پروژه ها ترکیبى از هر دو برد است. و نیاز به دانش آن خواهید داشت. هر دو برد آردوینو و رزبرى را تهیه کنید و مرحله به مرحله با آموزش ها پیش بروید. نحوه اتصال ماژول ها و حتى استفاده از کتابخانه هم کامل در سایت آموزش داده شده است.
سلام .
ممنون آموزش خوبتون.
چند تا سوال داشتم.
من قطعات این برد رو ندارم. قصد دارم بخرم.
میخوام با arduino nano درست کنمش. آیا محدودیتی وجود داره برای این کار؟
برای اینکه این محصولی تقریبا واقعی باشه و در شرایط واقعی کار کنه. ماژولی وجود داره که بتونم با باتری های ساعت مچی ریز ولتاژ ۳ ولت مناسب رو برای این محصول به دست بیارم؟
کلا کوچک ترین ماژول پاور برای Aduino که میشناسید چی هست؟ باتری قلمی هست ولی بزرگه.
این آموزشتون خیلی عالیه. ولی اگر بخواهیم واقعی از هم چین محصولی استفاده کنیم باید محدودیت پاور رو برطرف کنیم.
تشکر دوباره برای آموزش خوبتون.
سلام
ضمن تشکر از توجه شما، اکثر کدهای آردوینو، با رعایت شرایط قابلیت استفاده در تمامی بردهای آردوینو را دارند. در مورد تغذیه برای برد آردوینو پیشنهاد میکنم از باتریهای لیتیوم پلیمر Li-Po استفاده کنید. بسته به نوع پردازش آردوینو، به توان باتری مختلف نیاز دارید. ولی در کل میتوانید به پینهای ۳٫۳ ولت آردوینو اتصال دهید.
بازم ممنون از وقتی که برای پاسخ گویی گذاشتین.
باتری معرفی شده ی شما رو دیدم. خیلی خیلی ممنون بابت راهنماییتون.
از این باتری کوچکتر سراغ ندارید؟ من میخواهم یک محصول فعلا البته آزمایشگاهی درست کنم که در حد یک دست بند باشه و روی مچ یا بازو بتونه بسته بشه.
باتری هایی که معرفی کردین کمی حجیم هست. به همین خاطر باتری ساعت مچی رو فکر کردم بهتر میشه ازش استفاده کرد! ولی هیچ ماژولی برای استفاده از باتری های ساعت مچی پیدا نکردم!
بازم ممنون بابت وقتی که گذاشتید خوندید و جواب دادین.
تشکر
خواهش میکنم.
بله در حال حاضر ماژولی برای باتری های مورد نظر شما ارائه نشده است.
برای باتری هم باید در فروشگاه بررسی کنم، حدودا چه ابعادی مد نظرتان است؟
در حد ابعاد صفحه ی یک ساعت مچی!
در سایز ساعت های هوشمند! Samsung watch برای مثال. قصد ندارم یک ساعت هوشمند درست کنم ولی میخوام برای شروع یک دستگاه ضربان قلب درست کنم که مثل ساعت مچی قابل حمل باشد.
تشکر بابت پاسخ گویی و وقتی که میگذارید برای خوندن .
سلام مجدد
خواهش میکنم،بسیار عالی.
حتما فروشگاه را چک کنید.
سلام بنده دقیقا مدار رو مثل شما وصل کردم میکروی مورد استفاده هم آردیونو یونو Ardnuino uno استفاده کردم
ولی سنسور انگار دقیق عمل نمیکنه اصلا در ست نشون نمیده. هی کم و زیاد میشه.
جرا این طور است ؟
سلام
از توجه شما ممنونم
توجه داشته باشید که این سنسورها از سطح پوست سنجش میکنند و دقتش بسیار به شرایط محیطى بستگى دارد.
سلام وقت بخیر. ممنون از مطالب مفیدتون. درصورت امکان کد arduino میخواستم که اطلاعات از سنسور ضربان قلب خوانده شود و از طریق ماژول بلوتوث Hc05 به نرم افزار اندروید ارسال شود. ممنون میشم کمکم کنید یا سایتی که این کد موجود باشه معرفی کنید. خیلی سایت ها کدها برای ارتباط با وسایل پیچیده است نه سنسور ضربان قلب و من سردر نیاوردم و وقتی هم تغییرشون میدم با error های زیادی مواجه میشم. وقتم محدوده خواهشا کمک کنید
سلام
از توجه شما ممنونم.
هدف از راه اندازى دیجى اسپارک در این چند سال به اشتراک گذارى و قرار دادن آموزش هاى کاربردى در جهت رشد و پیشرفت اینترنت اشیا بوده است. در اکثر آموزش ها کد هاى لازم براى شروع راه اندازى ماژول ها در اختیار کاربران قرار گرفته شده است به عنوان مثال آموزش راه اندازى سنسور ضربان قلب و ماژول بلوتوث هر دو جداگانه در سایت قرار گرفته شده است. هدف ما این است که شما با استناد به این آموزش ها خودتان با ایجاد تغییر در کدها ، پروژه هایى حرفه اى تر را پیاده سازى کنید که این هم مستلزم تلاش خودتان است.
سپاسگزارم
ممنون از پاسخگویی شما. خداروشکر با تلاش زیاد انجام شد. موفق باشید.
سلام مجدد
بسیار عالی موفق باشید.
سلام خانوم پوربلورچیان ، بابت تمام زحماتتون در رابطه با آموزش ممنونم .
خواستم اگر که ممکنه نحوه کار با ماژول ضربان قلب دیجیتال MAX30100 رو بهمون آموزش بدین .
من این ماژول رو خریدم ولی نتونستم اون رو راه اندازی کنم .
متشکرم
سلام
از توجه شما ممنونم.
کالای مورد نظر خود را به فروشگاه پیشنهاد بدید، در صورتیکه به فروشگاه اضافه شود حتما آموزش راه اندازیش رو منتشر خواهم کرد.
سلام
ببخشید این سنسور پالس برا خودش بطور نامنظم پالس میده نمیشه کاریش کرد این مشکل حل بشه ؟
سلام
توجه کنید که این سنسورها از سطح پوست سنجش میکنند و دقتش بسیار به شرایط محیطى بستگى دارد.
سلام این کلیپ و اموزشو دیدم شدیدا ترغیب شدم به سمت یادگیری برد های اردینو و رزبری و حتما اموزش هاشو و خوده قطعاتو تابستان خریداری میکنم و استفاده میکنم(الان کنکور دارم نمیشه)در ضمن فکر کنم این سنسور تشخیص ضربان باید روی نبض کاروتید یا نبض مچی تماس پیدا کنه تا دقیق بتونه کار کنه یه سوال دارم این اموزش کاز با برد های ادینو و رزبری و برنامه نویسی شون چندتا سایت دیدم پولی هستن ایا سایتی رو سراغ دارید رایگان در اختیار کاربران قرار بده؟لطفا جوابشو ایمیل بزنید بهم ممنون از خانم پوربلورچیان
سلام
در ابتدا از توجه و دقت نظر شما ممنونم.
همانطور که مشخص است، دیجی اسپارک تنها مرجع فارسی زبان آردوینو و رزبری پای است. تمامی آموزش ها در سایت رایگان قرار گرفته شده و همچنین از طریق ثبت نظر در هر آموزش با نویسنده پست در ارتباط خواهید بود. برای شروع یادگیری تنها کافیست لینک از کجا شروع کنم را مطالعه نمایید. در منو سایت آموزش های رزبری و آردوینو با چند عنوان مختلف در قالب آموزش و پروژه و کیت دسته بندی شده است و میتوانید به راحتی به آموزش ها دسترسی داشته باشید.
سلام
ببخشید میشه ضربان قلب رو روی LCD نمایش داد؟؟؟؟؟
اگه میشه ممنون میشم توضیح بدید
سلام
بله هیچ محدودیتی ندارد.
برای اضافه کردن کدهای ال سی دی به آموزش راه اندازی سه مدل ال سی دی کاراکتری مراجعه کنید.
باسلام من تمام ویدیو های اردوینو رو در اپارات گذاشتم
با سلام و تشکر ازشما
لطفا لینک را از همین طریق ارسال بفرمایید.
سلام
ممنون از سایت بسیار خوبتون.
دو تا سوال داشتم
من از برد mega 2560 استفاده میکنم میخواستم بدونم کد های وقفه تفاوت دارد یا نه؟
من از Neopixel کوچکتر استفاده میکنم تفاوتی در کد ها باید بدم؟
با سلام
در خصوص وقفه به آموزش زیر مراجعه کنید.
آموزش وقفههمچنین در خصوص ال ای دی نئوپیکسل تنها تعداد پیکسل ها را در کدها تغییر دهید.
با استفاده از اردینو خیلی اسون هست..
چطور بدون استفاده از میکروکنترولر(آردینیو) نمایشگر ضربان قلب رو میشه ساخت؟
با سلام
این مورد توسط بنده تست نشده است.
سلام
من میخوام سنسور ضربان قلب به صورت وایرلس به این برد وصل بشه،
سنسور ضربان قلب وایرلس وجود داره؟
با سلام
برای این منظور بایستی با بردهای وای فای اقدام به طراحی مدار کنید. در حال حاضر سنسوری که به صورت بیسیم دیتا ارسال کند، موجود نیست.
سلام چطور میتونم شبیه سازی برنامه رو در پروتیوس انجام بدم.
با سلام
سوال شما ارتباطی با این پست ندارد. در خصوص پروتئوس سوالاتتان را در آموزش های مرتبط مطرح کنید.
سلام
من یه دستگاه ضربان قلب میخوام که اخطار بده وقتی ضربان میره بالا
از اینام چیزی سر در نیوردم
ممنون میشم یه راه ارتباطی داشته باشیم
با سلام
کاربر گرامی چنین خدماتی نداریم. تمامی آموزش ها در سایت در دسترس کاربران قرار دارد و میتوانید استفاده کنید.