هر سیستمی دارای علائمی جهت اعلام وضعیت می باشد. بدن انسان چنن نوع علامت جهت اعلام وضعیت دارد. یکی از این علائم ضربان قلب می باشد. یکی از پارامترهای سلامتی می باشد. با پیشرفته تر شدن گجت های پوشیدنی بررسی وضعیت ضربان قلب به یک امر عادی تبدیل شده است. در این پست شیوه ی ساخت یک ضربان سنج قابل حمل را آموزش میدهم. در ادامه با مرجع تخصصی آردوینو دیجی اسپارک همراه باشید.
ساختار سنسور ضربان قلب
همانطور که میدانید سنسور ضربان قلب در دسته ی بیومتریک ها قرار دارد. به عبارتی یکی از شگفت انگیز ترین سنسور های بیومتریک می باشد. این ماژول از تراشه آپ امپ 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 کوچکتر استفاده میکنم تفاوتی در کد ها باید بدم؟
با سلام
در خصوص وقفه به آموزش زیر مراجعه کنید.
آموزش وقفههمچنین در خصوص ال ای دی نئوپیکسل تنها تعداد پیکسل ها را در کدها تغییر دهید.
با استفاده از اردینو خیلی اسون هست..
چطور بدون استفاده از میکروکنترولر(آردینیو) نمایشگر ضربان قلب رو میشه ساخت؟
با سلام
این مورد توسط بنده تست نشده است.
سلام
من میخوام سنسور ضربان قلب به صورت وایرلس به این برد وصل بشه،
سنسور ضربان قلب وایرلس وجود داره؟
با سلام
برای این منظور بایستی با بردهای وای فای اقدام به طراحی مدار کنید. در حال حاضر سنسوری که به صورت بیسیم دیتا ارسال کند، موجود نیست.
سلام چطور میتونم شبیه سازی برنامه رو در پروتیوس انجام بدم.
با سلام
سوال شما ارتباطی با این پست ندارد. در خصوص پروتئوس سوالاتتان را در آموزش های مرتبط مطرح کنید.
سلام
من یه دستگاه ضربان قلب میخوام که اخطار بده وقتی ضربان میره بالا
از اینام چیزی سر در نیوردم
ممنون میشم یه راه ارتباطی داشته باشیم
با سلام
کاربر گرامی چنین خدماتی نداریم. تمامی آموزش ها در سایت در دسترس کاربران قرار دارد و میتوانید استفاده کنید.