- தேவையான பொருட்கள்:
- சுற்று வரைபடம்:
- திட்டவியல் மற்றும் விளக்கம்:
- புரிந்துகொள்வது
- Arduino இல் பியானோ டோன்களை வாசித்தல்:
- Arduino ஐ நிரலாக்க:
- விளையாடு, பதிவுசெய்தல், மறுபதிப்பு மற்றும் மீண்டும் செய்! :
எலக்ட்ரானிக்ஸ் பின்னணியில் இல்லாதவர்களுக்கு பொருட்களை எளிதில் உருவாக்க அர்டுயினோ ஒரு வரப்பிரசாதமாக இருந்து வருகிறார். இது ஒரு சிறந்த முன்மாதிரி கருவியாக அல்லது குளிர்ச்சியான ஒன்றை முயற்சிக்க வேண்டும், இந்த திட்டத்தில் நாம் Arduino ஐப் பயன்படுத்தி ஒரு சிறிய மற்றும் வேடிக்கையான பியானோவை உருவாக்கப் போகிறோம் . இந்த பியானோ வெறும் 8 புஷ் பொத்தான்கள் மற்றும் பஸர் மூலம் மிகவும் தெளிவாக உள்ளது. இது ஸ்பீக்கரில் பல்வேறு வகையான பியானோ குறிப்புகளை உருவாக்க அர்டுயினோவின் தொனி () செயல்பாட்டைப் பயன்படுத்துகிறது. திட்டத்தில் ரெக்கார்டிங் அம்சத்தை நாங்கள் சேர்த்துள்ளோம், இதை ஒரு மசாலா செய்ய, இது ஒரு டியூன் ரெக்கார்டை இயக்கவும், தேவைப்படும்போது மீண்டும் மீண்டும் இயக்கவும் உதவுகிறது. சுவாரஸ்யமான ஒலி !! எனவே 'கட்டிடம் பெறலாம்….
தேவையான பொருட்கள்:
- அர்டுடினோ யூனோ
- 16 * 2 எல்சிடி டிஸ்ப்ளே
- பஸர்
- டிரிம்மர் 10 கே
- SPDT சுவிட்ச்
- புஷ் பொத்தான் (8 எண்)
- மின்தடையங்கள் (10 கி, 560 ஆர், 1.5 கே, 2.6 கே, 3.9, 5.6 கே, 6.8 கே, 8.2 கே, 10 கே)
- ப்ரெட்போர்டு
- கம்பிகளை இணைக்கிறது
சுற்று வரைபடம்:
முழுமையான Arduino பியானோ திட்டத்தை ஒரு இணைக்கும் கம்பிகளுடன் ஒரு பிரெட் போர்டின் மேல் கட்டலாம். திட்டத்தின் பிரெட் போர்டு காட்சியைக் காட்டும் ஃப்ரிட்ஸிங்கைப் பயன்படுத்தி உருவாக்கப்பட்ட சுற்று வரைபடம் கீழே காட்டப்பட்டுள்ளது

சர்க்யூட் வரைபடத்தைப் பின்பற்றி அதற்கேற்ப கம்பிகளை இணைக்கவும், பிசிபி தொகுதிடன் பயன்படுத்தப்பட்ட புஷ் பொத்தான்கள் மற்றும் பஸர் ஆனால் உண்மையான வன்பொருளில் நாங்கள் சுவிட்ச் மற்றும் பஸரை மட்டுமே பயன்படுத்தினோம், ஏனெனில் அவை உங்களை மிகவும் குழப்பிவிடக்கூடாது, ஏனெனில் அவை ஒரே மாதிரியான முள் அவுட். உங்கள் இணைப்புகளை உருவாக்க வன்பொருளின் கீழேயுள்ள படத்தையும் நீங்கள் குறிப்பிடலாம்.

இடதுபுறத்தில் இருந்து மின்தடையங்களின் மதிப்பு பின்வரும் வரிசையில் உள்ளது, 10 கி, 560 ஆர், 1.5 கே, 2.6 கே, 3.9, 5.6 கே, 6.8 கே, 8.2 கே மற்றும் 10 கே. உங்களிடம் அதே டிபிஎஸ்டி சுவிட்ச் இல்லையென்றால், மேலே உள்ள சுற்று வரைபடத்தில் காட்டப்பட்டுள்ளதைப் போல சாதாரண மாற்று சுவிட்சைப் பயன்படுத்தலாம். பின்வரும் இணைப்புகளை நாங்கள் ஏன் செய்துள்ளோம் என்பதைப் புரிந்துகொள்ள திட்டத்தின் திட்டவட்டங்களைப் பார்ப்போம்.
திட்டவியல் மற்றும் விளக்கம்:
மேலே காட்டப்பட்டுள்ள சுற்று வரைபடத்திற்கான திட்டங்கள் கீழே கொடுக்கப்பட்டுள்ளன, இது ஃப்ரிட்ஸிங்கைப் பயன்படுத்தி உருவாக்கப்பட்டது.

நாம் புரிந்து கொள்ள வேண்டிய ஒரு முக்கிய இணைப்பு என்னவென்றால் , அனலாக் A0 முள் மூலம் 8 புஷ் பொத்தான்களை அர்டுயினோவுடன் எவ்வாறு இணைத்தோம். அடிப்படையில் நமக்கு 8 உள்ளீட்டு ஊசிகளும் தேவை, அவை 8 உள்ளீட்டு புஷ் பொத்தான்களுடன் இணைக்கப்படலாம், ஆனால் இது போன்ற திட்டங்களுக்கு நாம் மைக்ரோகண்ட்ரோலரின் 8 ஊசிகளை புஷ் பொத்தான்களுக்காக மட்டுமே பயன்படுத்த முடியாது, ஏனெனில் அவை பின்னர் பயன்பாட்டிற்கு தேவைப்படலாம். எங்கள் விஷயத்தில் எல்சிடி டிஸ்ப்ளே இணைக்கப்பட வேண்டும்.
ஆகவே, நாங்கள் ஆர்டுயினோவின் அனலாக் முள் பயன்படுத்துகிறோம் மற்றும் சுற்று முடிக்க மாறுபட்ட மின்தடை மதிப்புகளைக் கொண்ட சாத்தியமான வகுப்பினை உருவாக்குகிறோம். ஒவ்வொரு பொத்தானையும் அழுத்தும்போது இந்த வழியில் அனலாக் முள் வேறுபட்ட அனலாக் மின்னழுத்தம் வழங்கப்படும். இரண்டு மின்தடையங்கள் மற்றும் இரண்டு புஷ் பொத்தான்கள் கொண்ட மாதிரி சுற்று கீழே காட்டப்பட்டுள்ளது.

இந்த வழக்கில் புஷ் பொத்தான்கள் அழுத்தப்படாத போது ஏடிசி முள் + 5 வி பெறும், முதல் பொத்தானை அழுத்தினால் சாத்தியமான வகுப்பி 560 ஆர் மின்தடையின் மூலம் நிறைவடைகிறது, இரண்டாவது பொத்தானை அழுத்தினால் சாத்தியமான வகுப்பி 1.5 ஐப் பயன்படுத்தி போட்டியிடும் k மின்தடை. இந்த வழியில் ஏடிசி முள் பெறும் மின்னழுத்தம் சாத்தியமான வகுப்பியின் சூத்திரங்களின் அடிப்படையில் மாறுபடும். சாத்தியமான வகுப்பி எவ்வாறு இயங்குகிறது மற்றும் ஏடிசி முள் பெறும் மின்னழுத்தத்தின் மதிப்பை எவ்வாறு கணக்கிடுவது என்பது பற்றி மேலும் அறிய நீங்கள் விரும்பினால், இந்த சாத்தியமான வகுப்பி கால்குலேட்டர் பக்கத்தைப் பயன்படுத்தலாம்.
இந்த எல்லா தொடர்புகளையும் நேராக முன்னோக்கி உள்ளன தவிர, எல்சிடி இணைக்கப்பட்டுள்ளது ஊசிகளையும் 8, 9, 10, 11 மற்றும் 12. க்கு ஒலிப்பான் முள் 7 இணைக்கப்பட்டுள்ளது SPDT சுவிட்ச் Arduino என்ற முள் 6 இணைக்கப்பட்டுள்ளது. முழுமையான திட்டம் மடிக்கணினியின் யூ.எஸ்.பி போர்ட் மூலம் இயக்கப்படுகிறது. டி.சி. ஜாக் மூலம் நீங்கள் 9 வி அல்லது 12 வி சப்ளைக்கு அர்டுயினோவை இணைக்க முடியும், மேலும் திட்டம் இன்னும் அப்படியே செயல்படும்.
புரிந்துகொள்வது
Arduino ஒரு எளிமையான தொனி () செயல்பாட்டைக் கொண்டுள்ளது, இது மாறுபட்ட அதிர்வெண் சமிக்ஞைகளை உருவாக்கப் பயன்படுகிறது, இது ஒரு பஸரைப் பயன்படுத்தி வெவ்வேறு ஒலிகளை உருவாக்க பயன்படுகிறது. எனவே செயல்பாடு எவ்வாறு செயல்படுகிறது மற்றும் அதை Arduino உடன் எவ்வாறு பயன்படுத்தலாம் என்பதைப் புரிந்துகொள்வோம்.
அதற்கு முன் ஒரு பைசோ பஸர் எவ்வாறு செயல்படுகிறது என்பதை நாம் தெரிந்து கொள்ள வேண்டும். எங்கள் பள்ளியில் பைசோ படிகங்களைப் பற்றி நாம் கற்றுக்கொண்டிருக்கலாம், இது இயந்திர அதிர்வுகளை மின்சாரமாக மாற்றும் ஒரு படிகத்தைத் தவிர வேறில்லை. இங்கே நாம் ஒரு மாறி மின்னோட்டத்தை (அதிர்வெண்) பயன்படுத்துகிறோம், அதற்காக படிக அதிர்வுறும் வகையில் ஒலியை உருவாக்குகிறது. எனவே பைசோ பஸரை சிறிது சத்தம் போடுவதற்கு நாம் பைசோ மின்சார படிகத்தை அதிர்வுறச் செய்ய வேண்டும், படிகமும் சத்தமும் தொனி படிக எவ்வளவு விரைவாக அதிர்வுறும் என்பதைப் பொறுத்தது. எனவே மின்னோட்டத்தின் அதிர்வெண் மாறுபடுவதன் மூலம் தொனி மற்றும் சுருதியைக் கட்டுப்படுத்தலாம்.
சரி, ஆகவே அர்டுயினோவிலிருந்து மாறி அதிர்வெண் பெறுவது எப்படி? இங்குதான் தொனி () செயல்பாடு வருகிறது. தொனி () ஒரு குறிப்பிட்ட முள் மீது ஒரு குறிப்பிட்ட அதிர்வெண்ணை உருவாக்க முடியும். தேவைப்பட்டால் கால அளவையும் குறிப்பிடலாம். தொனியின் தொடரியல் () ஆகும்
தொடரியல் தொனி (முள், அதிர்வெண்) தொனி (முள், அதிர்வெண், காலம்) அளவுருக்கள் முள்: தொனி அதிர்வெண்ணை உருவாக்க முள்: ஹெர்ட்ஸில் உள்ள தொனியின் அதிர்வெண் - கையொப்பமிடப்படாத முழு காலம்: மில்லி விநாடிகளில் தொனியின் காலம் (விரும்பினால் 1) - கையொப்பமிடாத நீண்டது
முள் மதிப்புகள் உங்கள் டிஜிட்டல் முள் ஏதேனும் இருக்கலாம். நான் இங்கே முள் எண் 8 ஐப் பயன்படுத்தினேன். உருவாக்கக்கூடிய அதிர்வெண் உங்கள் Arduino போர்டில் உள்ள டைமரின் அளவைப் பொறுத்தது. UNO மற்றும் பிற பொதுவான பலகைகளுக்கு உற்பத்தி செய்யக்கூடிய குறைந்தபட்ச அதிர்வெண் 31Hz மற்றும் உற்பத்தி செய்யக்கூடிய அதிகபட்ச அதிர்வெண் 65535Hz ஆகும். இருப்பினும் மனிதர்களான நாம் 2000 ஹெர்ட்ஸ் மற்றும் 5000 ஹெர்ட்ஸ் இடையே அதிர்வெண்களை மட்டுமே கேட்க முடியும்.
Arduino இல் பியானோ டோன்களை வாசித்தல்:
சரி, நான் இந்த தலைப்பில் தொடங்குவதற்கு முன்பே நான் இசைக் குறிப்புகள் அல்லது பியானோவுடன் புதியவன் என்பதை தெளிவுபடுத்துகிறேன், எனவே இந்த தலைப்பின் கீழ் குறிப்பிடப்பட்ட எதுவும் அபத்தமானது என்றால் தயவுசெய்து என்னை மன்னிக்கவும்.
சில ஒலிகளை உருவாக்க அர்டுயினோவில் உள்ள டோன்களின் செயல்பாட்டைப் பயன்படுத்தலாம் என்பதை இப்போது நாங்கள் அறிவோம், ஆனால் ஒரு குறிப்பிட்ட குறிப்பின் டோன்களை எவ்வாறு பயன்படுத்தலாம். எங்களுக்கு அதிர்ஷ்டம் பிரட் ஹக்மேன் எழுதிய “பிட்ச்ஸ்” என்ற நூலகம் உள்ளது . இந்த நூலகத்தில் பியானோவில் எந்த குறிப்பிற்கு எந்த அதிர்வெண் சமம் என்பது பற்றிய அனைத்து தகவல்களும் உள்ளன. இந்த நூலகம் உண்மையில் ஒரு பியானோவில் கிட்டத்தட்ட ஒவ்வொரு குறிப்பையும் எவ்வாறு இயக்க முடியும் என்பதில் எனக்கு ஆச்சரியமாக இருந்தது, பைரேட்ஸ் ஆஃப் கரீபியன், கிரேஸி தவளை, மரியோ மற்றும் டைட்டானிக் ஆகியவற்றின் பியானோ குறிப்புகளை வாசிப்பதற்கும் நான் இதைப் பயன்படுத்தினேன், அவை அருமையாக ஒலித்தன. அச்சச்சோ! நாங்கள் இங்கே ஒரு சிறிய தலைப்பைப் பெறுகிறோம், எனவே நீங்கள் ஆர்வமாக இருந்தால், Arduino திட்டத்தைப் பயன்படுத்தி மெல்லிசைகளை வாசிப்பதைப் பாருங்கள். அந்த திட்டத்தில் பிட்ச்ஸ்.ஹெச் நூலகத்தைப் பற்றிய கூடுதல் விளக்கத்தையும் நீங்கள் காணலாம்.
எங்கள் திட்டத்தில் 8 புஷ் பொத்தான்கள் மட்டுமே உள்ளன, எனவே ஒவ்வொரு பொத்தானும் ஒரு குறிப்பிட்ட இசைக் குறிப்பை மட்டுமே இயக்க முடியும், இதனால் முற்றிலும் 8 குறிப்புகளை மட்டுமே இயக்க முடியும். நான் ஒரு பியானோவில் அதிகம் பயன்படுத்தப்பட்ட குறிப்புகளைத் தேர்ந்தெடுத்தேன், ஆனால் நீங்கள் எந்த 8 ஐத் தேர்ந்தெடுக்கலாம் அல்லது அதிக புஷ் பொத்தான்கள் மூலம் திட்டத்தை விரிவுபடுத்தலாம் மற்றும் கூடுதல் குறிப்புகளைச் சேர்க்கலாம்.
இந்த திட்டத்தில் தேர்ந்தெடுக்கப்பட்ட குறிப்புகள் முறையே 1 முதல் 8 வரையிலான பொத்தான்களைப் பயன்படுத்தி இயக்கக்கூடிய சி 4, டி 4, இ 4, எஃப் 4, ஜி 4, ஏ 4, பி 4 மற்றும் சி 5 குறிப்புகள்.
Arduino ஐ நிரலாக்க:
கோட்பாடு போதுமானது Arduino ஐ நிரலாக்கத்தின் வேடிக்கையான பகுதியைப் பெறுவோம். முழு Arduino நிரல் நீங்கள் ஆர்வமாக இருந்தால் நீங்கள் கீழே குதிக்க அல்லது எப்படி குறியீடு படைப்புகள் புரிந்து கொள்ள மேலும் படிக்க முடியும் இந்தப் பக்கத்தின் இறுதியில் வழங்கப்படுகிறது.
எங்கள் Arduino நிரலில் நாம் பின் A0 இலிருந்து அனலாக் மின்னழுத்தத்தைப் படிக்க வேண்டும், பின்னர் எந்த பொத்தானை அழுத்தினீர்கள் என்பதைக் கணித்து அந்த பொத்தானுக்கு அந்தந்த தொனியை இயக்க வேண்டும். இதைச் செய்யும்போது, பயனர் எந்த பொத்தானை அழுத்தினார் மற்றும் அவர் / அவள் எவ்வளவு நேரம் அழுத்தியுள்ளார் என்பதையும் பதிவு செய்ய வேண்டும், இதன் மூலம் பயனரால் பின்னர் இயக்கப்பட்ட தொனியை மீண்டும் உருவாக்க முடியும்.
லாஜிக் பகுதிக்குச் செல்வதற்கு முன், எந்த 8 குறிப்புகளை நாங்கள் விளையாடுவோம் என்று அறிவிக்க வேண்டும். குறிப்புகளுக்கான அந்தந்த அதிர்வெண் பின்னர் பிட்ச்ஸ் நூலகத்திலிருந்து எடுக்கப்பட்டு பின்னர் கீழே காட்டப்பட்டுள்ளபடி ஒரு வரிசை உருவாகிறது. குறிப்பு சி 4 ஐ விளையாடுவதற்கான அதிர்வெண் 262 மற்றும் பல.
int குறிப்புகள் = {262, 294, 330, 349, 392, 440, 494, 523}; // சி 4, டி 4, இ 4, எஃப் 4, ஜி 4, ஏ 4, பி 4,
அடுத்து எல்சிடி டிஸ்ப்ளே எந்த ஊசிகளுடன் இணைக்கப்பட்டுள்ளது என்பதை நாம் குறிப்பிட வேண்டும். மேலே கொடுக்கப்பட்ட அதே திட்டங்களை நீங்கள் பின்பற்றுகிறீர்கள் என்றால், நீங்கள் இங்கே எதையும் மாற்ற வேண்டியதில்லை.
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; இது எல்சிடி // பின்ஸ் இணைக்கப்பட்டுள்ளது LiquidCrystal எல்சிடி (ரூ, இல், D4, D5, D6, D7);
அடுத்து, எங்கள் அமைவு செயல்பாட்டின் உள்ளே பிழைத்திருத்தத்திற்கான எல்சிடி தொகுதி மற்றும் சீரியல் மானிட்டரைத் தொடங்குவோம். திட்டமிட்டபடி விஷயங்கள் செயல்படுகின்றன என்பதை உறுதிப்படுத்த ஒரு அறிமுக செய்தியையும் காண்பிப்போம். அடுத்து , பிரதான லூப் செயல்பாட்டின் உள்ளே சுழல்கள் இருக்கும்போது இரண்டு உள்ளன.
எஸ்பிடிடி சுவிட்ச் அதிகமான பதிவில் வைக்கப்படும் வரை ஒரு முறை லூப் செயல்படுத்தப்படும். ரெக்கார்டிங் பயன்முறையில் பயனர் தேவையான டோன்களை செலுத்த முடியும், அதே நேரத்தில் இயக்கப்படும் தொனியும் சேமிக்கப்படும். எனவே லூப் கீழே இது போல் தெரிகிறது
போது (டிஜிட்டல் ரீட் (6) == 0) // மாற்று சுவிட்ச் பதிவு முறையில் அமைக்கப்பட்டால் {lcd.setCursor (0, 0); lcd.print ("பதிவு செய்தல்.."); lcd.setCursor (0, 1); கண்டறிதல்_பட்டன் (); ப்ளே_டோன் (); }
நீங்கள் கவனித்தபடி, இரண்டு சுழற்சிகளுக்குள் எங்களுக்கு இரண்டு செயல்பாடுகள் உள்ளன. முதல் செயல்பாடு Detect_button () பயன்படுத்தப்படுகிறது, பயனர் எந்த பொத்தானை அழுத்தினார் என்பதைக் கண்டுபிடி, இரண்டாவது செயல்பாடு Play_tone () அந்தந்த தொனியை இயக்க பயன்படுகிறது. இந்த செயல்பாட்டைத் தவிர, கண்டறிதல்_பட்டன் () செயல்பாடு எந்த பொத்தானை அழுத்துகிறது என்பதையும் பதிவு செய்கிறது மற்றும் பிளே_டோன் () செயல்பாடு பொத்தானை எவ்வளவு நேரம் அழுத்தியது என்பதை பதிவு செய்கிறது.
Detect_button () செயல்பாட்டின் உள்ளே, முள் A0 இலிருந்து அனலாக் மின்னழுத்தத்தைப் படித்து, எந்த பொத்தானை அழுத்தினோம் என்பதைக் கண்டறிய சில முன் வரையறுக்கப்பட்ட மதிப்புகளுடன் ஒப்பிடுகிறோம். மேலே உள்ள மின்னழுத்த வகுப்பி கால்குலேட்டரைப் பயன்படுத்துவதன் மூலமோ அல்லது சீரியல் மானிட்டரைப் பயன்படுத்துவதன் மூலமோ ஒவ்வொரு பொத்தானுக்கும் என்ன அனலாக் மதிப்பு படிக்கப்படுகிறது என்பதை சரிபார்க்க முடியும்.
வெற்றிடத்தைக் கண்டறிதல்_பட்டன் () { அனலாக்வால் = அனலாக் ரீட் (A0); // முள் A0 pev_button = பொத்தானில் அனலாக் மின்னழுத்தத்தைப் படியுங்கள்; // (அனலாக் வால் <550) பொத்தான் = 8 என்றால் பயனர் அழுத்திய முந்தைய பொத்தானை நினைவில் கொள்க ; if (அனலாக் வால் <500) பொத்தான் = 7; if (அனலாக் வால் <450) பொத்தான் = 6; if (அனலாக் வால் <400) பொத்தான் = 5; if (அனலாக் வால் <300) பொத்தான் = 4; if (அனலாக் வால் <250) பொத்தான் = 3; if (அனலாக் வால் <150) பொத்தான் = 2; if (அனலாக் வால் <100) பொத்தான் = 1; if (அனலாக் வால்> 1000) பொத்தான் = 0; / **** Rcord உள்ள அழுத்தும் பொத்தான்கள் ஒரு வரிசை *** / if (பொத்தான்! = pev_button && pev_button! = 0) { பதிவுசெய்யப்பட்ட_பட்டன் = pev_button; button_index ++; பதிவுசெய்யப்பட்ட_பட்டன் = 0; button_index ++; } / ** பதிவு செய்யும் திட்டத்தின் முடிவு ** / }
சொன்னபடி, இந்த செயல்பாட்டின் உள்ளே பொத்தான்கள் அழுத்தும் வரிசையையும் பதிவு செய்கிறோம். பதிவுசெய்யப்பட்ட மதிப்புகள் பதிவு செய்யப்பட்ட_பட்டன் என்ற வரிசையில் சேமிக்கப்படுகின்றன . ஒரு புதிய பொத்தானை அழுத்தியுள்ளதா என்பதை நாங்கள் முதலில் சரிபார்க்கிறோம், அழுத்தியிருந்தால் அது பொத்தான் 0 இல்லையா என்பதையும் சரிபார்க்கிறோம். எங்கே பொத்தான் 0 எதுவும் இல்லை, ஆனால் எந்த பொத்தானும் அழுத்தப்படவில்லை. If loop க்குள் நாம் மாறி பொத்தான்_இண்டெக்ஸ் வழங்கிய குறியீட்டு இருப்பிடத்தில் மதிப்பை சேமித்து வைக்கிறோம், பின்னர் இந்த குறியீட்டு மதிப்பையும் அதிகரிக்கிறோம், இதனால் ஒரே இடத்தில் எழுத வேண்டாம்.
/ **** Rcord உள்ள அழுத்தும் பொத்தான்கள் ஒரு வரிசை *** / என்றால் (பொத்தானை = pev_button && pev_button = 0!) { Recorded_button = pev_button; button_index ++; பதிவுசெய்யப்பட்ட_பட்டன் = 0; button_index ++; } / ** பதிவு திட்டத்தின் முடிவு ** /
உள்ளே Play_tone () செயல்பாடு நாம் பல பயன்படுத்தி அழுத்தும் பொத்தான் அந்தந்த தொனி விளையாட வேண்டும் என்றால் நிலைமைகள். மேலும் பதிவுசெய்த_நேரம் என்ற பெயரில் ஒரு வரிசையைப் பயன்படுத்துவோம், அதில் பொத்தானை அழுத்திய நேரத்தை சேமிப்போம். ஒவ்வொரு பொத்தானையும் எவ்வளவு நேரம் அழுத்தியது என்பதை தீர்மானிக்க மில்லிஸ் () செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் இந்த செயல்பாடு பதிவு பொத்தானை வரிசைக்கு ஒத்ததாக இருக்கிறது, மேலும் மாறியின் அளவைக் குறைப்பதற்காக மதிப்பை 10 ஆல் வகுக்கிறோம். பொத்தானை 0 க்கு, அதாவது பயனர் இல்லை எதையும் அழுத்துவதன் மூலம் ஒரே காலத்திற்கு எந்த தொனியும் இல்லை. செயல்பாட்டின் உள்ளே முழுமையான குறியீடு கீழே காட்டப்பட்டுள்ளது.
வெற்றிடத்தை Play_tone () { / **** Rcord ஒரு வரிசையில் ஒவ்வொரு பட்டனை அழுத்தவும் இடையே நேரம் தாமதம் *** / என்றால் (பொத்தானை = pev_button!) { lcd.clear (); // பின்னர் அதை சுத்தம் செய்யுங்கள் note_time = (மில்லிஸ் () - தொடக்க_நேரம்) / 10; பதிவுசெய்யப்பட்ட_நேரம் = குறிப்பு_நேரம்; time_index ++; தொடக்க_நேரம் = மில்லிஸ் (); } / ** பதிவு திட்டத்தின் முடிவு ** / என்றால் (பொத்தானை == 0) { noTone (7); lcd.print ("0 -> இடைநிறுத்தம்.."); } if (பொத்தான் == 1) { தொனி (7, குறிப்புகள்); lcd.print ("1 -> NOTE_C4"); } if (பொத்தான் == 2) { தொனி (7, குறிப்புகள்); lcd.print ("2 -> NOTE_D4"); } if (பொத்தான் == 3) { தொனி (7, குறிப்புகள்); lcd.print ("3 -> NOTE_E4"); } if (பொத்தான் == 4) { தொனி (7, குறிப்புகள்); lcd.print ("4 -> NOTE_F4"); } if (பொத்தான் == 5) { தொனி (7, குறிப்புகள்); lcd.print ("5 -> NOTE_G4"); } if (பொத்தான் == 6) { தொனி (7, குறிப்புகள்); lcd.print ("6 -> NOTE_A4"); } if (பொத்தான் == 7) { தொனி (7, குறிப்புகள்); lcd.print ("7 -> NOTE_B4"); } if (பொத்தான் == 8) { தொனி (7, குறிப்புகள்); lcd.print ("8 -> NOTE_C5"); } }
இறுதியாக பதிவுசெய்த பிறகு பயனர் பதிவுசெய்த தொனியை இயக்க டிபிஎஸ்டியை மற்ற திசைக்கு மாற்ற வேண்டும். இது முடிந்ததும், நிரல் முந்தைய போது சுழற்சியை உடைத்து, இரண்டாவது பதிவுக்குள் நுழைகிறது, அங்கு முன்னர் பதிவுசெய்யப்பட்ட காலத்திற்கு அழுத்தும் பொத்தான்களின் வரிசையில் குறிப்புகளை இயக்குகிறோம். இதைச் செய்வதற்கான குறியீடு கீழே காட்டப்பட்டுள்ளது.
போது (டிஜிட்டல் ரீட் (6) == 1) // மாற்று சுவிட்ச் விளையாடும் பயன்முறையில் அமைக்கப்பட்டால் { lcd.clear (); lcd.setCursor (0, 0); lcd.print ("இப்போது விளையாடுகிறது.."); (int i = 0; i <sizeof (record_button) / 2; i ++) { தாமதம் ((பதிவுசெய்யப்பட்ட_நேரம்) * 10); // (பதிவுசெய்யப்பட்ட_பட்டன் == 0) இல்லை டோன் (7) என்றால் அடுத்த டியூன் செலுத்துவதற்கு முன் காத்திருங்கள் ; // பயனர் டின்ட் வேறு எந்த பொத்தானைத் தொடவும் (7, குறிப்புகள் - 1)]); // பயனர் தொட்ட பொத்தானுடன் தொடர்புடைய ஒலியை இயக்கவும் } } }
விளையாடு, பதிவுசெய்தல், மறுபதிப்பு மற்றும் மீண்டும் செய்!:
காட்டப்பட்டுள்ள சுற்று வரைபடத்தின்படி வன்பொருளை உருவாக்கி, குறியீட்டை அர்டுயினோ போர்டு மற்றும் அது காட்டிய நேரத்திற்கு பதிவேற்றவும். எஸ்பிடிடியை ரெக்கார்டிங் பயன்முறையில் வைத்து, உங்களுக்கு விருப்பமான டோன்களை இயக்கத் தொடங்குங்கள், ஒவ்வொரு பொத்தானையும் அழுத்தினால் வேறுபட்ட தொனி உருவாகும். இந்த பயன்முறையில் எல்சிடி “ ரெக்கார்டிங்…” ஐக் காண்பிக்கும், மேலும் இரண்டாவது வரியில் கீழே காட்டப்பட்டுள்ளபடி தற்போது அழுத்தும் குறிப்பின் பெயரைக் காண்பீர்கள்

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

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