អ្នកប្រាកដជាធ្លាប់លឺពីព្រះគម្ពីរមរមន អាយស៊ីស៊ីភីអេហ្វ ៨៥៧៤ដែលជាបន្ទះឈីបដែលអាចត្រូវបានទិញដាច់ដោយឡែកឬបានតំឡើងរួចហើយនៅលើម៉ូឌុលដូចផ្សេងទៀត សមាសធាតុអេឡិចត្រូនិច ដើម្បីសម្រួលដល់ការធ្វើសមាហរណកម្មរបស់អ្នកជាមួយក្តារអារីដូណូរបស់អ្នក។ ក្នុងករណីនេះវាគឺជាផ្នែកបន្ថែមនៃធាតុចូលនិងលទ្ធផលសម្រាប់ ឡានក្រុង I2C.
អ្នកប្រហែលជាគិតថា Arduino មានរបស់វារួចហើយ ឡានក្រុង I2C រួមបញ្ចូលគ្នាហើយវាជាការពិត។ ប៉ុន្តែ PCF8574 អាចជួយពង្រីករថយន្ដក្រុងនេះហួសពីដែនកំណត់នៃក្រុមប្រឹក្សាអភិវឌ្ឍន៍របស់អ្នកដែលអាចជាជំនួយដ៏អស្ចារ្យដល់អ្នកផលិតមួយចំនួនដែលត្រូវការច្រើនជាងអ្វីដែល Arduino ផ្តល់។
តើឡានក្រុង I2C គឺជាអ្វី?
ឈ្មោះ I2C មកពី សៀគ្វីរួមបញ្ចូលគ្នា ឬសៀគ្វីរួមបញ្ចូលគ្នា។ កំណែ ១.០ របស់វាត្រូវបានបង្កើតឡើងក្នុងឆ្នាំ ១៩៩២ ដោយហ្វីលីព។ បន្ទាប់មកវិនាទីទី ២ នឹងមកដល់ក្នុងឆ្នាំ ២០០០ ហើយសព្វថ្ងៃនេះវាបានក្លាយជាស្តង់ដារមួយ (១០០ គីត / វិនាទីទោះបីជាវាអនុញ្ញាតរហូតដល់ ៣,៤ Mbit / s) នៅពេលដែលប៉ាតង់បានផុតកំណត់ក្នុងឆ្នាំ ២០០៦ ហើយអាចប្រើប្រាស់ដោយសេរី។
នាពេលបច្ចុប្បន្ននេះវាត្រូវបានគេប្រើយ៉ាងទូលំទូលាយនៅក្នុងឧស្សាហកម្ម សម្រាប់ការទំនាក់ទំនងនិងត្រូវបានកោតសរសើរយ៉ាងខ្លាំងពីអ្នកផលិតសម្រាប់គម្រោងរបស់ពួកគេក្នុងការប្រាស្រ័យទាក់ទងជាមួយឧបករណ៍ត្រួតពិនិត្យមីក្រូនិងគ្រឿងបន្លាស់ផ្សេងៗដែលរួមបញ្ចូលគ្នានៅក្នុងអាយឌីស៊ីតែមួយ។
El I2C គឺជាឡានក្រុង ល្បីពីការទំនាក់ទំនងសៀរៀល។ វាប្រើពិធីសារទំនាក់ទំនងសមកាលកម្មដែលមានតែបណ្តាញចំនួន ២ ប៉ុណ្ណោះ (មានប៉ុស្តិ៍ទី ៣ ប៉ុន្តែវាត្រូវបានភ្ជាប់ជាមួយឯកសារយោងឬ GND) តាមពិតវាត្រូវបានគេស្គាល់ថាជា TWI (ចំណុចប្រទាក់ខ្សែពីរ)៖
- មួយសម្រាប់នាឡិកា (អេសអិល) ។
- ផ្សេងទៀតសម្រាប់ទិន្នន័យ (SDA) ។
នោះមានន័យថាឯកសារ ម្ចាស់និងខ្ញុំបម្រើ ពួកគេបញ្ជូនទិន្នន័យតាមខ្សែកាបឬបទតែមួយដែលត្រូវបានគ្រប់គ្រងដោយអ្នកទីមួយដែលបង្កើតសញ្ញានាឡិកា។ ឧបករណ៍គ្រឿងកុំព្យូទ័រនីមួយៗដែលភ្ជាប់ទៅនឹងរថយន្ដក្រុងអាយ។ ស៊ី។ ស៊ីនឹងមានអាស័យដ្ឋានពិសេសមួយដែលត្រូវបានកំណត់ដើម្បីដឹកនាំការបញ្ជូន។ ប៉ុន្តែវាមិនចាំបាច់ទេដែលគ្រូតែងតែដូចគ្នា (គ្រូច្រើន) វាតែងតែជាអ្នកដែលផ្ទេរការផ្ទេរ។
ដូចដែលខ្ញុំបានពន្យល់រួចហើយនៅក្នុងអត្ថបទលើ Arduino I2C ខ្ញុំបានយោងពីមុនក្រុមប្រឹក្សានីមួយៗមានការតភ្ជាប់ I2C ទាំងនេះនៅកន្លែងផ្សេងៗគ្នា។ វាគឺជាអ្វីដែលអ្នកត្រូវចងចាំដើម្បីអាចប្រើវាបានត្រឹមត្រូវនៅក្នុងកំណែនីមួយៗនៃចាន:
- Arduino UNO៖ អេឌីអេសស្ថិតនៅក្នុងអេ ៤ និងអេសខេខេនៅអេ ៥
- អាណូឌូណូណាណូ៖ ដូចគ្នានឹងលេខមុនដែរ។
- អារីដូណូមីនីគាំទ្រ: ដូចគ្នា។
- Arduino មេហ្គា៖ អេឌីអេសស្ថិតនៅលើម្ជុលលេខ ២០ និងអេសខេខេនៅថ្ងៃទី ២១ ។
- ព័ត៌មានបន្ថែមអំពីចាន។
អ្នកដឹងរួចហើយថាអ្នកអាចប្រើ I2C សម្រាប់ការបង្ហាញប្រភេទរូបភាពរបស់អ្នកបានយ៉ាងងាយស្រួលចាប់តាំងពី បណ្ណាល័យ Wire.h ជាមួយមុខងារផ្សេងៗសម្រាប់ការទំនាក់ទំនងសៀរៀល៖
- ចាប់ផ្តើម (): ចាប់ផ្តើមបណ្ណាល័យលួសហើយបញ្ជាក់ថាតើវាជាម្ចាស់ឬទាសករ
- requestFrom (): ប្រើដោយមេដើម្បីស្នើសុំទិន្នន័យពីទាសករ។
- ការបញ្ជូនដំបូង (): ចាប់ផ្តើមបញ្ជូនជាមួយទាសករ។
- ការបញ្ជូនបន្ត (): ការបញ្ជូនចុងក្រោយ។
- សរសេរ ()- សរសេរទិន្នន័យពីទាសករក្នុងការឆ្លើយតបទៅនឹងការស្នើសុំពីមេឬអ្នកអាចតម្រង់ជួរបញ្ជូនមេ។
- មាន ()៖ នឹងត្រឡប់ចំនួនបៃដើម្បីអាន។
- អាន (): អានបៃដែលបញ្ជូនពីទាសករទៅចៅហ្វាយនាយឬច្រាសមកវិញ។
- onReceive (): ហៅថាមុខងារនៅពេលទាសករទទួលការបញ្ជូនពីមេ។
- onRequest (): ហៅមុខងារនៅពេលទាសករស្នើសុំទិន្នន័យពីមេ។
para ព័ត៌មានបន្ថែម អំពីកម្មវិធី Arduino និងមុខងារដែលអ្នកអាចទាញយកបាន ឯកសារបង្រៀនជា PDF.
តើ PCF8574 គឺជាអ្វី?
PCF8574 គឺជាក ធាតុបញ្ចូលនិងលទ្ធផលឌីជីថលរថយន្តក្រុងអាយ។ ស៊ី។ អាយ។ ស៊ី។ វាអាចត្រូវបានផលិតដោយក្រុមហ៊ុនផលិតផ្សេងៗបន្ថែមពីលើវាមាននៅក្នុងអាយស៊ីអេសនិងម៉ូឌុល។ ក្នុងករណីណាក៏ដោយវាពិតជាមានភាពជាក់ស្តែងណាស់ក្នុងការភ្ជាប់វាទៅនឹងក្តារអាឌុយណូរបស់អ្នកហើយមានសមត្ថភាពគ្រប់គ្រងឧបករណ៍ច្រើនជាងឧបករណ៍មេ។
El កុំព្យូទ័រ PCF8574 គឺសាមញ្ញ, ចាប់តាំងពីវារួមបញ្ចូលទាំងការ 8 ស្រល់ ទិសដៅខ្លះ (P0-P7 ដែលបន្ទះឈីបដើម្បីទំនាក់ទំនងត្រូវបានភ្ជាប់) ហើយម្យ៉ាងវិញទៀតអ្នកមានអេសអេសអេសអេសអេសនិងអេសអេសដែលអ្នកត្រូវតែភ្ជាប់ទៅនឹងក្តារអារីដូក៏ដូចជា VCC និង GND ដើម្បីផ្តល់ថាមពលដល់ម៉ូឌុលនេះផងដែរ។ ហើយកុំភ្លេចម្ជុលដែលមានអាស័យដ្ឋានទាំងបីគឺ A0, A1, A2 ដើម្បីជ្រើសរើសឧបករណ៍មួយណាដែលការប្រាស្រ័យទាក់ទងត្រូវបានតម្រង់ទៅ ...
ម្ចាស់។ លក្ខណៈពិសេសផ្សេងទៀត ដែលអ្នកគួរតែដឹងៈ
- ការតភ្ជាប់របស់វាដែលជាការបង្ហូរបើកចំហអាចជា ត្រូវបានប្រើទាំងជាធាតុចូលនិងលទ្ធផល.
- La ចរន្តខ្ពស់បំផុត វាគឺ 25mA នៅពេលវាដើរតួជាទិន្នផល (លិចនៅពេលចរន្តហូរឆ្ពោះទៅរក PCF8574) និង 300 µA (ប្រភពលំហូរបច្ចុប្បន្នពី PCF8574) ។
- La ភាពតានតឹង ការផ្គត់ផ្គង់ថាមពលគឺ ២,៥ និង ៦ ស៊ី។ ការប្រើប្រាស់ដែលទទួលបានគឺទាបណាស់មានតែ ១០ អា។
- លទ្ធផលទាំងអស់ មានឆ្នុកដើម្បីរក្សារដ្ឋដោយមិនចាំបាច់ធ្វើសកម្មភាពខាងក្រៅ។ អ្នកត្រូវតែធ្វើសកម្មភាពនៅពេលអ្នកចង់ផ្លាស់ប្តូររដ្ឋ។
- អ្នកអាចទទួលបាន ៨ ទិសដៅដែលអាចធ្វើបាន, នោះគឺមានឧបករណ៍រហូតដល់ទៅ ៨ សម្រាប់ទំនាក់ទំនងជាមួយឬប្រើម៉ូឌុលចំនួន ៨ ដើម្បីពង្រីកវាដល់ទៅ ៦៤ ឧបករណ៍។ អាសយដ្ឋាន (ម្ជុល A8, A8, A64) នឹងមានៈ
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- ០០០: អាសយដ្ឋាន ០x២០
- សារភាព ការរំខាន (អ៊ិនធី) ដោយខ្សែពិសេសដើម្បីរកទិន្នន័យដោយមិនចាំបាច់ត្រួតពិនិត្យជានិច្ច។
ការរួមបញ្ចូលជាមួយ Arduino
ការតភ្ជាប់ជាមួយ Arduino គឺសាមញ្ញណាស់អ្នកគ្រាន់តែភ្ជាប់ Vcc ជាមួយម្ជុល 5v នៃក្តារ Arduino ហើយ GND ជាមួយ GND របស់ Arduino ។ ម៉្យាងទៀតម្ជុលនៃម៉ូឌុល PCF8574 SDA និង SCL អាចមាន ភ្ជាប់ជាមួយម្ជុល ១៤ (អេ ៥ អេស។ អេស។ អិល) និង ១៥ (អេ ៤ អេឌីអេអេអេ) ។ មានតែវាទេដែលនឹងចាប់ផ្តើមដំណើរការជាក់ស្តែងអ្នកអាចប្រើ Px ដើម្បីភ្ជាប់ឧបករណ៍ដែលអ្នកចង់ទំនាក់ទំនង ...
បន្ទាប់មកវានឹងបាត់ ចាប់ផ្តើមជាមួយគំនូរព្រាងឧទាហរណ៍ នៅ Arduino IDE ។ អ្នកអាចធ្វើវាដោយមិនចាំបាច់ប្រើបណ្ណាល័យបន្ថែមដូចជា ...
#include <Wire.h> const int address = 0x38; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { for (short channel = 0; channel < 8; channel++) { // Escribir dato en cada uno de los 8 canales Wire.beginTransmission(address); Wire.write(~(1 << channel)); Wire.endTransmission(); // Lee dato del canal delay(500); } }
ជាការបញ្ចូល៖
#include <Wire.h> const int address = 0x38; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { short channel = 1; byte value = 0; // Leer el dato del canal Wire.requestFrom(pcfAddress, 1 << channel); if (Wire.available()) { value = Wire.read(); } Wire.endTransmission(); // Mostrar el valor leido por el monitor serie Serial.println(value); }
ឬក៏ ប្រើបណ្ណាល័យដូចជា PCF8574 ដែលអ្នកអាចធ្វើបាន ទាញយកនៅទីនេះ និងប្រើលេខកូដស្រដៀងនឹងនេះពីឧទាហរណ៍ដែលភ្ជាប់ជាមួយបណ្ណាល័យនេះ៖
#include <Wire.h> #include "PCF8574.h" PCF8574 expander; void setup() { Serial.begin(9600); expander.begin(0x20); /* Setup some PCF8574 pins for demo */ expander.pinMode(0, OUTPUT); expander.pinMode(1, OUTPUT); expander.pinMode(2, OUTPUT); expander.pinMode(3, INPUT_PULLUP); /* Blink hardware LED for debug */ digitalWrite(13, HIGH); /* Toggle PCF8574 output 0 for demo */ expander.toggle(); /* Blink hardware LED for debug */ digitalWrite(13, LOW); } void loop() { }