- I2C தொடர்பு நெறிமுறை என்றால் என்ன?
- I2C தொடர்பு எவ்வாறு செயல்படுகிறது?
- I2C தகவல்தொடர்பு எங்கே பயன்படுத்துவது?
- Arduino இல் I2C
- கூறுகள் தேவை
- சுற்று வரைபடம்
- வேலை விளக்கம்
- Arduino இல் I2C புரோகிராமிங்
- மாஸ்டர் அர்டுயினோ புரோகிராமிங் விளக்கம்
- ஸ்லேவ் அர்டுயினோ புரோகிராமிங் விளக்கம்
எங்கள் முந்தைய டுடோரியலில் Arduino இல் SPI தொடர்பு பற்றி அறிந்து கொண்டேன். இன்று நாம் மற்றொரு சீரியல் கம்யூனிகேஷன் புரோட்டோகால் பற்றி அறிந்து கொள்வோம்: I2C (இன்டர் ஒருங்கிணைந்த சுற்றுகள்). I2C ஐ SPI உடன் ஒப்பிடுகையில், I2C க்கு இரண்டு கம்பிகள் மட்டுமே உள்ளன, SPI நான்கு மற்றும் I2C க்கு பல மாஸ்டர் மற்றும் ஸ்லேவ் இருக்க முடியும், அதே நேரத்தில் SPI க்கு ஒரு மாஸ்டர் மற்றும் பல அடிமைகள் மட்டுமே இருக்க முடியும். எனவே ஒரு திட்டத்தில் ஒன்றுக்கு மேற்பட்ட மைக்ரோகண்ட்ரோலர் உள்ளன, அவை எஜமானர்களாக இருக்க வேண்டும், பின்னர் I2C பயன்படுத்தப்படுகிறது. கைரோஸ்கோப், ஆக்ஸிலரோமீட்டர், பாரோமெட்ரிக் பிரஷர் சென்சார்கள், எல்.ஈ.டி டிஸ்ப்ளேக்கள் போன்றவற்றுடன் தொடர்பு கொள்ள பொதுவாக ஐ 2 சி தொடர்பு பயன்படுத்தப்படுகிறது.
இந்த Arduino I2C டுடோரியலில், இரண்டு arduino போர்டுகளுக்கு இடையில் I2C தகவல்தொடர்புகளைப் பயன்படுத்துவோம் மற்றும் பொட்டென்டோமீட்டரைப் பயன்படுத்தி ஒருவருக்கொருவர் (0 முதல் 127 வரை) மதிப்புகளை அனுப்புவோம். ஒவ்வொரு Arduino உடன் இணைக்கப்பட்ட 16x2 LCD இல் மதிப்புகள் காண்பிக்கப்படும். இங்கே ஒரு அர்டுயினோ மாஸ்டராகவும், இன்னொருவர் அடிமையாகவும் செயல்படுவார். எனவே I2C தொடர்பு பற்றிய அறிமுகத்துடன் ஆரம்பிக்கலாம்.
I2C தொடர்பு நெறிமுறை என்றால் என்ன?
ஐ.ஐ.சி என்ற சொல் “ இன்டர் ஒருங்கிணைந்த சுற்றுகள் ” என்பதைக் குறிக்கிறது. இது பொதுவாக I2C அல்லது I ஸ்கொயர் சி அல்லது சில இடங்களில் 2-கம்பி இடைமுக நெறிமுறை (TWI) என குறிக்கப்படுகிறது, ஆனால் இவை அனைத்தும் ஒரே மாதிரியானவை. I2C என்பது ஒரு ஒத்திசைவான தகவல் தொடர்பு நெறிமுறை, தகவல்களைப் பகிரும் இரண்டு சாதனங்களும் பொதுவான கடிகார சமிக்ஞையைப் பகிர்ந்து கொள்ள வேண்டும். தகவல்களைப் பகிர இரண்டு கம்பிகள் மட்டுமே உள்ளன, அவற்றில் ஒன்று சேவல் சிக்னலுக்காகவும் மற்றொன்று தரவை அனுப்புவதற்கும் பெறுவதற்கும் பயன்படுத்தப்படுகிறது.
I2C தொடர்பு எவ்வாறு செயல்படுகிறது?
I2C தொடர்பு முதலில் பிலிப்ஸால் அறிமுகப்படுத்தப்பட்டது. முன்பு சொன்னது போல இரண்டு கம்பிகள் உள்ளன, இந்த இரண்டு கம்பிகளும் இரண்டு சாதனங்களில் இணைக்கப்படும். இங்கே ஒரு சாதனம் மாஸ்டர் என்றும் மற்ற சாதனம் அடிமை என்றும் அழைக்கப்படுகிறது. ஒரு மாஸ்டர் மற்றும் ஒரு அடிமை இருவருக்கும் இடையில் தொடர்பு இருக்க வேண்டும். I2C தகவல்தொடர்புகளின் நன்மை என்னவென்றால், ஒன்றுக்கு மேற்பட்ட அடிமைகளை ஒரு மாஸ்டருடன் இணைக்க முடியும்.

சீரியல் கடிகாரம் (எஸ்சிஎல்) மற்றும் சீரியல் டேட்டா (எஸ்.டி.ஏ) ஆகிய இரண்டு கம்பிகள் வழியாக முழுமையான தொடர்பு நடைபெறுகிறது.
சீரியல் கடிகாரம் (எஸ்சிஎல்): எஜமானரால் உருவாக்கப்பட்ட கடிகார சமிக்ஞையை அடிமையுடன் பகிர்ந்து கொள்கிறது
சீரியல் டேட்டா (எஸ்.டி.ஏ): மாஸ்டர் மற்றும் அடிமைக்கு இடையில் இருந்து தரவை அனுப்புகிறது.
எந்த நேரத்திலும் மாஸ்டர் மட்டுமே தகவல்தொடர்புகளைத் தொடங்க முடியும். பஸ்ஸில் ஒன்றுக்கு மேற்பட்ட அடிமைகள் இருப்பதால், மாஸ்டர் ஒவ்வொரு அடிமையையும் வேறு முகவரியைப் பயன்படுத்தி குறிப்பிட வேண்டும். அந்த குறிப்பிட்ட முகவரியுடன் கூடிய அடிமை மட்டுமே உரையாற்றும்போது, மற்றவர்கள் வெளியேறும்போது தகவலுடன் பதிலளிப்பார்கள். இந்த வழியில் பல சாதனங்களுடன் தொடர்பு கொள்ள ஒரே பஸ்ஸைப் பயன்படுத்தலாம்.
I2C மின்னழுத்தம் நிலைகள் முன்வரையறுக்கப்பட்டவை அல்ல. I2C தொடர்பு நெகிழ்வானது, அதாவது 5v வோல்ட்டால் இயக்கப்படும் சாதனம், I2C க்கு 5v ஐப் பயன்படுத்தலாம் மற்றும் 3.3v சாதனங்கள் I2C தகவல்தொடர்புக்கு 3v ஐப் பயன்படுத்தலாம். வெவ்வேறு மின்னழுத்தங்களில் இயங்கும் இரண்டு சாதனங்கள், I2C ஐப் பயன்படுத்தி தொடர்பு கொள்ள வேண்டுமானால் என்ன செய்வது? 5 வி ஐ 2 சி பஸ்ஸை 3.3 வி சாதனத்துடன் இணைக்க முடியாது. இந்த வழக்கில் மின்னழுத்த மாற்றிகள் இரண்டு I2C பேருந்துகளுக்கு இடையிலான மின்னழுத்த அளவை பொருத்த பயன்படுகின்றன.
ஒரு பரிவர்த்தனையை வடிவமைக்கும் சில நிபந்தனைகள் உள்ளன. டிரான்ஸ்மிஷனைத் தொடங்குவது எஸ்.டி.ஏவின் வீழ்ச்சி விளிம்பில் தொடங்குகிறது, இது எஸ்.டி.ஏ-ஐ குறைவாக அமைக்கும் போது மாஸ்டர் எஸ்.சி.எல் உயரத்தை விட்டு வெளியேறும் வரைபடத்தில் கீழே 'ஸ்டார்ட்' நிலை என வரையறுக்கப்படுகிறது.

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

ஆர் / டபிள்யூ பிட் பின்வரும் பைட்டுகளின் பரிமாற்ற திசையைக் குறிக்கிறது, அது உயர்வாக இருந்தால் அடிமை கடத்துகிறது, அது குறைவாக இருந்தால் மாஸ்டர் கடத்தும்.
ஒவ்வொரு கடிகார சுழற்சியிலும் ஒவ்வொரு பிட் கடத்தப்படுகிறது, எனவே ஒரு பைட்டை கடத்த 8 கடிகார சுழற்சிகள் எடுக்கும். ஒவ்வொரு பைட்டிற்கும் அனுப்பப்பட்ட அல்லது பெறப்பட்ட பிறகு, ACK / NACK க்கு ஒன்பதாவது கடிகார சுழற்சி நடைபெறுகிறது (ஒப்புக்கொள்ளப்பட்டது / ஒப்புக்கொள்ளப்படவில்லை). இந்த ACK பிட் நிலைமையைப் பொறுத்து அடிமை அல்லது எஜமானரால் உருவாக்கப்படுகிறது. ACK பிட்டைப் பொறுத்தவரை, SDA 9 வது கடிகார சுழற்சியில் மாஸ்டர் அல்லது அடிமை மூலம் குறைவாக அமைக்கப்பட்டுள்ளது. எனவே இது குறைவாக உள்ளது, இது ACK இல்லையெனில் NACK என்று கருதப்படுகிறது.

I2C தகவல்தொடர்பு எங்கே பயன்படுத்துவது?
I2C தொடர்பு குறுகிய தூர தொடர்புக்கு மட்டுமே பயன்படுத்தப்படுகிறது. இது ஸ்மார்ட் செய்ய ஒத்திசைக்கப்பட்ட கடிகார துடிப்பு இருப்பதால் இது நிச்சயமாக ஒரு அளவிற்கு நம்பகமானது. இந்த நெறிமுறை முக்கியமாக சென்சார் அல்லது பிற சாதனங்களுடன் தொடர்பு கொள்ள பயன்படுகிறது, இது ஒரு மாஸ்டருக்கு தகவலை அனுப்ப வேண்டும். ஒரு மைக்ரோகண்ட்ரோலர் குறைந்தபட்சம் பல கம்பிகளைப் பயன்படுத்தி பல அடிமை தொகுதிகளுடன் தொடர்பு கொள்ளும்போது இது மிகவும் எளிது. நீங்கள் ஒரு நீண்ட தூர தகவல்தொடர்பு தேடுகிறீர்களானால், நீங்கள் RS232 ஐ முயற்சிக்க வேண்டும், மேலும் நம்பகமான தகவல்தொடர்பு தேடுகிறீர்கள் என்றால் நீங்கள் SPI நெறிமுறையை முயற்சிக்க வேண்டும்.
Arduino இல் I2C
கீழேயுள்ள படம் Arduino UNO இல் உள்ள I2C ஊசிகளைக் காட்டுகிறது.

| I2C வரி | Arduino இல் முள் |
| எஸ்.டி.ஏ. | அ 4 |
| எஸ்.சி.எல் | அ 5 |
இரண்டு Arduino ஐப் பயன்படுத்தி நிரலாக்க I2C இல் தொடங்குவதற்கு முன். Arduino IDE இல் பயன்படுத்தப்படும் வயர் நூலகத்தைப் பற்றி நாம் கற்றுக்கொள்ள வேண்டும்.
நூலகம்
1. வயர்.பெஜின் (முகவரி):
பயன்படுத்தவும்: இந்த நூலகம் I2C சாதனங்களுடன் தொடர்பு கொள்ள பயன்படுகிறது. இது வயர் நூலகத்தைத் துவக்கி, ஐ 2 சி பஸ்ஸில் மாஸ்டர் அல்லது அடிமையாக சேருங்கள்.
முகவரி: 7-பிட் அடிமை முகவரி விருப்பமானது மற்றும் முகவரி குறிப்பிடப்படவில்லை என்றால், இது பஸ்ஸில் இது போன்ற ஒரு மாஸ்டராக இணைகிறது.
2. வயர்.ரெட் ():
பயன்படுத்தவும்: இந்த செயல்பாடு மாஸ்டர் அல்லது அடிமை சாதனத்திலிருந்து பெறப்பட்ட ஒரு பைட்டைப் படிக்கப் பயன்படுகிறது, இது ஒரு அடிமை சாதனத்திலிருந்து முதன்மை சாதனத்திற்கு கோரிக்கை அழைப்பிலிருந்து () அழைப்பிற்குப் பிறகு அனுப்பப்பட்டது அல்லது ஒரு எஜமானரிடமிருந்து அடிமைக்கு அனுப்பப்பட்டது.
3. வயர்.ரைட் ():
பயன்படுத்தவும்: அடிமை அல்லது முதன்மை சாதனத்திற்கு தரவை எழுத இந்த செயல்பாடு பயன்படுத்தப்படுகிறது.
மாஸ்டருக்கு அடிமை : வயர்.ரெக்வெஸ்ட்ஃப்ரோம் () மாஸ்டரில் பயன்படுத்தப்படும்போது அடிமை ஒரு மாஸ்டருக்கு தரவை எழுதுகிறார்.
மாஸ்டருக்கு அடிமை: ஒரு மாஸ்டரிலிருந்து அடிமை சாதனத்திற்கு அனுப்புவதற்கு வயர்.ரைட் () வயர்.பெஜின் டிரான்ஸ்மிஷன் () மற்றும் வயர்.இன்ட் டிரான்ஸ்மிஷன் () ஆகியவற்றுக்கு இடையேயான அழைப்புகளுக்கு இடையில் பயன்படுத்தப்படுகிறது .
Wire.write () ஐ இவ்வாறு எழுதலாம்:
- வயர்.ரைட் (மதிப்பு)
மதிப்பு: ஒற்றை பைட்டாக அனுப்ப வேண்டிய மதிப்பு.
- வயர்.ரைட் (சரம்):
சரம்: தொடர்ச்சியான பைட்டுகளாக அனுப்ப ஒரு சரம்.
- வயர்.ரைட் (தரவு, நீளம்):
தரவு: பைட்டுகளாக அனுப்ப தரவு வரிசை
நீளம்: கடத்த பைட்டுகளின் எண்ணிக்கை.
4. Wire.beginTransmission (முகவரி):
பயன்படுத்தவும்: கொடுக்கப்பட்ட அடிமை முகவரியுடன் I2C சாதனத்திற்கு ஒரு பரிமாற்றத்தைத் தொடங்க இந்த செயல்பாடு பயன்படுத்தப்படுகிறது. பின்னர், எழுதுதல் () செயல்பாட்டுடன் பரிமாற்றத்திற்கான பைட்டுகளின் வரிசையை உருவாக்கி, பின்னர் எண்ட் டிரான்ஸ்மிஷன் () செயல்பாட்டை அழைப்பதன் மூலம் அவற்றை கடத்தவும் . சாதனத்தின் 7-பிட் முகவரி கடத்தப்படுகிறது.
5. வயர்.இன்ட் டிரான்ஸ்மிஷன் ();
பயன்பாடு: தொடக்க டிரான்ஸ்மிஷன் () ஆல் தொடங்கப்பட்ட அடிமை சாதனத்திற்கு ஒரு பரிமாற்றத்தை முடிக்க இந்த செயல்பாடு பயன்படுத்தப்படுகிறது மற்றும் வயர்.ரைட் () ஆல் வரிசைப்படுத்தப்பட்ட பைட்டுகளை கடத்துகிறது .
6. Wire.onRequest ();
பயன்படுத்தவும்: அடிமை சாதனத்திலிருந்து Wire.requestFrom () ஐப் பயன்படுத்தி ஒரு மாஸ்டர் தரவைக் கோரும்போது இந்த செயல்பாடு அழைக்கப்படுகிறது. மாஸ்டருக்கு தரவை அனுப்ப Wire.write () செயல்பாட்டை இங்கே சேர்க்கலாம்.
7. Wire.onReceive ();பயன்படுத்தவும்: அடிமை சாதனம் மாஸ்டரிடமிருந்து தரவைப் பெறும்போது இந்த செயல்பாடு அழைக்கப்படுகிறது. இங்கே நாம் Wire.read () ஐ சேர்க்கலாம் ; மாஸ்டரிடமிருந்து அனுப்பப்பட்ட தரவைப் படிக்க செயல்பாடு.
8. Wire.requestFrom (முகவரி, அளவு);
பயன்படுத்தவும்: அடிமை சாதனத்திலிருந்து பைட்டுகளைக் கோர இந்த செயல்பாடு மாஸ்டரில் பயன்படுத்தப்படுகிறது. Wire.read () செயல்பாடு அடிமை சாதனத்திலிருந்து அனுப்பப்பட்ட தரவைப் படிக்கப் பயன்படுகிறது.
முகவரி: பைட்டுகளை கோர சாதனத்தின் 7 பிட் முகவரி
அளவு: கோர வேண்டிய பைட்டுகளின் எண்ணிக்கை
கூறுகள் தேவை
- அர்டுடினோ யூனோ (2-எண்)
- 16 எக்ஸ் 2 எல்சிடி காட்சி தொகுதி
- 10 கே பொட்டென்டோமீட்டர் (4-எண்)
- ப்ரெட்போர்டு
- கம்பிகளை இணைக்கிறது
சுற்று வரைபடம்

வேலை விளக்கம்
Arduino இல் I2C தகவல்தொடர்புகளை நிரூபிக்க, நாங்கள் இரண்டு 16X2 LCD டிஸ்ப்ளே கொண்ட இரண்டு Arduino UNO ஐப் பயன்படுத்துகிறோம், மேலும் இரண்டு arduino இல் இரண்டு பொட்டென்டோமீட்டர்களைப் பயன்படுத்துகிறோம், அனுப்பும் மதிப்புகளை (0 முதல் 127 வரை) மாஸ்டர் முதல் அடிமை வரை மற்றும் அடிமை மாஸ்டர் வரை மாறுபடுவதன் மூலம் தீர்மானிக்க பொட்டென்டோமீட்டர்.
பொட்டென்டோமீட்டரைப் பயன்படுத்துவதன் மூலம் (0 முதல் 5 வி வரை) arduino pin A0 இல் உள்ளீட்டு அனலாக் மதிப்பை எடுத்து அவற்றை அனலாக் டிஜிட்டல் மதிப்புக்கு (0 முதல் 1023 வரை) மாற்றுகிறோம். I2C தகவல்தொடர்பு மூலம் 7-பிட் தரவை மட்டுமே அனுப்ப முடியும் என்பதால் இந்த ADC மதிப்புகள் மேலும் (0 முதல் 127 வரை) மாற்றப்படுகின்றன. I2C தகவல்தொடர்பு இரண்டு கம்பிகள் வழியாக இரண்டு Aduin இன் முள் A4 & A5 இல் நடைபெறுகிறது.
ஸ்லேவ் அர்டுயினோவின் எல்சிடியில் உள்ள மதிப்புகள் மாஸ்டர் பக்கத்தில் POT ஐ மாற்றுவதன் மூலம் மாற்றப்படும்.

Arduino இல் I2C புரோகிராமிங்
இந்த டுடோரியலில் மாஸ்டர் அர்டுயினோவிற்கும் மற்றொன்று அடிமை அர்டுயினோவிற்கும் இரண்டு திட்டங்கள் உள்ளன. இரு தரப்பினருக்கும் முழுமையான நிரல்கள் இந்த திட்டத்தின் முடிவில் ஒரு ஆர்ப்பாட்ட வீடியோவுடன் கொடுக்கப்பட்டுள்ளன.
மாஸ்டர் அர்டுயினோ புரோகிராமிங் விளக்கம்
1. முதலில் நாம் I2C தகவல்தொடர்பு செயல்பாடுகளைப் பயன்படுத்துவதற்கான வயர் நூலகத்தையும் எல்சிடி செயல்பாடுகளைப் பயன்படுத்த எல்சிடி நூலகத்தையும் சேர்க்க வேண்டும். 16x2 எல்சிடிக்கு எல்சிடி ஊசிகளையும் வரையறுக்கவும். அர்டுயினோவுடன் எல்.சி.டி.யை இணைப்பது பற்றி மேலும் அறிக.
#சேர்க்கிறது
2. வெற்றிட அமைப்பில் ()
- நாங்கள் பாட் வீதம் 9600 இல் தொடர் தொடர்புகளைத் தொடங்குகிறோம்.
சீரியல்.பெஜின் (9600);
- அடுத்து I2C தகவல்தொடர்புகளை முள் (A4, A5) இல் தொடங்குவோம்
வயர்.பெஜின் (); // முள் (A4, A5) இல் I2C தகவல்தொடர்பு தொடங்குகிறது
- அடுத்து எல்சிடி டிஸ்ப்ளே தொகுதியை 16 எக்ஸ் 2 பயன்முறையில் துவக்கி வரவேற்பு செய்தியைக் காண்பிப்போம், ஐந்து விநாடிகளுக்குப் பிறகு அழிக்கிறோம்.
lcd.begin (16,2); // எல்சிடி டிஸ்ப்ளே lcd.setCursor (0,0) ஐத் தொடங்கவும்; // காட்சி lcd.print ("சர்க்யூட் டைஜஸ்ட்") முதல் வரியில் கர்சரை அமைக்கிறது ; // எல்சிடி lcd.setCursor (0,1) இல் CIRCUIT DIGEST ஐ அச்சிடுகிறது; // காட்சி lcd.print ("I2C 2 ARDUINO") இன் இரண்டாவது வரிசையில் கர்சரை அமைக்கிறது ; // எல்சிடி தாமதத்தில் (5000) I2C ARDUINO ஐ அச்சிடுகிறது ; // 5 விநாடிகள் தாமதம் lcd.clear (); // எல்சிடி டிஸ்ப்ளேவை அழிக்கிறது
3. வெற்றிட சுழற்சியில் ()
- முதலில் நாம் அடிமையிலிருந்து தரவைப் பெற வேண்டும், எனவே அடிமை முகவரி 8 உடன் requestFrom () ஐப் பயன்படுத்துகிறோம், மேலும் ஒரு பைட்டைக் கோருகிறோம்
வயர்.ரெக்வெஸ்ட் (8,1);
பெறப்பட்ட மதிப்பு Wire.read () ஐப் பயன்படுத்தி படிக்கப்படுகிறது
byte MasterReceive = வயர்.ரெட் ();
- அடுத்து முள் A0 உடன் இணைக்கப்பட்டுள்ள மாஸ்டர் arduino POT இலிருந்து அனலாக் மதிப்பைப் படிக்க வேண்டும்
int potvalue = அனலாக் ரீட் (A0);
அந்த மதிப்பை ஒரு பைட்டின் அடிப்படையில் 0 முதல் 127 வரை மாற்றுகிறோம்.
byte MasterSend = வரைபடம் (potvalue, 0,1023,0,127);
- அடுத்து நாம் மாற்றப்பட்ட மதிப்புகளை அனுப்ப வேண்டும், எனவே 8 முகவரியுடன் அடிமை அர்டுயினோவுடன் பரிமாற்றத்தைத் தொடங்குகிறோம்
வயர்.பெஜின் டிரான்ஸ்மிஷன் (8); வயர்.ரைட் (மாஸ்டர்சென்ட்); வயர்.இன்ட் டிரான்ஸ்மிஷன் ();
- அடுத்து அடிமை அர்டுயினோவிலிருந்து பெறப்பட்ட மதிப்புகளை 500 மைக்ரோ விநாடிகளின் தாமதத்துடன் காண்பிப்போம், அந்த மதிப்பை நாங்கள் தொடர்ந்து பெற்று காண்பிப்போம்.
lcd.setCursor (0,0); // எல்சிடி எல்சிடி பிரிண்டின் ஒரு வரிசையில் கர்சரை அமைக்கிறது (">> மாஸ்டர் <<"); // அச்சிட்டுகள் >> மாஸ்டர் << எல்சிடி lcd.setCursor இல் (0,1); // எல்சிடி எல்சிடி பிரிண்டின் இரண்டு வரிசையில் கர்சரை அமைக்கிறது ("ஸ்லேவ்வால்:"); // ஸ்லேவ் வால் அச்சிடுகிறது: எல்சிடி எல்சிடி பிரிண்டில் (மாஸ்டர்ரீசிவ்); // அச்சிட்டுகள் ஸ்லேவ் சீரியல்.பிரிண்ட்லனில் இருந்து பெறப்பட்ட எல்.சி.டி.யில் மாஸ்டர்ரீசீவ் ("அடிமையிலிருந்து பெறப்பட்ட மாஸ்டர்"); // சீரியல் மானிட்டரில் அச்சிடுகிறது Serial.println (MasterReceive); தாமதம் (500); lcd.clear ();
ஸ்லேவ் அர்டுயினோ புரோகிராமிங் விளக்கம்
1. மாஸ்டர் போலவே, முதலில் நாம் I2C தொடர்பு செயல்பாடுகளைப் பயன்படுத்துவதற்கான வயர் நூலகத்தையும் எல்சிடி செயல்பாடுகளைப் பயன்படுத்த எல்சிடி நூலகத்தையும் சேர்க்க வேண்டும். 16x2 எல்சிடிக்கு எல்சிடி ஊசிகளையும் வரையறுக்கவும்.
#சேர்க்கிறது
2. வெற்றிட அமைப்பில் ()
- நாங்கள் பாட் வீதம் 9600 இல் தொடர் தொடர்புகளைத் தொடங்குகிறோம்.
சீரியல்.பெஜின் (9600);
- அடுத்து அடிமை முகவரியுடன் முள் (A4, A5) இல் I2C தகவல்தொடர்பு 8 எனத் தொடங்குகிறோம். இங்கே அடிமை முகவரியைக் குறிப்பிடுவது முக்கியம்.
வயர்.பெஜின் (8);
அடுத்து ஸ்லேவ் மாஸ்டரிடமிருந்து மதிப்பைப் பெறும்போது மற்றும் ஸ்லேவிலிருந்து மாஸ்டர் கோரிக்கை மதிப்பைப் பெறும்போது செயல்பாட்டை அழைக்க வேண்டும்
Wire.onReceive (receEvent); Wire.onRequest (requestEvent);
- அடுத்து எல்சிடி டிஸ்ப்ளே தொகுதியை 16 எக்ஸ் 2 பயன்முறையில் துவக்கி வரவேற்பு செய்தியைக் காண்பிப்போம், ஐந்து விநாடிகளுக்குப் பிறகு அழிக்கிறோம்.
lcd.begin (16,2); // எல்சிடி டிஸ்ப்ளே lcd.setCursor (0,0) ஐத் தொடங்கவும்; // காட்சி lcd.print ("சர்க்யூட் டைஜஸ்ட்") முதல் வரியில் கர்சரை அமைக்கிறது ; // எல்சிடி lcd.setCursor (0,1) இல் CIRCUIT DIGEST ஐ அச்சிடுகிறது; // காட்சி lcd.print ("I2C 2 ARDUINO") இன் இரண்டாவது வரிசையில் கர்சரை அமைக்கிறது ; // எல்சிடி தாமதத்தில் (5000) I2C ARDUINO ஐ அச்சிடுகிறது ; // 5 விநாடிகள் தாமதம் lcd.clear (); // எல்சிடி டிஸ்ப்ளேவை அழிக்கிறது
3. அடுத்து கோரிக்கை நிகழ்வுக்கு ஒன்று மற்றும் நிகழ்வைப் பெறுவதற்கு இரண்டு செயல்பாடுகள் உள்ளன
கோரிக்கை நிகழ்வுக்கு
அடிமையிலிருந்து முதன்மை கோரிக்கை மதிப்பு இந்த செயல்பாடு செயல்படுத்தப்படும். இந்த செயல்பாடு ஸ்லேவ் POT இலிருந்து உள்ளீட்டு மதிப்பை எடுத்து 7-பிட் அடிப்படையில் மாற்றி அந்த மதிப்பை மாஸ்டருக்கு அனுப்புகிறது.
void requestEvent () { int potvalue = அனலாக் ரீட் (A0); byte SlaveSend = வரைபடம் (potvalue, 0,1023,0,127); வயர்.ரைட் (ஸ்லேவ் செண்ட்); }
நிகழ்வைப் பெற
அடிமை முகவரியுடன் அடிமைக்கு மாஸ்டர் தரவை அனுப்பும்போது (8) இந்த செயல்பாடு செயல்படுத்தப்படும். இந்த செயல்பாடு மாஸ்டர் மற்றும் ஸ்டோரிலிருந்து பெறப்பட்ட மதிப்பை வகை பைட்டின் மாறியில் படிக்கிறது.
void receEvent (int howMany { SlaveReceived = Wire.read (); }
4. வெற்றிட சுழற்சியில் ():
மாஸ்டரிடமிருந்து பெறப்பட்ட மதிப்பை எல்சிடி டிஸ்ப்ளே தொகுதியில் தொடர்ந்து காண்பிப்போம்.
void loop (வெற்றிடத்தை) { lcd.setCursor (0,0); // எல்சிடி எல்சிடி பிரிண்டின் ஒரு வரிசையில் கர்சரை அமைக்கிறது (">> அடிமை <<"); // அச்சிட்டு >> அடிமை << எல்சிடி lcd.setCursor இல் (0,1); // எல்சிடி எல்சிடி பிரிண்டின் இரண்டு வரிசையில் கர்சரை அமைக்கிறது ("மாஸ்டர்வால்:"); // அச்சிடுகிறது மாஸ்டர்வால்: எல்சிடி எல்சிடி பிரிண்டில் (ஸ்லேவ் ரீசீவ்); // அச்சிடுகிறது எல்.சி.டி.யில் அடிமை பெறப்பட்ட மதிப்பு மாஸ்டர் சீரியல்.பிரிண்ட்லனில் இருந்து பெறப்பட்டது ("மாஸ்டரிடமிருந்து பெறப்பட்ட அடிமை:"); // சீரியல் மானிட்டரில் அச்சிடுகிறது Serial.println (SlaveReceived); தாமதம் (500); lcd.clear (); }
பொட்டென்டோமீட்டரை ஒரு பக்கத்தில் சுழற்றுவதன் மூலம் , எல்.சி.டி.யில் மாறுபட்ட மதிப்புகளை மற்றொரு பக்கத்தில் காணலாம்:

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