সুচিপত্র:

NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন: 5 টি ধাপ
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন: 5 টি ধাপ

ভিডিও: NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন: 5 টি ধাপ

ভিডিও: NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন: 5 টি ধাপ
ভিডিও: Gesture Sensor & LED matrix 2024, জুলাই
Anonim
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন
NonBlocking APDS9960 অঙ্গভঙ্গি সেন্সর বাস্তবায়ন

প্রস্তাবনা

স্পার্কফুন_এপিডিএস -9960_সেন্সর_আরডুইনো_ লাইব্রেরি ব্যবহার করে APDS9960 অঙ্গভঙ্গি সেন্সরের একটি অবরোধহীন বাস্তবায়ন কিভাবে তৈরি করা যায় তা এই নির্দেশযোগ্য বিবরণ।

ভূমিকা

সুতরাং আপনি সম্ভবত নিজেকে জিজ্ঞাসা করছেন যে অবরোধহীন কী? বা এমনকি যে বিষয় জন্য অবরুদ্ধ?

আরো গুরুত্বপূর্ণ বিষয় হল যে কোন কিছুকে অবরুদ্ধ করা সঠিক কেন?

ঠিক আছে, সুতরাং যখন একটি মাইক্রোপ্রসেসর একটি প্রোগ্রাম চালায় তখন এটি ক্রমানুসারে কোডের লাইনগুলি চালায় এবং এটি করার সময় আপনি যে ক্রমটি লিখেছেন সে অনুযায়ী কল করে এবং ফাংশন থেকে ফিরে আসে।

একটি ব্লকিং কল হল যেকোনো ধরনের কার্যকারিতার জন্য একটি কল যা এক্সিকিউশন স্থগিত করে, যার অর্থ একটি ফাংশন কল যেখানে কলকারী ফাংশনটি কার্যকর না হওয়া পর্যন্ত পুনরায় এক্সিকিউশন শুরু করবে না।

তাহলে এটা কেন গুরুত্বপূর্ণ?

সেই ক্ষেত্রে যেখানে আপনি কিছু কোড লিখেছেন যা নিয়মিতভাবে অনেকগুলি ফাংশন সম্পাদন করতে হবে যেমন একটি তাপমাত্রা পড়ুন, একটি বোতাম পড়ুন এবং একটি ডিসপ্লে আপডেট করুন, যদি ডিসপ্লেটি আপডেট করার কোডটি একটি ব্লকিং কল হয়, আপনার সিস্টেমটি প্রতিক্রিয়াশীল হবে না বোতাম টিপুন এবং তাপমাত্রায় পরিবর্তন করুন, কারণ প্রসেসর ডিসপ্লে আপডেট হওয়ার অপেক্ষায় অপেক্ষা করছে এবং বোতাম স্ট্যাটাস বা সর্বশেষ তাপমাত্রা পড়ছে না।

আমার অংশের জন্য আমি ওয়াইফাই সক্ষম আইওটি ডেস্কটপ ডিভাইসে একটি এমকিউটিটি তৈরি করতে চাই যা স্থানীয় এবং দূরবর্তী তাপমাত্রা/আর্দ্রতা উভয় মান, পরিবেষ্টিত আলোর মাত্রা, ব্যারোমেট্রিক চাপ, সময়ের হিসাব রাখে, এই সমস্ত পরামিতিগুলি একটি এলসিডিতে প্রদর্শন করে, একটি ইউএসডিতে লগ ইন করে রিয়েল টাইমে কার্ড, বাটন ইনপুট পড়ুন, আউটপুট এলইডি লিখুন এবং আমার আইওটি ইনফ্রাস্ট্রাকচারের জিনিসগুলিকে নিয়ন্ত্রণ করতে ইঙ্গিতগুলি পর্যবেক্ষণ করুন এবং এগুলি সবই একটি ESP8266-12 দ্বারা নিয়ন্ত্রিত হবে।

দুর্ভাগ্যবশত APDS9960 লাইব্রেরির একমাত্র দুটি উৎস আমি খুঁজে পেলাম স্পার্কফুন এবং অ্যাডাফ্রুট লাইব্রেরি, এ দুটোই অ্যাভাগো (ADPS9960 প্রস্তুতকারক) এর অ্যাপ্লিকেশন কোড থেকে ছিঁড়ে ফেলেছে এবং 'readGesture' নামে একটি কল আছে যার মধ্যে কিছুক্ষণ (1) {}; উপরের প্রকল্পে যখন লুপ ব্যবহার করা হয় তখন ESP8266-12E রিসেট হয়ে যায় যখনই ADPS9960 সেন্সর সম্পৃক্ত হয়ে যায় (অর্থাত্ যখন কোন বস্তু খুব কাছাকাছি থাকে, অথবা সেন্সরকে আলোকিত করার জন্য অন্য কোন IR উৎস থাকে)।

ফলস্বরূপ এই আচরণের সমাধান করার জন্য আমি অঙ্গভঙ্গির প্রক্রিয়াকরণকে দ্বিতীয় প্রসেসরে স্থানান্তরিত করতে বেছে নিয়েছি যার ফলে ESP8266-12E মাস্টার মাইক্রোকন্ট্রোলার হয়ে উঠেছে এবং এই সিস্টেমটি ক্রীতদাস, উপরের ছবি 1 এবং 2 এ দেখানো হয়েছে, যথাক্রমে সিস্টেম ওভারভিউ এবং সিস্টেম কম্পোজিশন ডায়াগ্রাম । ছবি 3 প্রোটোটাইপ সার্কিট দেখায়।

আমার বিদ্যমান কোডে আমার প্রয়োজনীয় পরিবর্তনগুলি সীমাবদ্ধ করার জন্য আমি কল্পনাপ্রসূতভাবে একটি রেপার ক্লাস/লাইব্রেরি লিখেছি যার নাম 'APDS9960_NonBlocking'।

নিম্নলিখিতটি হল অবরুদ্ধ সমাধানের বিশদ ব্যাখ্যা।

আমি কি অংশ প্রয়োজন?

যদি আপনি I2C সমাধানটি তৈরি করতে চান যা APDS9960_NonBlocking লাইব্রেরির সাথে কাজ করে তবে আপনাকে নিম্নলিখিত অংশগুলির প্রয়োজন হবে।

  1. 1 টি ATMega328P এখানে বন্ধ
  2. PCF8574P এ 1 বন্ধ
  3. এখানে 10K রোধকারীদের থেকে 6 টি
  4. এখানে 1K রোধকারীদের 4 বন্ধ
  5. এখানে 1N914 ডায়োড বন্ধ
  6. এখানে PN2222 NPN ট্রানজিস্টর বন্ধ
  7. এখানে 16MHz স্ফটিক বন্ধ
  8. এখানে 0.1uF ক্যাপাসিটার বন্ধ
  9. এখানে 1000uF ইলেক্ট্রোলাইটিক ক্যাপাসিটর বন্ধ
  10. এখানে 10uF ইলেক্ট্রোলাইটিক ক্যাপাসিটরের 1 টি বন্ধ
  11. এখানে 22pF ক্যাপাসিটার থেকে 2 টি

যদি আপনি প্যারালাল ইন্টারফেসের মাধ্যমে অঙ্গভঙ্গি সেন্সর আউটপুট পড়তে চান তাহলে আপনি PCF8574P এবং 10K রোধক বন্ধ করতে পারেন।

আমার কোন সফটওয়্যার দরকার?

Arduino IDE 1.6.9

আমার কোন দক্ষতা দরকার?

সিস্টেমটি সেট আপ করার জন্য, সোর্স কোড (প্রদত্ত) ব্যবহার করুন এবং প্রয়োজনীয় সার্কিট্রি তৈরি করুন যা আপনাকে নিম্নলিখিতগুলির প্রয়োজন হবে;

  • ইলেকট্রনিক্সের ন্যূনতম উপলব্ধি,
  • Arduino এর জ্ঞান এবং এটি IDE,
  • কিভাবে একটি এমবেডেড আরডুইনো প্রোগ্রাম করতে হয় তার একটি বোঝা
  • কিছু ধৈর্য।

বিষয় আচ্ছাদিত

  • সার্কিটের সংক্ষিপ্ত বিবরণ
  • সফটওয়্যারটির সংক্ষিপ্ত বিবরণ
  • APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা হচ্ছে
  • উপসংহার
  • তথ্যসূত্র

ধাপ 1: সার্কিট ওভারভিউ

সার্কিট ওভারভিউ
সার্কিট ওভারভিউ

সার্কিট দুটি ভাগে বিভক্ত;

  • প্রথমটি হল সিরিয়াল I2C সমান্তরাল রূপান্তর যা প্রতিরোধক R8… 10 এবং IC1 এর মাধ্যমে সম্পন্ন হয়। এখানে R8… R10 8 বিট I/O এক্সপেন্ডার চিপ IC1 এবং NXP PCF8574A এর জন্য I2C ঠিকানা সেট করেছে। এই ডিভাইসের বৈধ ঠিকানা রেঞ্জ যথাক্রমে 0x38… 0x3F। I2C সফটওয়্যারের উদাহরণে দেওয়া হয়েছে 'I2C_APDS9960_TEST.ino'
  • অন্যান্য সমস্ত উপাদান একটি ক্রীতদাস এমবেডেড Arduino Uno গঠন করে এবং নিম্নলিখিত কাজগুলি করে;

    • R1, T1, R2 এবং D1 একটি স্লেভ ডিভাইস রিসেট ইনপুট প্রদান করে। এখানে IC1 - P7 এ একটি সক্রিয় উচ্চ পালস U1 কে পুনরায় সেট করতে বাধ্য করবে।
    • R3, R4, এমবেডেড ডিভাইস প্রোগ্রামিং TX/RX লাইনের জন্য বর্তমান সীমাবদ্ধ প্রতিরোধক।
    • C5 এবং R7 Arduino IDE কে সংযুক্ত FTDI ডিভাইসের DTR লাইনে একটি পালসের মাধ্যমে স্বয়ংক্রিয়ভাবে U1 প্রোগ্রাম করার অনুমতি দেয়।
    • R5 এবং R6 হল I2C APDS9960 এর জন্য C6 স্থানীয় প্রতিরোধের সরবরাহকারী সরবরাহকারী রেল ডিকোপলিং সরবরাহ করে।
    • U1, C1, C2 এবং Q1 এমবেডেড Arduino Uno গঠন করে এবং এটি যথাক্রমে ঘড়ি।
    • অবশেষে C3 এবং C4 U1 এর জন্য লোকাল সাপ্লাই রেল ডিকোপলিং প্রদান করে।

পদক্ষেপ 2: সফ্টওয়্যার ওভারভিউ

সফটওয়্যার ওভারভিউ
সফটওয়্যার ওভারভিউ
সফটওয়্যার ওভারভিউ
সফটওয়্যার ওভারভিউ
সফটওয়্যার ওভারভিউ
সফটওয়্যার ওভারভিউ

প্রস্তাবনা

এই সোর্স কোডটি সফলভাবে কম্পাইল করার জন্য এমবেডেড Arduino Uno U1 প্রোগ্রাম করার জন্য আপনাকে নিম্নলিখিত অতিরিক্ত লাইব্রেরির প্রয়োজন হবে;

SparkFun_APDS9960.h

  • লিখেছেন: স্টিভ কুইন
  • উদ্দেশ্য: এটি স্পার্কফুন APDS9960 সেন্সরের কাঁটাযুক্ত সংস্করণ যা jonn26/SparkFun_APDS-9960_Sensor_Arduino_Library থেকে ফর্ক করা হয়েছে। ডিবাগ করতে সাহায্য করার জন্য এটিতে কিছু পরিবর্তন আছে এবং একটি ডি-সেনসিটিভ ডিটেক্টর রয়েছে যা মিথ্যা ট্রিগারিং কমাতে পারে।
  • থেকে:

APDS9960_NonBlocking.h

  • লিখেছেন: স্টিভ কুইন
  • উদ্দেশ্য: আপনার Arduino কোডে APDS9960 অঙ্গভঙ্গি সেন্সরের এই অবরুদ্ধ বাস্তবায়ন এম্বেড করার জন্য একটি পরিষ্কার ইন্টারফেস প্রদান করে।
  • থেকে:

একটি এমবেডেড Arduino Uno (ATMega328P) মাইক্রোকন্ট্রোলার কিভাবে প্রোগ্রাম করতে হয় তা নিচের নির্দেশাবলী দেখুন যদি আপনি এটি কিভাবে অর্জন করতে হয় তা জানেন না;

ATTINY85, ATTINY84 এবং ATMEGA328P এর প্রোগ্রামিং: ARDUINO AS ISP

কার্যকরী ওভারভিউ

ATMega328P এমবেডেড স্লেভ মাইক্রোকন্ট্রোলার ADPS9960 থেকে INT লাইন পোল করে। যখন এই লাইনটি কম হয়ে যায় তখন মাইক্রোকন্ট্রোলার ADPS9960 রেজিস্টারগুলি পড়ে এবং নির্ধারণ করে যে কোন বৈধ অঙ্গভঙ্গি আছে কিনা। যদি একটি বৈধ অঙ্গভঙ্গি সনাক্ত করা হয়, এই অঙ্গভঙ্গির জন্য কোড 0x0… 0x6, 0xF পোর্ট বি -তে রাখা হয়েছে এবং 'nGestureAvailable' কম বলা হয়েছে।

যখন মাস্টার ডিভাইসটি 'nGestureAvailable' সক্রিয় দেখতে পায়, তখন এটি পোর্ট বি -তে মান পড়ে তারপর ডেটা প্রাপ্তির স্বীকার করতে সাময়িকভাবে 'nGestureClear' কম করে।

স্লেভ ডিভাইসটি তখন 'nGestureAvailable' উঁচু করে দেয় এবং পোর্ট বি-তে ডেটা সাফ করে। ছবি 5 উপরে একটি ডিটেক্ট/রিড চক্রের সময় লজিক অ্যানালাইজার থেকে নেওয়া স্ক্রিন গ্র্যাব দেখায়।

কোড ওভারভিউ

উপরের ছবি 1 ইউটিউবে এমবেডেড স্লেভ Arduino Uno- এর সফটওয়্যার কিভাবে কাজ করে, Pic 2 সহ দুটি ব্যাকগ্রাউন্ড/ফোরগ্রাউন্ড টাস্ক কিভাবে ইন্টারঅ্যাক্ট করে তা বিশদ করে। PIC 3 হল একটি কোড সেগমেন্ট যা APDS9960_NonBlockinglibrary ব্যবহার করতে হবে। পিক 4 Arduino Uno ডিজিটাল পিন এবং ATMega328P- এ প্রকৃত হার্ডওয়্যার পিনের মধ্যে একটি ম্যাপিং দেয়।

পুনরায় সেট করার পরে এমবেডেড স্লেভ মাইক্রোকন্ট্রোলার APDS9960 এর সূচনা করে যা ইঙ্গিত সনাক্তকরণকে তার INT আউটপুট ট্রিগার করার অনুমতি দেয় এবং এটি I/O কনফিগার করে, ইন্টারাপ্ট সার্ভিস রুটিন (ISR) 'GESTURE_CLEAR ()' সংযুক্ত করে ভেক্টর INT0 (ডিজিটাল পিন 2, হার্ডওয়্যার আইসি পিন 4), এটি একটি পতনশীল প্রান্ত ট্রিগার জন্য কনফিগার করা। এটি মাস্টার ডিভাইস থেকে nGestureClear ইনপুট গঠন করে।

APDS9960 থেকে ইন্টারপুট আউটপুট পিন 'INT' ডিজিটাল পিন 4, হার্ডওয়্যার আইসি পিন 6 এর সাথে সংযুক্ত যা U1- এর ইনপুট হিসেবে কনফিগার করা হয়েছে।

ডিজিটাল পিন 7, হার্ডওয়্যার আইসি পিন 13 এ 'nGestureAvailable' সিগন্যাল লাইনটি আউটপুট হিসেবে কনফিগার করা হয় এবং উচ্চ, নিষ্ক্রিয় (ডি-অ্যাসেটেড) সেট করা হয়।

অবশেষে পোর্ট বি বিট 0… 3 যথাক্রমে আউটপুট হিসাবে কনফিগার এবং কম সেট করা হয়। এগুলি ডেটা নিবল গঠন করে যা বিভিন্ন সনাক্তকৃত অঙ্গভঙ্গির প্রতিনিধিত্ব করে; None = 0x0, Error = 0xF, Up = 0x1, Down = 0x2, Left = 0x3, Right = 0x4, Near = 0x5 এবং Far = 0x6।

ব্যাকগ্রাউন্ড টাস্ক 'লুপ' নির্ধারিত হয় যা ক্রমাগত ডিজিটাল পিন 4 পড়ার মাধ্যমে APDS9960 ইন্টারপুট আউটপুট INT নির্বাচন করে।) 'এর সাথে আছে (1) {}; অবিরাম লুপ।

যদি একটি বৈধ অঙ্গভঙ্গি সনাক্ত করা হয়, এই মানটি পোর্ট বি -তে লেখা হয়, 'nGestureAvailable' আউটপুটটি দৃerted়ভাবে উল্লেখ করা হয় এবং বুলিয়ান সেমফোর 'bGestureAvailable' সেট করা হয়, যাতে লগ করা থেকে আর কোন অঙ্গভঙ্গি প্রতিরোধ করা যায়।

একবার মাস্টার সক্রিয় 'nGestureAvailable' আউটপুট সনাক্ত করলে এটি এই নতুন মান এবং ডালগুলি 'nGestureClear' সক্রিয় কম পড়ে। এই পতনশীল প্রান্তটি ফোরগ্রাউন্ড টাস্ক 'ISR GESTURE_CLEAR ()' কে ট্রিগার করে ব্যাকগ্রাউন্ড টাস্ক 'লুপ', পোর্ট বি, 'bGestureAvailable' সেমফোর এবং 'nGestureAvailable' আউটপুটকে স্থগিত করা।

ফোরগ্রাউন্ড টাস্ক 'GESTURE_CLEAR ()' এখন স্থগিত করা হয়েছে এবং ব্যাকগ্রাউন্ড টাস্ক 'লুপ' পুনরায় নির্ধারিত হয়েছে। APDS9960 থেকে আরও অঙ্গভঙ্গি এখন অনুভূত হতে পারে।

এই ভাবে ইন্টারাপ্ট ট্রিগারড ফোরগ্রাউন্ড/ব্যাকগ্রাউন্ড টাস্ক ব্যবহার করে স্লেভ ডিভাইসের 'readGesture ()' -এ সম্ভাব্য অসীম লুপ মাস্টার ডিভাইসটিকে অপারেটিং থেকে প্রভাবিত করবে না এবং স্লেভ ডিভাইসের কার্য সম্পাদনেও বাধা দেবে না। এটি একটি খুব সহজ রিয়েল টাইম অপারেটিং সিস্টেম (RTOS) এর ভিত্তি গঠন করে।

দ্রষ্টব্য: 'n' উপসর্গের অর্থ হল সক্রিয় কম বা 'nGestureAvailable' -এর মত

ধাপ 3: নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা

নন -ব্লকিং APDS9960 জেসচার সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 জেসচার সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা
নন -ব্লকিং APDS9960 অঙ্গভঙ্গি সেন্সিং ডিভাইস পরীক্ষা করা

প্রস্তাবনা

যদিও APDS9960 মডিউল +5v দিয়ে সরবরাহ করা হয় তবুও এটি একটি অন-বোর্ড +3v3 রেগুলেটর ব্যবহার করে যার অর্থ হল I2C লাইনগুলি +3v3 সঙ্গতিপূর্ণ এবং +5v নয়। এই কারণেই আমি লেভেল শিফটারের প্রয়োজনীয়তা দূর করতে, পরীক্ষা মাইক্রো কন্ট্রোলার হিসাবে +3v3 অনুবর্তী Arduino ডিউ ব্যবহার করতে বেছে নিয়েছি।

যাইহোক, যদি আপনি একটি প্রকৃত Arduino Uno ব্যবহার করতে চান তবে আপনাকে I2C লাইনগুলিকে U1 এ স্থানান্তর করতে হবে। নিম্নলিখিত নির্দেশাবলী দেখুন যেখানে আমি একটি দরকারী স্লাইড সেট (I2C_LCD_With_Arduino) সংযুক্ত করেছি যা I2C ব্যবহার করার জন্য অনেক ব্যবহারিক টিপস দেয়।

I2C ইন্টারফেস টেস্টিং

উপরের ছবি 1 এবং 2 দেখায় কিভাবে I2C ইন্টারফেসের জন্য সিস্টেম সেট আপ এবং প্রোগ্রাম করা যায়। আপনাকে প্রথমে APDS9960_NonBlocking লাইব্রেরি ডাউনলোড এবং ইনস্টল করতে হবে। এখানে

সমান্তরাল ইন্টারফেস টেস্টিং

প্যারালাল ইন্টারফেসের জন্য ছবি 3 এবং 4 বিস্তারিত

ধাপ 4: উপসংহার

উপসংহার
উপসংহার

সাধারণ

কোডটি ভাল কাজ করে এবং কোনও মিথ্যা ইতিবাচকতা ছাড়াই প্রতিক্রিয়াশীলভাবে অঙ্গভঙ্গি সনাক্ত করে। আমার পরবর্তী প্রজেক্টে ক্রীতদাস হিসাবে এটি কয়েক সপ্তাহ ধরে চলছে এবং চলছে। আমি অনেকগুলি ব্যর্থতার মোড চেষ্টা করেছি (এবং তাই অনুসন্ধিৎসক কুইন গৃহস্থালি মোগি আছে) যার পূর্বে কোন EPS8266-12 রিসেট হয়েছিল, কোন নেতিবাচক প্রভাব ছাড়াই।

সম্ভাব্য উন্নতি

  • সুস্পষ্ট. APDS9960 অঙ্গভঙ্গি সেন্সর লাইব্রেরি পুনরায় লিখুন যাতে অবরোধ না হয়।

    আসলে আমি ব্রডকমের সাথে যোগাযোগ করেছিলাম যিনি আমাকে একজন স্থানীয় পরিবেশকের কাছে রেখেছিলেন যিনি অবিলম্বে সহায়তার জন্য আমার অনুরোধ উপেক্ষা করেছিলেন, আমি শুধু স্পার্কফুন বা অ্যাডাফ্রুট নই, আমার ধারণা। সুতরাং এটি সম্ভবত কিছুক্ষণ অপেক্ষা করতে হবে।

  • একটি ছোট ক্রীতদাস মাইক্রোকন্ট্রোলারে কোডটি পোর্ট করুন। একটি কাজের জন্য ATMega328P ব্যবহার করা একটি ওভারকিল। যদিও আমি প্রাথমিকভাবে ATTiny84 এর দিকে তাকিয়েছিলাম, একটি ব্যবহার করা বন্ধ করে দিয়েছিলাম কারণ আমি অনুভব করেছি যে কোডের সংকলিত আকার একটি সীমান্ত রেখা উপযুক্ত। একটি ভিন্ন I2C লাইব্রেরির সাথে কাজ করার জন্য APDS9960 লাইব্রেরি পরিবর্তন করার অতিরিক্ত ওভারহেড সহ।

ধাপ 5: রেফারেন্স

এমবেডেড আরডুইনো প্রোগ্রাম করার জন্য প্রয়োজনীয় (ATMega328P - U1)

SparkFun_APDS9960.h

  • লিখেছেন: স্টিভ কুইন
  • উদ্দেশ্য: এটি স্পার্কফুন APDS9960 সেন্সরের কাঁটাযুক্ত সংস্করণ যা jonn26/SparkFun_APDS-9960_Sensor_Arduino_Library থেকে ফর্ক করা হয়েছে। ডিবাগ করতে সাহায্য করার জন্য এটিতে কিছু পরিবর্তন আছে এবং একটি ডি-সেনসিটিভ ডিটেক্টর রয়েছে যা মিথ্যা ট্রিগারিং কমাতে পারে।
  • থেকে:

আপনার অরডুইনো কোডে এই নন-ব্লকিং কার্যকারিতা এম্বেড করতে এবং কাজের উদাহরণ দিতে প্রয়োজন

APDS9960_NonBlocking.h

  • লিখেছেন: স্টিভ কুইন
  • উদ্দেশ্য: আপনার Arduino কোডে APDS9960 অঙ্গভঙ্গি সেন্সরের এই অবরুদ্ধ বাস্তবায়ন এম্বেড করার জন্য একটি পরিষ্কার ইন্টারফেস প্রদান করে।
  • থেকে:

রিয়েল টাইম অপারেটিং সিস্টেম

https://en.wikipedia.org/wiki/Real-time_operating_system

APDS9960 ডেটশীট

https://cdn.sparkfun.com/assets/learn_tutorials/3/2/1/Avago-APDS-9960-datasheet.pdf

প্রস্তাবিত: