- தேவையான கூறுகள்
- APDS-9960 டிஜிட்டல் ப்ராக்ஸிமிட்டி RGB & சைகை சென்சார் அறிமுகம்
- சுற்று வரைபடம்
- சைகை மற்றும் வண்ண உணர்தலுக்கான நிரலாக்க Arduino
இன்று பெரும்பாலான தொலைபேசிகள் எந்த பயன்பாட்டையும் திறக்க அல்லது மூடுவதற்கு, இசையைத் தொடங்க, அழைப்புகளில் கலந்துகொள்ள சைகை கட்டுப்பாட்டு அம்சத்துடன் வருகின்றன. நேரத்தை மிச்சப்படுத்த இது மிகவும் எளிதான அம்சமாகும், மேலும் சைகைகளுடன் எந்த சாதனத்தையும் கட்டுப்படுத்த இது குளிர்ச்சியாகத் தெரிகிறது. சைகை கட்டுப்படுத்தப்பட்ட ரோபோ மற்றும் சைகை கட்டுப்படுத்தப்பட்ட ஏர் மவுஸை உருவாக்க நாங்கள் முன்பு முடுக்க மானியைப் பயன்படுத்தினோம். ஆனால் இன்று நாம் ஒரு சைகை சென்சார் APDS9960 ஐ Arduino உடன் இணைக்க கற்றுக்கொள்கிறோம். இந்த சென்சாரில் வண்ணங்களைக் கண்டறிய RGB சென்சார் உள்ளது, இது இந்த டுடோரியலிலும் பயன்படுத்தப்படும். எனவே சைகை மற்றும் வண்ணக் கண்டறிதலுக்காக நீங்கள் தனித்தனி சென்சார்களைப் பயன்படுத்தத் தேவையில்லை, இருப்பினும் வண்ணக் கண்டறிதலுக்கான பிரத்யேக சென்சார் கிடைக்கிறது- டி.சி.எஸ்.3200 வண்ண சென்சார், நாங்கள் ஏற்கனவே ஆர்டுயினோவுடன் ஒரு வண்ண வரிசைப்படுத்தும் இயந்திரத்தை உருவாக்கப் பயன்படுத்தினோம்.
தேவையான கூறுகள்
- Arduino UNO
- APDS9960 RGB மற்றும் சைகை சென்சார்
- 16x2 எல்சிடி
- டிபிடிடி சுவிட்ச்
- 100 கே பானை மற்றும் 10 கே மின்தடை
- ஜம்பர் கேபிள்கள்
APDS-9960 டிஜிட்டல் ப்ராக்ஸிமிட்டி RGB & சைகை சென்சார் அறிமுகம்
APDS9960 என்பது ஒரு மல்டிஃபங்க்ஷன் சென்சார். இது சைகைகள், சுற்றுப்புற ஒளி மற்றும் RGB மதிப்புகளை ஒளியில் கண்டறிய முடியும். இந்த சென்சார் ஒரு அருகாமையில் சென்சாராகவும் பயன்படுத்தப்படலாம் மற்றும் அழைப்பில் கலந்து கொள்ளும்போது தொடுதிரையை முடக்க ஸ்மார்ட்போன்களில் பெரும்பாலும் பயன்படுத்தப்படுகிறது.

இந்த சென்சார் நான்கு போட்டோடியோட்களைக் கொண்டுள்ளது. இந்த ஃபோட்டோடியோட்கள் பிரதிபலித்த ஐஆர் ஆற்றலைக் கண்டறிந்து, அவை ஆன்-போர்டு எல்.ஈ.டி மூலம் பரவுகின்றன. எனவே எந்த சைகையும் செய்யப்படும்போதெல்லாம் இந்த ஐஆர் ஆற்றல் தடைபட்டு மீண்டும் சென்சாருக்கு பிரதிபலிக்கிறது, இப்போது சென்சார் சைகை பற்றிய தகவல்களை (திசை, வேகம்) கண்டறிந்து டிஜிட்டல் தகவலாக மாற்றுகிறது. பிரதிபலித்த ஐஆர் ஒளியைக் கண்டறிவதன் மூலம் தடையின் தூரத்தை அளவிட இந்த சென்சார் பயன்படுத்தப்படலாம். இது RGB வண்ணங்களை உணர UV மற்றும் IR தடுக்கும் வடிப்பான்களைக் கொண்டுள்ளது, மேலும் இது ஒவ்வொரு வண்ணத்திற்கும் 16-பிட் தரவை உருவாக்குகிறது.
APDS-9960 சென்சாரின் பின்-அவுட் கீழே காட்டப்பட்டுள்ளது. இந்த சென்சார் I 2 C தொடர்பு நெறிமுறையில் செயல்படுகிறது. இது 1µA மின்னோட்டத்தைப் பயன்படுத்துகிறது மற்றும் 3.3V ஆல் இயக்கப்படுகிறது, எனவே கவனமாக இருங்கள் மற்றும் 5V முள் மூலம் அதை இணைக்க வேண்டாம். இங்குள்ள INT முள் குறுக்கீடு முள் ஆகும், இது I 2 C தகவல்தொடர்புகளை இயக்க பயன்படுகிறது. பிஎஸ் ஜம்பர் இணைக்கப்படாவிட்டால், விஎல் முள் ஆன்-போர்டு எல்இடிக்கு விருப்பமான சக்தி முள் ஆகும். பி.எஸ் ஜம்பர் மூடப்பட்டால், நீங்கள் வி.சி.சி முள் மட்டுமே சக்தியளிக்க வேண்டும், இது இரண்டிற்கும் சக்தியை வழங்கும் - தொகுதி மற்றும் ஐஆர் எல்.ஈ.டி.

சுற்று வரைபடம்
Arduino உடன் APDS960 க்கான இணைப்புகள் மிகவும் எளிமையானவை. RGB சென்சிங் மற்றும் சைகை உணர்திறன் ஆகிய இரண்டு முறைகளுக்கு இடையில் மாற ஒரு டிபிடிடி பொத்தானைப் பயன்படுத்துவோம். முதலாவதாக, APDS9960 இன் I2C தொடர்பு ஊசிகளான SDA மற்றும் SCL ஆகியவை முறையே Arduino pin A4 மற்றும் A5 உடன் இணைக்கப்பட்டுள்ளன. முன்பு கூறியது போல், சென்சாருக்கான இயக்க மின்னழுத்தம் 3.3v ஆக இருப்பதால், APDS9960 இன் VCC மற்றும் GND ஆகியவை 3.3V மற்றும் Arduino இன் GND உடன் இணைக்கப்பட்டுள்ளன. APDS9960 இன் குறுக்கீடு முள் (INT) Arduino இன் D2 முள் உடன் இணைக்கப்பட்டுள்ளது.
எல்சிடியைப் பொறுத்தவரை, தரவு ஊசிகளும் (டி 4-டி 7) டிஜிட்டல் ஊசிகளுடன் அர்டுயினோவின் டி 6-டி 3 உடன் இணைக்கப்பட்டுள்ளன, மேலும் ஆர்எஸ் மற்றும் ஈஎன் ஊசிகளும் அர்டுயினோவின் டி 6 மற்றும் டி 7 உடன் இணைக்கப்பட்டுள்ளன. எல்சிடியின் வி 0 பானையுடன் இணைக்கப்பட்டுள்ளது மற்றும் எல்சிடியின் பிரகாசத்தைக் கட்டுப்படுத்த 100 கே பானை பயன்படுத்தப்படுகிறது. டிபிடிடி பொத்தான்களுக்கு நாங்கள் 3 ஊசிகளை மட்டுமே பயன்படுத்தினோம். இரண்டாவது முள் உள்ளீட்டுக்காக Arduino இன் D7 முள் உடன் இணைக்கப்பட்டுள்ளது, மற்ற இரண்டு GND மற்றும் VCC உடன் இணைக்கப்பட்டுள்ளன, அதன்பிறகு 10K மின்தடை உள்ளது.


சைகை மற்றும் வண்ண உணர்தலுக்கான நிரலாக்க Arduino
நிரலாக்க பகுதி எளிமையானது மற்றும் எளிதானது மற்றும் டெமோ வீடியோவுடன் முழுமையான நிரல் இந்த டுடோரியலின் முடிவில் கொடுக்கப்பட்டுள்ளது.
முதலில் நாம் ஸ்பார்க்ஃபன் தயாரித்த நூலகத்தை நிறுவ வேண்டும். இந்த நூலகத்தை நிறுவ ஸ்கெட்ச்-> நூலகத்தைச் சேர்க்கவும்-> நூலகங்களை நிர்வகி.

இப்போது தேடல் பட்டியில் “ஸ்பார்க்ஃபன் APDS9960” என தட்டச்சு செய்து நூலகத்தைப் பார்க்கும்போது நிறுவு பொத்தானைக் கிளிக் செய்க.

நாங்கள் செல்ல தயாராக இருக்கிறோம். தொடங்குவோம்.
எனவே முதலில் நாம் தேவையான அனைத்து தலைப்பு கோப்புகளையும் சேர்க்க வேண்டும். முதல் தலைப்பு கோப்பு LiquidCrystal.h எல்சிடி செயல்பாடுகளுக்கு பயன்படுத்தப்படுகிறது. இரண்டாவது தலைப்பு கோப்பு Wire.h I 2 C தகவல்தொடர்புக்கு பயன்படுத்தப்படுகிறது மற்றும் கடைசியாக ஒரு SparkFun_APDS996.h APDS9960 சென்சாருக்கு பயன்படுத்தப்படுகிறது.
#சேர்க்கிறது
இப்போது அடுத்த வரிகளில் பொத்தான் மற்றும் எல்சிடிக்கான ஊசிகளை வரையறுத்துள்ளோம்.
const int buttonPin = 7; const int rs = 12, en = 11, d4 = 6, d5 = 5, d6 = 4, d7 = 3; லிக்விட் கிரிஸ்டல் எல்சிடி (ஆர்எஸ், என், டி 4, டி 5, டி 6, டி 7);
அடுத்த பகுதியை, நாம் டிஜிட்டல் முள் 2 மற்றும் ஒரு மாறி இணைப்பு பெற்று இது குறுக்கீட்டு முள் ஒரு மேக்ரோ வரையறுத்துள்ள buttonState பொத்தானை மற்றும் நிலையைத் தெரிந்துகொள்ள isr_flag குறுக்கீட்டு சேவை நடைமுறையை உள்ளது.
# APDS9960_INT 2 int buttonState ஐ வரையறுக்கவும்; int isr_flag = 0;
அடுத்து ஒரு பொருள் SparkFun_APDS9960 க்கு உருவாக்கப்பட்டது, இதன் மூலம் நாம் சைகை இயக்கங்களை அணுகலாம் மற்றும் RGB மதிப்புகளைப் பெறலாம்.
SparkFun_APDS9960 apds = SparkFun_APDS9960 (); uint16_t சுற்றுப்புற_ ஒளி = 0; uint16_t சிவப்பு_லைட் = 0; uint16_t green_light = 0; uint16_t blue_light = 0;
இல் அமைப்பு செயல்பாடு, முதல் கட்ட மற்றும் உள்ளீடாக பொத்தானை (குறைந்த / உயர்) இருந்து மதிப்பு மற்றும் இரண்டாம் மற்றும் மூன்றாவது வரி வரையறுக்கவும் குறுக்கீடு பொத்தானை முள் எடுக்க வேண்டும். apds.init () APDS9960 சென்சாரைத் துவக்குகிறது மற்றும் lcd.begin (16,2) LCD ஐ துவக்குகிறது.
வெற்றிட அமைப்பு () { buttonState = DigitalRead (buttonPin); pinMode (APDS9960_INT, INPUT); pinMode (buttonPin, INPUT); apds.init (); lcd.begin (16, 2); }
இல் லூப் செயல்பாடு முதல் வரிசையில் பொத்தானை இருந்து மதிப்புகள் மற்றும் அது கடைகள் பெறுகிறார் buttonState மாறி முந்தைய வரையறுக்கின்றனர். இப்போது அடுத்த வரிகளில் நாம் பொத்தானிலிருந்து மதிப்புகளைச் சரிபார்க்கிறோம், அது அதிகமாக இருந்தால் ஒளி சென்சாரை இயக்குகிறோம், அது குறைவாக இருந்தால் சைகை சென்சாரைத் தொடங்கலாம்.
AttachInterrupt () இந்த வழக்கில் சென்சாரின் குறுக்கீட்டு இது வெளி குறுக்கீட்டு பயன்படுத்தப்படும் ஒரு செயல்பாடு ஆகும். இந்த செயல்பாட்டின் முதல் வாதம் குறுக்கீடு எண். Arduino UNO இல், இரண்டு குறுக்கீடு ஊசிகளின் டிஜிட்டல் ஊசிகளும் உள்ளன - 2 மற்றும் 3 INT.0 மற்றும் INT.1 ஆல் குறிக்கப்படுகின்றன. அதை முள் 2 உடன் இணைத்துள்ளோம், எனவே அங்கு 0 எழுதியுள்ளோம். இரண்டாவது வாதம் பின்னர் வரையறுக்கப்பட்ட இடைமறிப்பு வழக்கமான () செயல்பாட்டை அழைக்கிறது. கடைசி வாதம் FALLING ஆகும், இதனால் முள் உயரத்திலிருந்து தாழ்வாக செல்லும்போது குறுக்கீட்டைத் தூண்டும். Arduino குறுக்கீடுகள் பற்றி இங்கே மேலும் அறிக.
void loop () { buttonState = DigitalRead (buttonPin); if (buttonState == HIGH) { apds.enableLightSensor (உண்மை); }
அடுத்த பகுதியில், பொத்தானை முள் சரிபார்க்கிறோம். இது அதிகமாக இருந்தால் , RGB சென்சாருக்கான செயல்முறையைத் தொடங்கவும். ஒளி சென்சார் மதிப்புகளைப் படிக்கிறதா இல்லையா என்பதைச் சரிபார்க்கவும். மதிப்புகளைப் படிக்க முடியாவிட்டால், அந்த விஷயத்தில், " ஒளி மதிப்புகளைப் படிப்பதில் பிழை " என்று அச்சிடுக . அது மதிப்புகளைப் படிக்க முடிந்தால், மூன்று வண்ணங்களின் மதிப்புகளை ஒப்பிட்டு, எது உயர்ந்ததோ, அந்த நிறத்தை எல்சிடிக்கு அச்சிடுங்கள்.
if (buttonState == HIGH) { if (! apds.readAmbientLight (ambient_light) - ! apds.readRedLight (red_light) - ! apds.readGreenLight (green_light) - ! apds.readBlueLight (blue_light)) { lcd.print ("ஒளி மதிப்புகளைப் படிப்பதில் பிழை"); } else { if (red_light> green_light) { if (red_light> blue_light) { lcd.print ("Red"); தாமதம் (1000); lcd.clear (); } ……. ………..
அடுத்த வரிகளில் மீண்டும் பொத்தான் முள் சரிபார்க்கவும், அது குறைவாக இருந்தால் செயல்முறை சைகை சென்சார். Isr_flag ஐ சரிபார்க்கவும், அது 1 ஆக இருந்தால் ஒரு செயல்பாடு detachInterrupt () என அழைக்கப்படுகிறது. இந்த செயல்பாடு குறுக்கீட்டை அணைக்க பயன்படுகிறது. அடுத்த வரி ஹேண்டில்ஜெஸ்டர் () என அழைக்கப்படுகிறது, இது பின்னர் வரையறுக்கப்பட்ட செயல்பாடு. மேலும் அடுத்த வரிகளில் isr_flag ஐ பூஜ்ஜியமாக வரையறுத்து குறுக்கீட்டை இணைக்கவும்.
else if (buttonState == LOW) { if (isr_flag == 1) { detachInterrupt (0); handleGesture (); isr_flag = 0; attachInterrupt (0, interruptRoutine, FALLING); } }
அடுத்தது interruptRoutine () செயல்பாடு. இந்த செயல்பாடு isr_flag மாறி 1 ஐ மாற்ற பயன்படுகிறது, இதனால் குறுக்கீடு சேவையை துவக்க முடியும்.
void interruptRoutine (). { isr_flag = 1; }
HandleGesture () செயல்பாடு அடுத்த பகுதியில் வரையறுக்கப்படுகிறது. இந்த செயல்பாடு முதலில் சைகை சென்சார் கிடைப்பதை சரிபார்க்கிறது. அது கிடைத்தால், அது சைகை மதிப்புகளைப் படித்து, அது எந்த சைகை (UP, DOWN, RIGHT, LEFT, FAR, அருகில்) சரிபார்க்கிறது மற்றும் தொடர்புடைய மதிப்புகளை எல்சிடிக்கு அச்சிடுகிறது.
void handleGesture () { if (apds.isGestureAvailable ()) { சுவிட்ச் (apds.readGesture ()) { வழக்கு DIR_UP: lcd.print ("UP"); தாமதம் (1000); lcd.clear (); உடைத்தல்; வழக்கு DIR_DOWN: lcd.print ("DOWN"); தாமதம் (1000); lcd.clear (); உடைத்தல்; வழக்கு DIR_LEFT: lcd.print ("LEFT"); தாமதம் (1000); lcd.clear (); உடைத்தல்; வழக்கு DIR_RIGHT: lcd.print ("RIGHT"); தாமதம் (1000); lcd.clear (); உடைத்தல்; வழக்கு DIR_NEAR: lcd.print ("அருகில்"); தாமதம் (1000); lcd.clear (); உடைத்தல்; வழக்கு DIR_FAR: lcd.print ("FAR"); தாமதம் (1000); lcd.clear (); உடைத்தல்; இயல்புநிலை: lcd.print ("NONE"); தாமதம் (1000); lcd.clear (); } } }
இறுதியாக, ஆர்டுயினோவில் குறியீட்டைப் பதிவேற்றி, சென்சார் துவக்க காத்திருக்கவும். இப்போது பொத்தானை முடக்கும்போது அது சைகை பயன்முறையில் உள்ளது. எனவே உங்கள் கைகளை இடது, வலது, மேல், கீழ் திசைகளில் நகர்த்த முயற்சிக்கவும். ஐந்து இதுவரை சைகை, 2-3 விநாடிகள் உணர்கருவியை இருந்து 2-4 அங்குல தூரத்தில் உங்கள் கையில் வைத்து அதை நீக்க. மற்றும் அருகில் சைகை சென்சார் இருந்து இதுவரை உங்கள் கை வைத்து பின்னர் அருகில் எடுத்து, அதை நீக்க.

இப்போது வண்ண உணர்திறன் பயன்முறையில் வைக்க பொத்தானை இயக்கவும், சென்சாருக்கு அருகில் சிவப்பு, நீலம் மற்றும் பச்சை பொருள்களை ஒவ்வொன்றாக எடுத்துக் கொள்ளுங்கள். இது பொருளின் நிறத்தை அச்சிடும்.

