Arduino Shields - បន្ទះពង្រីកសម្រាប់ arduino ។ ការពង្រីកការបញ្ចូលអាណាឡូកនៅក្នុង Arduino Arduino ការពង្រីកច្រកទិន្នផលបញ្ចូល

  • 10.02.2022

អត្ថបទថ្មី។

● ៥.៤. ការពង្រីកច្រកឌីជីថលសម្រាប់ NodeMCU ESP8266 ដោយប្រើបន្ទះឈីប MCP23017

យើងនឹងណែនាំការចង្អុលបង្ហាញ LED និងសំឡេងរោទិ៍នៅពេលប្រើម៉ូឌុល Nodemcu ជាឧបករណ៍បញ្ជាផ្ទះឆ្លាតវៃ។ ចំនួនម្ជុលនៅលើម៉ូឌុល Nodemcu គឺតិចជាងនៅលើ Arduino Mega ដូច្នេះយើងត្រូវការ IC ឧបករណ៍ពង្រីកបញ្ចូល MCP23017 ។ បន្ទះឈីប MCP23017 បន្ថែមច្រកចំនួន 16 ដែលអាចកំណត់រចនាសម្ព័ន្ធសម្រាប់ទាំងការបញ្ចូល និងទិន្នផល (រូបភាព 5.7) ។ បន្ទះឈីបនេះប្រើឡានក្រុង I2C ពីរខ្សែដ៏ពេញនិយម។

អង្ករ។ ៥.៧. MCP23017 pinouts

អាសយដ្ឋាននៃបន្ទះឈីប MCP23017 សម្រាប់ពិធីការ I2C អាចត្រូវបានកំណត់ដោយការរួមបញ្ចូលគ្នានៃសញ្ញានៅឧបករណ៍បញ្ចូលឌីជីថល A0 - A2 (រូបភាព 5.8) ដែលអនុញ្ញាតឱ្យអ្នកភ្ជាប់បន្ទះឈីប 8 MCP23017 ទៅមីក្រូកុងទ័រក្នុងពេលតែមួយ រៀងគ្នា 16* 8 = 128 ម្ជុល។

អង្ករ។ ៥.៨. ការកំណត់អាសយដ្ឋានរបស់បន្ទះឈីប MCP23017

បន្ទះឈីបមានច្រកចំនួន 2 នៃច្រក A (GPA0-GPA7) និង B (GPB0-GPAB) ដែលនីមួយៗអាចត្រូវបានកំណត់រចនាសម្ព័ន្ធសម្រាប់ការបញ្ចូល ឬទិន្នផល។
ការចុះបញ្ជី 5.3 ។ បង្ហាញឧទាហរណ៍នៃការបង្កើតធនាគារទិន្នផល A និង B ។

ការចុះបញ្ជី 5.3

// ភ្ជាប់បណ្ណាល័យ Wire.h #រួមបញ្ចូល ការបញ្ចូលបៃ = 0; ការ​កំណត់​ទុក​ជា​មោឃៈ ()( Serial.begin(9600 ); Wire.begin(0 ,2 ); // start I2C Wire.beginTransmission(0x20 ); // i2c - អាសយដ្ឋាន (A0-0, A1-0, A2-0) Wire.write(0x00); // IODIRA ចុះឈ្មោះ Wire.write(0x00 ); // កំណត់ PORT A ជាទិន្នផល Wire.endTransmission(); ) ចន្លោះប្រហោង (){ // អានទិន្នន័យពី PORT B Wire.beginTransmission(0x20 ); Wire.write(0x13 ); Wire.endTransmission(); Wire.requestFrom(0x20 , 1 ); input=Wire.read(); // សរសេរទិន្នន័យដែលទទួលបានទៅ PORT A Wire.beginTransmission(0x20 ); Wire.write(0x12 ); // អាសយដ្ឋាន PORT A Wire.write(បញ្ចូល); // PORT A Wire.endTransmission(); ការពន្យាពេល (100); // ផ្អាក)

ការប្រើប្រាស់បន្ទះឈីប MCP23017 នឹងពង្រីកចំនួនទំនាក់ទំនងឌីជីថលនៃម៉ូឌុល Nodemcu ដោយ 16 ហើយនឹងអនុញ្ញាតឱ្យរៀបចំការចង្អុលបង្ហាញ LED និងសញ្ញាដែលអាចស្តាប់បាននៃប៉ារ៉ាម៉ែត្រឧបករណ៍ចាប់សញ្ញាសំខាន់ៗ។

មនុស្សគ្រប់គ្នាចូលចិត្តបន្ទះ Arduino ដែលមិនមានតម្លៃថោក ប៉ុន្តែជាញឹកញាប់គម្រោងមួយបាត់ច្រកឥតគិតថ្លៃមួយ ឬពីរយ៉ាងពិតប្រាកដ! ហើយពេលខ្លះមានច្រកគ្រប់គ្រាន់ ប៉ុន្តែអ្នកមិនចង់ទាញបណ្តុំខ្សែទៅផ្នែកផ្សេងទៀតនៃរចនាសម្ព័ន្ធនោះទេ។ ឧបមាថាអ្នកត្រូវដាក់ប៊ូតុង និង LEDs ជាច្រើននៅលើបន្ទះខាងមុខរបស់ឧបករណ៍។ វាកាន់តែអាចទុកចិត្តបាន និងងាយស្រួលក្នុងការភ្ជាប់ពួកវាទៅបន្ទះមេដោយគ្រាន់តែខ្សែទិន្នន័យពីរប៉ុណ្ណោះ ហើយមិនមែនជាមួយខ្សែ ឬខ្សែទេ មែនទេ?

សម្រាប់ស្ថានភាពបែបនេះ ឧបករណ៍ពង្រីកផ្សេងៗ (ឧបករណ៍ពង្រីក) នៃច្រក Arduino ត្រូវបានរចនាឡើង។

ជាធម្មតា ម្ជុល microcontroller អនុវត្តមុខងារផ្សេងគ្នាជាច្រើន ដូច្នេះឧបករណ៍ពង្រីកគឺខុសគ្នា៖

  1. ឧបករណ៍ពង្រីកច្រក GPIO ស្តង់ដារ
  2. ឧបករណ៍ពង្រីកទិន្នផល PWM
  3. ឧបករណ៍ពង្រីកការបញ្ចូលអាណាឡូក - ពហុគុណ និង ADCs ខាងក្រៅ

ដោយឡែកវាមានតម្លៃនិយាយអំពីឧបករណ៍បំប្លែងឌីជីថលទៅអាណាឡូក (DAC) និងអ្នកពង្រីកទំហំអាសយដ្ឋានឡានក្រុង I2C ។ ឧបករណ៍ទាំងនេះមិនចម្លងមុខងាររបស់ច្រកដោយផ្ទាល់ទេ ប៉ុន្តែពង្រីកសមត្ថភាពរបស់ microcontrollers ។

នៅក្នុងអត្ថបទដំបូងនៃស៊េរី យើងនឹងនិយាយអំពីឧបករណ៍ពង្រីកដ៏សាមញ្ញបំផុត និងមានប្រយោជន៍បំផុតដែលធ្វើការជាច្រក I/O ឌីជីថល។ ទាំងនេះគឺជា microcircuits និង។ ពួកវាត្រូវបានរៀបចំ និងដំណើរការដូចគ្នាបេះបិទ ហើយខុសគ្នាតែក្នុងចំនួនច្រកប៉ុណ្ណោះ។

ការជ្រើសរើសម៉ូឌុលពង្រីកសម្រាប់ Arduino

ម៉ូឌុលដែលពេញនិយមបំផុត និងមានតម្លៃថោកបំផុតត្រូវបានផលិតនៅលើបន្ទះឈីប PCF8574 (រូបភាពទី 1)

អង្ករ។ 1. ម៉ូឌុលពង្រីកច្រកដ៏ពេញនិយម PCF8574

គុណសម្បត្តិ៖
  • តម្លៃថោក។
  • ម៉ូឌុលអាចត្រូវបានភ្ជាប់ជាខ្សែសង្វាក់ដោយគ្រាន់តែបញ្ចូលឌុយនៃម៉ូឌុលមួយទៅក្នុងរន្ធនៃស៊េរីមុន។ កុំភ្លេចកំណត់ jumpers ទៅអាសយដ្ឋានម៉ូឌុលផ្សេងគ្នា!
គុណវិបត្តិ៖
  • មិន​អាច​ត្រូវ​បាន​បញ្ចូល​ដោយ​ផ្ទាល់​ទៅ​ក្នុង breadboard មួយ (ខ្ញុំ​សូម​ណែនាំ​ឱ្យ​លក់​ឧបករណ៍​ភ្ជាប់​ច្រក​ទៅ​ផ្នែក​ខាង​ក្រោយ​) ។
  • ច្រកសរុបចំនួនប្រាំបីនៅក្នុងម៉ូឌុលមួយ។

ប្រសិនបើអ្នកស្ថិតក្នុងអារម្មណ៍សម្រាប់គម្រោងធ្ងន់ធ្ងរជាងនេះ បញ្ជាម៉ូឌុល 16 ប៊ីតសម្រាប់ PCF8575 នៅលើ Aliexpress ។ ខ្ញុំសូមផ្តល់អនុសាសន៍យ៉ាងមុតមាំនូវម៉ូឌុលដែលបានបង្ហាញនៅក្នុងរូបភព។ ២.

អង្ករ។ 2. ម៉ូឌុលពង្រីកច្រក PCF8575

គុណសម្បត្តិ៖
  • ច្រកច្រើនពីរដង។
  • ការផ្គត់ផ្គង់ថាមពល 3.3V ដែលភ្ជាប់មកជាមួយ អ្នកអាចផ្តល់ថាមពលដល់ម៉ូឌុលផ្សេងទៀត។
  • ការផ្គូផ្គងកម្រិតតក្កវិជ្ជាដែលភ្ជាប់មកជាមួយសម្រាប់ឡានក្រុង I2C នៅវ៉ុលផ្គត់ផ្គង់ផ្សេងៗគ្នា។
  • ទម្រង់ងាយស្រួលសម្រាប់ក្តារបន្ទះ។
គុណវិបត្តិ៖
  • តម្លៃខាងលើ។

របៀបដែលឧបករណ៍ពង្រីកច្រក PCF8574/PCF8575 GPIO ដំណើរការ

ការផ្លាស់ប្តូរទិន្នន័យកើតឡើងតាមរយៈឡានក្រុង I2C ។ មានតែខ្សែចំនួន 4 ប៉ុណ្ណោះដែលត្រូវបានទាមទារដើម្បីភ្ជាប់ទៅបន្ទះ Arduino រួមទាំងថាមពល។ អាសយដ្ឋានពង្រីកត្រូវបានកំណត់ដោយ jumpers បីនៅលើធាតុបញ្ចូល A0…A2 ដូច្នេះបន្ទះសៀគ្វីដូចគ្នាចំនួនប្រាំបីអាចត្រូវបានភ្ជាប់ទៅឡានក្រុងក្នុងពេលតែមួយ ហើយទទួលបានអតិបរមា 8*8=64 ច្រកបន្ថែមជាមួយ PCF8574 ឬ 8*16=128 ជាមួយ PCF8575 បន្ទះសៀគ្វី។

ដើម្បីបញ្ចេញទិន្នន័យទៅកាន់ច្រក សូមសរសេរបៃទិន្នន័យទៅអាសយដ្ឋាននៃម៉ូឌុលនៅលើឡានក្រុង I2C ។ ដើម្បីអានទិន្នន័យពីច្រក អានបៃនៅអាសយដ្ឋានដូចគ្នា។ បៃតែងតែត្រូវបានសរសេរ និងអានទាំងមូល ការងារជាមួយខ្ទង់នីមួយៗត្រូវបានធ្វើតាមកម្មវិធី។

លទ្ធផលនៃ microcircuit គឺជាការបញ្ចូលក្នុងពេលដំណាលគ្នា ហើយមិនមានការចុះឈ្មោះសេវាដែលកំណត់គោលបំណងនៃទិន្នផលនោះទេ។ មាន​តែ​បន្ទះ​ដែល​បៃ​ទិន្នផល​ត្រូវ​បាន​សរសេរ។តើនេះអាចទៅរួចដោយរបៀបណា?

ច្រកដំណើរការក្នុងលក្ខណៈបើកចំហរ ហើយមានប្រដាប់ទប់ទាញខាងក្នុង។ ប្រសិនបើសូន្យឡូជីខលត្រូវបានសរសេរទៅទិន្នផល នោះត្រង់ស៊ីស្ទ័រទិន្នផលនឹងបើក ដែលបង្ខំឱ្យទាញលទ្ធផល "ទៅដី" ។ ការអានពីច្រកបែបនេះនឹងត្រឡប់សូន្យជានិច្ច។

សូមប្រុងប្រយ័ត្ននៅពេលអនុវត្តវ៉ុលផ្គត់ផ្គង់ដោយផ្ទាល់ទៅម្ជុលដែលមានកម្រិតទាប ឬប្រសិនបើចរន្តលើស 50 mAអ្នកនឹងបំផ្លាញបន្ទះឈីប!

ដើម្បីប្រើច្រកជាការបញ្ចូល សូមសរសេរច្រកមួយទៅវា។ ក្នុងករណីនេះ ត្រង់ស៊ីស្ទ័រខាងក្នុងនឹងត្រូវបានបិទ ហើយលទ្ធផលនៃការអាននឹងត្រូវបានកំណត់ដោយកម្រិតតក្កវិជ្ជាខាងក្រៅដែលបានអនុវត្តទៅម្ជុល។ ទិន្នផលឥតគិតថ្លៃត្រូវបានទាញឡើងដើម្បីថាមពលដោយ resistor ភ្ជាប់មកជាមួយ។

ដើម្បីប្រើច្រកមួយចំនួនជាច្រកចូល និងខ្លះជាលទ្ធផលក្នុងពេលដំណាលគ្នា មុនពេលដែលបៃទិន្នន័យនីមួយៗត្រូវបានសរសេរទៅឧបករណ៍ពង្រីក វាចាំបាច់ត្រូវអនុវត្តរបាំងនៃឯកតាទៅនឹងប៊ីតទាំងនោះដែលត្រូវនឹងធាតុបញ្ចូលដោយប្រើប្រតិបត្តិការ "ឡូជីខល OR" ។ . អស់ហើយ)))

រំខានដល់ជំនាន់

PCF857* Port Expanders បង្កើត Interrupt Pulse កំរិត​ទាបនៅទិន្នផល INT ជាមួយនឹងការផ្លាស់ប្តូរណាមួយនៃសញ្ញាបញ្ចូលនៅការបញ្ចូលណាមួយនៃ microcircuit ។ វាងាយស្រួលប្រសិនបើឧបករណ៍ពង្រីកបម្រើបន្ទះចុច។ ប៉ុន្តែអ្នកត្រូវតែកំណត់នៅក្នុងឧបករណ៍ដោះស្រាយការរំខានថាតើប៊ូតុងមួយណាត្រូវបានចុច ឬបញ្ចេញ។ ម៉ាស៊ីនភ្លើងរំខានត្រូវបានបំពាក់ដោយតម្រងទប់ស្កាត់ការជជែក។

ឧទាហរណ៍ទី 1៖ ការប្រើប្រាស់ម៉ូឌុល PCF8574

ចូរយើងប្រមូលផ្តុំសៀគ្វីសាមញ្ញនៃ LED ចំនួនបួន ម៉ូឌុល PCF8574 និងបន្ទះ Arduino (រូបភាព 3 និង 4) ។ ជាមួយនឹងគ្រោងការណ៍នៃការផ្លាស់ប្តូរនេះ យើងមិនត្រូវការ quenching resistors សម្រាប់ LEDs ទេ។ ចរន្តហូរតាមរយៈ LED និងឧបករណ៍ទប់ទល់ដែលភ្ជាប់ជាមួយផ្លូវដែក។

អង្ករ។ 3. ដ្យាក្រាមខ្សែនៃម៉ូឌុល PCF8574

អង្ករ។ 4. ប្លង់សៀគ្វីជាមួយម៉ូឌុល PCF8574

ចម្លង និងបិទភ្ជាប់គំនូរព្រាង 1 ទៅក្នុងបន្ទះ Arduino៖

// អាសយដ្ឋានម៉ូឌុលនៅលើឡានក្រុង (A0, A1, A2 = 0) អាសយដ្ឋាន int = 0x38; // ទិន្នន័យអានពីម៉ូឌុល uint8_t dataReceive; // ទិន្នន័យដែលត្រូវសរសេរទៅម៉ូឌុល uint8_t dataSend; void setup() ( Wire.begin(); Serial.begin(9600); // ខ្ពស់ទៅគ្រប់ច្រក PCF8574 dataSend = B11111111; pcf8574_write(dataSend); ) void loop() ( // អានបៃពី module dataReceive = pcf8574_read (); // លទ្ធផលទៅកាន់ម៉ូនីទ័រក្នុងទម្រង់គោលពីរ Serial.println(dataReceive, BIN); // ប្តូរប៊ីតដែលបន្សល់ទុកដោយទិន្នន័យ nibble ផ្ញើ = dataReceive<< 4; // Накладываем битовую маску dataSend |= B00001111; // Записываем байт в модуль pcf8574_write(dataSend); delay(500); } // Процедура записи байта в модуль void pcf8574_write(uint8_t dt) { Wire.beginTransmission(address); Wire.write(dt); Wire.endTransmission(); } // Процедура чтения байта из модуля int8_t pcf8574_read() { Wire.beginTransmission(address); Wire.endTransmission(); Wire.requestFrom(address, 1); return (Wire.read()); }

កម្រិតខ្ពស់មួយត្រូវបានសរសេរដំបូងទៅច្រកទាំងអស់នៃ microcircuit ដូច្នេះច្រក P0 ... P3 អាចដំណើរការជាធាតុបញ្ចូល។

កម្រិតនៅលើម្ជុលច្រកត្រូវបានអានរៀងរាល់ 500 ms ហើយលទ្ធផលអានត្រូវបានបង្ហាញនៅលើម៉ូនីទ័រ។ ប្រសិនបើអ្នកភ្ជាប់ធាតុបញ្ចូល P0…P3 មួយទៅខ្សែធម្មតា សូន្យនឹងលេចឡើងនៅក្នុងប៊ីតរបស់វា។ បន្ទាប់មកតម្លៃអានត្រូវបានប្តូរទៅខាងឆ្វេងដោយបួនប៊ីតលទ្ធផលគឺទិន្នផលទៅច្រកហើយ LEDs មួយនឹងរលត់។ ឧទាហរណ៍ ប្រសិនបើសូន្យត្រូវបានអាននៅ pin P0 នោះ LED ដែលភ្ជាប់ទៅ pin P4 នឹងបិទ។

ចំណាំថាមុននឹងសរសេរទៅកម្មវិធីពង្រីកនីមួយៗ យើងត្រូវអនុវត្ត bitmask នៃមួយទៅ bits ទាំងអស់ដែលគួរតែជា inputs: dataSend |= B00001111;

ទម្រង់ការរងសម្រាប់ធ្វើការជាមួយឡានក្រុង I2C គឺសាមញ្ញបំផុត គ្មានកំហុសត្រូវបានដំណើរការទេ។

ដំបូន្មាន៖ដើម្បីស្វែងរក និងពិនិត្យមើលអាសយដ្ឋានម៉ូឌុលនៅលើឡានក្រុង I2C អ្នកអាចប្រើ . វាបញ្ចេញទៅស្ថានីយអាសយដ្ឋាននៃឧបករណ៍ទាំងអស់ដែលឆ្លើយតបទៅនឹងសំណើររថយន្តក្រុង។

ឧទាហរណ៍ទី 2៖ ការប្រើប្រាស់ម៉ូឌុល PCF8575

ភាពប្លែកនៃម៉ូឌុល PCF8575 គឺថាវាមានច្រកចំនួន 16 ដូច្នេះ តែងតែសរសេរពីរបៃ និងអានពីរបៃ. ច្បាប់នេះត្រូវតែត្រូវបានគេសង្កេតឃើញទោះបីជាមិនត្រូវការបៃទីពីរក៏ដោយ។

តោះផ្លាស់ប្តូរគ្រោងការណ៍បន្តិច។ យើងនឹងភ្ជាប់ LEDs ទៅច្រក P10 ... P13 ហើយយើងនឹងភ្ជាប់ច្រក P00 ... P03 ជាមួយនឹង jumper ទៅនឹងខ្សែធម្មតា (រូបភាព 5 និង 6) ។

អង្ករ។ 5. ដ្យាក្រាមខ្សែនៃម៉ូឌុល PCF8575

អង្ករ។ 6. ប្លង់សៀគ្វីជាមួយម៉ូឌុល PCF8575

Sketch 2 ដំបូងសរសេរមួយទៅច្រកទាំងអស់ បន្ទាប់មកអានស្ថានភាពរបស់ពួកគេរៀងរាល់ 500 ms ។ ដំណើរការអានត្រឡប់ពាក្យ 16 ប៊ីតដែលបែងចែកជាបៃ។ មាតិកានៃបៃទាប (ម្ជុល P00…P07) ត្រូវបានចម្លងទៅបៃខ្ពស់ ហើយបានផ្ទុកឡើងត្រឡប់ទៅម៉ូឌុលវិញ។ ប្រសិនបើលទ្ធផលមួយក្នុងចំណោមលទ្ធផល P00…P03 ត្រូវបានភ្ជាប់ទៅខ្សែធម្មតា នោះ LEDs មួយក្នុងចំណោម LEDs ដែលភ្ជាប់ទៅ P10…P13 នឹងរលត់ទៅវិញ។

// បណ្ណាល័យសម្រាប់ធ្វើការជាមួយ I2C #include // អាសយដ្ឋានម៉ូឌុលនៅលើឡានក្រុងតាមលំនាំដើម int address = 0x20; // ទិន្នន័យអានពីម៉ូឌុល uint8_t hi, lo; ទទួលទិន្នន័យ uint16_t; uint8_tdataHighByte; // បៃខ្ពស់ (P10...P17) uint8_t dataLowByte; // បៃទាប (P00...P07) ការដំឡើងចាត់ទុកជាមោឃៈ () ( Wire.begin(); Serial.begin(9600); // កម្រិតខ្ពស់ចំពោះទិន្នន័យច្រក PCF8575 ទាំងអស់HighByte = B11111111; dataLowByte = B11111111; pcf8575_write, (ទិន្នន័យ ); ) void loop() ( // អានបៃពីម៉ូឌុល dataReceive = pcf8575_read(); // បោះពុម្ពទៅម៉ូនីទ័រក្នុងទម្រង់គោលពីរ Serial.println(dataReceive, BIN); // ទាញយកបៃទាបពីពាក្យវែង dataLowByte = lowByte(dataReceive); // ចម្លងបៃបៃទាបទៅទិន្នន័យបៃខ្ពស់HighByte = dataLowByte; // បិទបាំងទិន្នន័យបៃបៃទាបLowByte |= B11111111; // សរសេរទិន្នន័យថ្មីទៅម៉ូឌុល ពីរបៃ pcf8575_write(dataLowByte, data);High delay(500); ) // នីតិវិធីសម្រាប់ការសរសេរបៃទៅម៉ូឌុលចាត់ទុកជាមោឃៈ pcf8575_write(uint8_t dtl, int8_t dth) ( Wire.beginTransmission(អាសយដ្ឋាន); Wire.write(dtl); // សរសេរបៃទាប (P00... P07) Wire.write(dth); // សរសេរបៃខ្ពស់ (P10...P17) Wire.endTransmission(); ) // នីតិវិធីសម្រាប់ការអានបៃពីម៉ូឌុល int16_t pcf8575_read( ) ( Wire.beginTransmission(អាសយដ្ឋាន); Wire.endTransmission(); Wire.requestFrom(អាសយដ្ឋាន, ២); lo = Wire.read(); // អានបៃទាប (P00...P07) hi = Wire.read(); // Read high byte (P10...P17) return (word(hi, lo)); // ត្រឡប់ពាក្យវែង)

បណ្ណាល័យ Arduino សម្រាប់ PCF8574/PCF8575

បណ្ណាល័យអាចទាញយកបានពី GitHub ។ ប៉ុន្តែដូចដែលអ្នកបានឃើញ ការធ្វើការជាមួយឧបករណ៍ពង្រីកច្រកគឺសាមញ្ញណាស់ ហើយអ្នកអាចធ្វើបានយ៉ាងងាយស្រួលដោយគ្មានបណ្ណាល័យពិសេស។

អត្ថប្រយោជន៍សំខាន់មួយនៃវេទិកា Arduino គឺភាពពេញនិយមរបស់វា។ វេទិកាដ៏ពេញនិយមត្រូវបានគាំទ្រយ៉ាងសកម្មដោយក្រុមហ៊ុនផលិតឧបករណ៍អេឡិចត្រូនិកដោយបញ្ចេញកំណែពិសេសនៃបន្ទះផ្សេងៗដែលពង្រីកមុខងារជាមូលដ្ឋានរបស់ឧបករណ៍បញ្ជា។ ក្តារបែបនេះដែលត្រូវបានគេហៅថាជាបន្ទះពង្រីក (ឈ្មោះផ្សេងទៀត៖ arduino Shield, Shield) បម្រើដើម្បីអនុវត្តការងារជាច្រើនប្រភេទ និងអាចជួយសម្រួលដល់ជីវិតរបស់ arduinian បាន។ នៅក្នុងអត្ថបទនេះ យើងនឹងសិក្សាពីអ្វីដែលជាបន្ទះពង្រីក Arduino និងរបៀបដែលវាអាចត្រូវបានប្រើដើម្បីធ្វើការជាមួយឧបករណ៍ Arduino ជាច្រើនប្រភេទ៖ ម៉ូទ័រ (ខែលកម្មវិធីបញ្ជាម៉ូទ័រ) អេក្រង់ LCD (ខែល LCD) កាត SD (ឧបករណ៍កត់ត្រាទិន្នន័យ) ឧបករណ៍ចាប់សញ្ញា។ (Sensor Shield) និងឧបករណ៍ជាច្រើនទៀត។

ចូរយើងយល់ពីលក្ខខណ្ឌជាមុនសិន។ បន្ទះពង្រីក Arduino គឺជាឧបករណ៍ពេញលេញដែលត្រូវបានរចនាឡើងដើម្បីអនុវត្តមុខងារជាក់លាក់ និងត្រូវបានភ្ជាប់ទៅឧបករណ៍បញ្ជាមេដោយប្រើឧបករណ៍ភ្ជាប់ស្តង់ដារ។ ឈ្មោះដ៏ពេញនិយមមួយផ្សេងទៀតសម្រាប់បន្ទះពង្រីកគឺជាខែលភាសាអង់គ្លេស Arduino ឬជាខែល។ សមាសធាតុអេឡិចត្រូនិចចាំបាច់ទាំងអស់ត្រូវបានដំឡើងនៅលើបន្ទះពង្រីក ហើយអន្តរកម្មជាមួយ microcontroller និងធាតុផ្សេងទៀតនៃ main board កើតឡើងតាមរយៈម្ជុល arduino ស្តង់ដារ។ ភាគច្រើនជាញឹកញាប់ ប្រឡោះក៏ត្រូវបានផ្តល់ថាមពលពីបន្ទះ arduino មេផងដែរ ទោះបីជាក្នុងករណីជាច្រើនវាអាចផ្តល់ថាមពលពីប្រភពផ្សេងទៀតក៏ដោយ។ នៅក្នុងខែលណាមួយ មានម្ជុលឥតគិតថ្លៃមួយចំនួនដែលអ្នកអាចប្រើតាមការសំរេចចិត្តរបស់អ្នកដោយភ្ជាប់សមាសធាតុផ្សេងទៀតទៅនឹងពួកវា។

ពាក្យ​ជា​ភាសា​អង់គ្លេស Shield ត្រូវ​បាន​បក​ប្រែ​ថា Shield, screen, screen។ នៅក្នុងបរិបទរបស់យើង វាគួរតែត្រូវបានយល់ថាជាអ្វីមួយដែលគ្របដណ្ដប់លើបន្ទះឧបករណ៍បញ្ជា ដែលបង្កើតស្រទាប់បន្ថែមនៃឧបករណ៍ អេក្រង់ដែលនៅពីក្រោយធាតុផ្សេងៗត្រូវបានលាក់។

ហេតុអ្វីបានជាត្រូវការខែល arduino?

អ្វីគ្រប់យ៉ាងគឺសាមញ្ញណាស់: 1) ដូច្នេះយើងសន្សំសំចៃពេលវេលានិង 2) នរណាម្នាក់អាចរកលុយបាន។ ហេតុអ្វីបានជាខ្ជះខ្ជាយពេលវេលាក្នុងការរចនា ការដាក់ ការបិទភ្ជាប់ និងការបំបាត់កំហុសអ្វីមួយដែលអ្នកអាចយកបានហើយចាប់ផ្តើមប្រើប្រាស់ភ្លាមៗ? វាត្រូវបានរចនា និងផ្គុំឡើងយ៉ាងល្អនៅលើផ្នែករឹងដែលមានគុណភាពខ្ពស់ បន្ទះពង្រីកជាធម្មតាអាចទុកចិត្តបានជាង និងប្រើប្រាស់ទំហំតិចនៅក្នុងឧបករណ៍ចុងក្រោយ។ នេះមិនមានន័យថាអ្នកត្រូវបោះបង់ចោលទាំងស្រុងនូវការជួបប្រជុំគ្នាដោយខ្លួនឯង ហើយមិនចាំបាច់យល់ពីគោលការណ៍នៃប្រតិបត្តិការនៃធាតុមួយចំនួននោះទេ។ យ៉ាងណាមិញ វិស្វករពិតប្រាកដម្នាក់តែងតែព្យាយាមយល់ពីរបៀបដែលគាត់ប្រើប្រាស់ដំណើរការ។ ប៉ុន្តែយើងនឹងអាចបង្កើតឧបករណ៍ស្មុគ្រស្មាញបន្ថែមទៀត ប្រសិនបើយើងមិនកែច្នៃកង់ឡើងវិញរាល់ពេល ប៉ុន្តែផ្តោតការយកចិត្តទុកដាក់របស់យើងទៅលើអ្វីដែលមនុស្សតិចតួចបានដោះស្រាយមុនយើង។

តាមធម្មជាតិ អ្នកត្រូវតែចំណាយសម្រាប់ឱកាស។ ស្ទើរតែជានិច្ចកាល តម្លៃនៃខែលចុងក្រោយនឹងខ្ពស់ជាងតម្លៃនៃសមាសធាតុនីមួយៗ អ្នកតែងតែអាចធ្វើឱ្យជម្រើសស្រដៀងគ្នាមានតម្លៃថោកជាង។ ប៉ុន្តែនៅទីនេះ វាអាស្រ័យលើអ្នកក្នុងការសម្រេចចិត្តថាតើពេលវេលា ឬលុយដែលចំណាយសម្រាប់អ្នកមានសារៈសំខាន់ប៉ុណ្ណា។ ដោយគិតពីជំនួយដែលអាចធ្វើបានទាំងអស់ពីឧស្សាហកម្មចិន ការចំណាយលើក្តារមានការថយចុះឥតឈប់ឈរ ដូច្នេះជម្រើសភាគច្រើនត្រូវបានធ្វើឡើងដើម្បីពេញចិត្តនឹងការប្រើប្រាស់ឧបករណ៍ដែលត្រៀមរួចជាស្រេច។

ឧទាហរណ៍ដ៏ពេញនិយមបំផុតនៃខែលគឺជាបន្ទះពង្រីកសម្រាប់ធ្វើការជាមួយឧបករណ៍ចាប់សញ្ញា ម៉ូទ័រ អេក្រង់ LCD កាត SD បណ្តាញ និងប្រព័ន្ធ GPS ប្រឡោះខែលជាមួយនឹងឧបករណ៍បញ្ជូនតដែលភ្ជាប់មកជាមួយសម្រាប់ភ្ជាប់ទៅបន្ទុក។

ការភ្ជាប់ Arduino Shields

ដើម្បីភ្ជាប់ប្រឡោះអ្នកគ្រាន់តែត្រូវ "ដាក់វា" ដោយប្រុងប្រយ័ត្ននៅលើបន្ទះមេ។ ជាធម្មតា ម្ជុលនៃប្រឡោះប្រភេទសិតសក់ (ប្រុស) ត្រូវបានបញ្ចូលយ៉ាងងាយស្រួលទៅក្នុងឧបករណ៍ភ្ជាប់ Arduino board។ ក្នុងករណីខ្លះ វាត្រូវបានតម្រូវឱ្យកែប្រែម្ជុលដោយប្រុងប្រយ័ត្ន ប្រសិនបើបន្ទះខ្លួនឯងមិនត្រូវបានលក់យ៉ាងស្អាត។ រឿងសំខាន់នៅទីនេះគឺត្រូវធ្វើសកម្មភាពដោយប្រុងប្រយ័ត្ននិងមិនប្រើកម្លាំងហួសប្រមាណ។

តាមក្បួនមួយខែលត្រូវបានរចនាឡើងសម្រាប់កំណែជាក់លាក់នៃឧបករណ៍បញ្ជា ទោះបីជាឧទាហរណ៍ ខែល Arduino Uno ជាច្រើនដំណើរការបានយ៉ាងល្អជាមួយបន្ទះ Arduino Mega ក៏ដោយ។ pinout នៅលើ mega ត្រូវបានធ្វើឡើងតាមរបៀបដែលទំនាក់ទំនងឌីជីថល 14 ដំបូងនិងទំនាក់ទំនងនៅជ្រុងម្ខាងនៃក្តារស្របគ្នាជាមួយនឹងទីតាំងនៃទំនាក់ទំនងនៅលើ UNO ដូច្នេះខែលពី arduino ក្លាយជាវាបានយ៉ាងងាយស្រួល។

កម្មវិធី Arduino Shield

ការសរសេរកម្មវិធីសៀគ្វីជាមួយបន្ទះពង្រីកគឺមិនខុសពីការសរសេរកម្មវិធីធម្មតារបស់ arduino ទេ ពីព្រោះតាមទស្សនៈរបស់ឧបករណ៍បញ្ជា យើងគ្រាន់តែភ្ជាប់ឧបករណ៍របស់យើងទៅនឹងម្ជុលធម្មតារបស់វា។ នៅក្នុងគំនូរព្រាង អ្នកត្រូវបញ្ជាក់ម្ជុលទាំងនោះដែលត្រូវបានភ្ជាប់នៅក្នុងខែលទៅនឹងម្ជុលដែលត្រូវគ្នានៅលើក្តារ។ តាមក្បួនមួយក្រុមហ៊ុនផលិតបង្ហាញពីការឆ្លើយឆ្លងនៃម្ជុលនៅលើប្រឡោះដោយខ្លួនឯងឬនៅក្នុងសៀវភៅណែនាំការតភ្ជាប់ដាច់ដោយឡែក។ ប្រសិនបើអ្នកទាញយកគំនូរព្រាងដែលបានណែនាំដោយក្រុមហ៊ុនផលិតបន្ទះ អ្នកក៏មិនចាំបាច់ធ្វើវាដែរ។

ការអាន ឬការសរសេរសញ្ញាការពារក៏ត្រូវបានធ្វើតាមរបៀបធម្មតាផងដែរ៖ ការប្រើប្រាស់មុខងារ និងពាក្យបញ្ជាផ្សេងទៀតដែលធ្លាប់ស្គាល់ចំពោះ arduinist ណាមួយ។ ក្នុងករណីខ្លះ ការប៉ះទង្គិចគ្នាអាចធ្វើទៅបាន នៅពេលដែលអ្នកធ្លាប់ប្រើគ្រោងការណ៍ការតភ្ជាប់នេះ ហើយអ្នកផលិតបានជ្រើសរើសមួយផ្សេងទៀត (ឧទាហរណ៍ អ្នកទាញប៊ូតុងទៅដី និងនៅលើខែល - ដើម្បីថាមពល)។ នៅទីនេះអ្នកគ្រាន់តែត្រូវប្រុងប្រយ័ត្ន។

តាមក្បួនមួយ បន្ទះពង្រីកនេះមាននៅក្នុងឧបករណ៍ arduino ហើយដូច្នេះវានៅជាមួយវាដែលមនុស្ស arduino ជួបញឹកញាប់បំផុត។ ខែលគឺសាមញ្ញណាស់ - ភារកិច្ចចម្បងរបស់វាគឺដើម្បីផ្តល់នូវជម្រើសងាយស្រួលបន្ថែមទៀតសម្រាប់ការភ្ជាប់ទៅបន្ទះ Arduino ។ នេះត្រូវបានធ្វើតាមរយៈឧបករណ៍ភ្ជាប់ថាមពល និងដីបន្ថែម នាំយកទៅក្តារបន្ទះទៅម្ជុលអាណាឡូក និងឌីជីថលនីមួយៗ។ ដូចគ្នានេះផងដែរនៅលើក្តារអ្នកអាចរកឃើញឧបករណ៍ភ្ជាប់សម្រាប់ភ្ជាប់ប្រភពថាមពលខាងក្រៅ (អ្នកត្រូវដំឡើង jumpers ដើម្បីប្តូរ) LED និងប៊ូតុងចាប់ផ្តើមឡើងវិញ។ ជម្រើសនៃខែល និងឧទាហរណ៍នៃការប្រើប្រាស់អាចត្រូវបានរកឃើញនៅក្នុងរូបភាព។




មានកំណែជាច្រើននៃបន្ទះពង្រីកឧបករណ៍ចាប់សញ្ញា។ ពួកវាទាំងអស់ខុសគ្នានៅក្នុងចំនួននិងប្រភេទនៃឧបករណ៍ភ្ជាប់។ កំណែពេញនិយមបំផុតនាពេលបច្ចុប្បន្ននេះគឺ Sensor Shield v4 និង v5 ។

របាំង arduino នេះមានសារៈសំខាន់ខ្លាំងណាស់នៅក្នុងគម្រោងមនុស្សយន្ត។ អនុញ្ញាតឱ្យអ្នកភ្ជាប់ម៉ូទ័រធម្មតា និង servo ទៅនឹងបន្ទះ Arduino ក្នុងពេលតែមួយ។ ភារកិច្ចចម្បងនៃខែលគឺដើម្បីផ្តល់ការគ្រប់គ្រងឧបករណ៍ដែលប្រើប្រាស់ចរន្តដែលមានកម្រិតខ្ពស់គ្រប់គ្រាន់សម្រាប់បន្ទះ arduino ធម្មតា។ លក្ខណៈពិសេសបន្ថែមនៃបន្ទះគឺជាមុខងារនៃការគ្រប់គ្រងថាមពលម៉ូទ័រ (ដោយប្រើ PWM) និងការផ្លាស់ប្តូរទិសដៅនៃការបង្វិល។ មានបន្ទះការពារម៉ូទ័រជាច្រើនប្រភេទ។ ជាទូទៅសម្រាប់ពួកគេទាំងអស់គឺវត្តមាននៅក្នុងសៀគ្វីនៃត្រង់ស៊ីស្ទ័រដ៏មានអានុភាពដែលតាមរយៈបន្ទុកខាងក្រៅត្រូវបានភ្ជាប់ ធាតុឧបករណ៍ផ្ទុកកំដៅ (ជាធម្មតាវិទ្យុសកម្ម) សៀគ្វីសម្រាប់ភ្ជាប់ថាមពលខាងក្រៅ ឧបករណ៍ភ្ជាប់សម្រាប់ភ្ជាប់ម៉ូទ័រ និងម្ជុលសម្រាប់ភ្ជាប់ទៅអាឌុយណូ។



ការរៀបចំការងារជាមួយបណ្តាញគឺជាកិច្ចការសំខាន់បំផុតមួយនៅក្នុងគម្រោងទំនើប។ ដើម្បីភ្ជាប់ទៅបណ្តាញក្នុងតំបន់តាមរយៈអ៊ីសឺរណិត មានបន្ទះពង្រីកដែលត្រូវគ្នា។




បន្ទះពង្រីកគំរូ

បន្ទះទាំងនេះគឺសាមញ្ញណាស់ - ពួកគេមានបន្ទះទំនាក់ទំនងសម្រាប់ធាតុម៉ោនប៊ូតុងកំណត់ឡើងវិញត្រូវបានបង្ហាញហើយវាអាចធ្វើទៅបានដើម្បីភ្ជាប់ថាមពលខាងក្រៅ។ គោលបំណងនៃខែលទាំងនេះគឺដើម្បីបង្កើនការបង្រួមនៃឧបករណ៍នៅពេលដែលសមាសធាតុចាំបាច់ទាំងអស់មានទីតាំងនៅខាងលើបន្ទះមេ។





Arduino LCD Shield និង tft Shield

ប្រឡោះប្រភេទនេះត្រូវបានប្រើដើម្បីធ្វើការជាមួយអេក្រង់ LCD នៅក្នុង arduino ។ ដូចដែលអ្នកបានដឹងហើយថាការភ្ជាប់សូម្បីតែអេក្រង់អត្ថបទ 2 បន្ទាត់សាមញ្ញបំផុតគឺនៅឆ្ងាយពីកិច្ចការតូចតាច: អ្នកត្រូវភ្ជាប់ទំនាក់ទំនងអេក្រង់ចំនួន 6 ក្នុងពេលតែមួយឱ្យបានត្រឹមត្រូវដោយមិនរាប់បញ្ចូលការផ្គត់ផ្គង់ថាមពល។ វាកាន់តែងាយស្រួលក្នុងការបញ្ចូលម៉ូឌុលដែលត្រៀមរួចជាស្រេចទៅក្នុងបន្ទះ arduino ហើយគ្រាន់តែបង្ហោះរូបភាពដែលសមស្រប។ នៅក្នុង LCD Keypad Shield ដ៏ពេញនិយម ពី 4 ទៅ 8 ប៊ូតុងត្រូវបានភ្ជាប់ភ្លាមៗទៅក្តារដែលអនុញ្ញាតឱ្យអ្នករៀបចំចំណុចប្រទាក់ខាងក្រៅភ្លាមៗសម្រាប់អ្នកប្រើប្រាស់ឧបករណ៍។ TFT Shield ក៏ជួយផងដែរ។



Arduino Data Logger Shield

កិច្ចការមួយទៀតដែលពិបាកអនុវត្តដោយខ្លួនឯងនៅក្នុងផលិតផលរបស់អ្នកគឺការផ្ទុកទិន្នន័យដែលទទួលបានពីឧបករណ៍ចាប់សញ្ញាជាមួយនឹងពេលវេលាយោង។ ប្រឡោះដែលត្រៀមរួចជាស្រេចអនុញ្ញាតឱ្យមិនត្រឹមតែរក្សាទុកទិន្នន័យ និងទទួលពេលវេលាពីនាឡិកាដែលភ្ជាប់មកជាមួយប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងអាចភ្ជាប់ឧបករណ៍ចាប់សញ្ញាតាមវិធីដ៏ងាយស្រួលដោយ soldering ឬនៅលើបន្ទះសៀគ្វី។




សង្ខេបសង្ខេប

នៅក្នុងអត្ថបទនេះ យើងបានពិចារណាតែផ្នែកតូចមួយនៃជួរដ៏ធំនៃឧបករណ៍ផ្សេងៗដែលពង្រីកមុខងាររបស់ arduino ។ បន្ទះពង្រីកអនុញ្ញាតឱ្យអ្នកផ្តោតលើអ្វីដែលសំខាន់បំផុត - តក្កវិជ្ជានៃកម្មវិធីរបស់អ្នក។ អ្នកបង្កើតខែលដែលផ្តល់សម្រាប់ការដំឡើងត្រឹមត្រូវនិងអាចទុកចិត្តបាន ការផ្គត់ផ្គង់ថាមពលចាំបាច់។ អ្វីដែលនៅសេសសល់សម្រាប់អ្នកគឺស្វែងរកក្តារដែលអ្នកត្រូវការដោយប្រើខែលពាក្យអង់គ្លេសដែលគួរអោយស្រលាញ់ ភ្ជាប់វាទៅ arduino ហើយបង្ហោះគំនូរព្រាង។ ជាធម្មតា ការសរសេរកម្មវិធីណាមួយនៃខែលមាននៅក្នុងការអនុវត្តសកម្មភាពសាមញ្ញដើម្បីប្តូរឈ្មោះអថេរខាងក្នុងនៃកម្មវិធីដែលបានបញ្ចប់រួចហើយ។ ជាលទ្ធផល យើងទទួលបានភាពងាយស្រួលក្នុងការប្រើប្រាស់ និងការតភ្ជាប់ ក៏ដូចជាល្បឿននៃការផ្គុំឧបករណ៍ ឬគំរូដើម។

គុណវិបត្តិនៃការប្រើប្រាស់បន្ទះពង្រីកគឺការចំណាយរបស់ពួកគេ និងការបាត់បង់ប្រសិទ្ធភាពដែលអាចកើតមានដោយសារតែភាពបត់បែននៃខែលដែលស្ថិតនៅក្នុងធម្មជាតិរបស់វា។ សម្រាប់កម្មវិធីជាក់លាក់ ឬឧបករណ៍បញ្ចប់របស់អ្នក មុខងារទាំងអស់របស់ប្រឡោះប្រហែលជាមិនត្រូវការទេ។ ក្នុងករណីនេះ អ្នកគួរប្រើប្រឡោះតែនៅដំណាក់កាលនៃការបង្កើតគំរូ និងសាកល្បងប៉ុណ្ណោះ ហើយនៅពេលបង្កើតកំណែចុងក្រោយនៃឧបករណ៍របស់អ្នក សូមគិតអំពីការជំនួសវាដោយការរចនាជាមួយនឹងគ្រោងការណ៍ និងប្រភេទប្លង់ផ្ទាល់ខ្លួនរបស់អ្នក។ វាអាស្រ័យលើអ្នក អ្នកមានលទ្ធភាពទាំងអស់សម្រាប់ជម្រើសត្រឹមត្រូវ។

→ តើធ្វើដូចម្តេចដើម្បីពង្រីកចំនួននៃ analog inputs និង outputs នៅលើ Arduino របស់អ្នក?

តើធ្វើដូចម្តេចដើម្បីពង្រីកចំនួននៃ analog inputs និង outputs នៅលើ Arduino របស់អ្នក?

multiplexer ឬ demultiplexer នឹងអនុញ្ញាតឱ្យអ្នកពង្រីកចំនួន inputs និង outputs នៅលើ Arduino របស់អ្នក។
4051 គឺជា 8-channel analog multiplexer/demultiplexer ដូច្នេះ៖
* ប្រសិនបើអ្នកកំពុងប្រើ 4051 ជា multiplexer៖ អ្នកអាចជ្រើសរើសធាតុបញ្ចូលណាមួយក្នុងចំណោម 8 ផ្សេងគ្នា ហើយអានស្ថានភាពរបស់វាទៅកាន់ឧបករណ៍បញ្ជា។
* ប្រសិនបើអ្នកកំពុងប្រើ 4051 ជា demultiplexer អ្នកអាចជ្រើសរើសលទ្ធផលណាមួយក្នុងចំណោម 8 ផ្សេងគ្នា ហើយសរសេរតម្លៃដែលអ្នកចង់បាននៅទីនោះ។

ដូចគ្នានេះផងដែរ 4051 អាចគ្រប់គ្រងតម្លៃអាណាឡូកនៅក្នុង Arduino របស់អ្នកអ្នកអាចប្រើសញ្ញាអាណាឡូក 0-5V និងភ្ជាប់ IC ទៅនឹងធាតុបញ្ចូលអាណាឡូកនៅលើ Arduino ។

ដើម្បីជ្រើសរើសការបញ្ចូល microcircuit ដែលចង់បាន ក៏ដូចជារបៀបប្រតិបត្តិការ អាន ឬសរសេរ យើងត្រូវប្រើសញ្ញាបញ្ជាបី (S0, S1 និង S2)។ ម្ជុលទាំងនេះនីមួយៗត្រូវតែភ្ជាប់ជាមួយលទ្ធផលឌីជីថលរបស់ Arduino ។ លទ្ធផលនីមួយៗមានលេខ (S0 = 1; S1 = 2; S2 = 4) ហើយប្រសិនបើលទ្ធផលមួយក្នុងចំណោមលទ្ធផលទាំងនេះត្រូវបានកំណត់ទៅកម្រិតតក្កវិជ្ជាខ្ពស់ នោះចំនួនម្ជុលដែលតំណាងនឹងមាន 4051 ។

ឧទាហរណ៍:
* ប្រសិនបើអ្នកកំណត់កំណត់ហេតុ "1" នៅធាតុបញ្ចូលនៃ microcircuit S0 និង S1 ហើយកត់ត្រា "0" នៅ S2 នោះការបញ្ចូល y3 នៃ microcircuit ត្រូវបានជ្រើសរើស វាមើលទៅដូចនេះ (1 +2 +0 = 3) ។
* ប្រសិនបើអ្នកកំណត់កំណត់ហេតុ "1" នៅធាតុបញ្ចូលនៃ microcircuit S0 និង S2 ហើយកត់ត្រា "0" នៅ S1 បន្ទាប់មកការបញ្ចូល y5 នៃ microcircuit ត្រូវបានជ្រើសរើស វាមើលទៅដូចនេះ (1 +0 +4 = 5) ។

វាមិនអាចទៅរួចទេក្នុងការអាន ឬសរសេរស្ថានភាពទៅលេខ 4051 ច្រើនជាងមួយក្នុងពេលតែមួយ។ ប៉ុន្តែ​អ្នក​អាច​អាន​និង​សរសេរ​ស្ថានភាព​ពី​លទ្ធផល​នៃ​បន្ទះ​ឈីប​បាន​យ៉ាង​លឿន។ មិនចាំបាច់មានការពន្យាពេលរវាងការជ្រើសរើស ការអាន ឬសរសេរស្ថានភាពនៃ 4051 pins នោះទេ។

* Z----- សញ្ញាបញ្ចូលឬលទ្ធផលទូទៅ (ភ្ជាប់ជាមួយ Arduino I/O)
* អ៊ី ----- បើកការបញ្ចូល (កំណត់ហេតុសកម្ម "0") (ភ្ជាប់ទៅដី (GND))
* Vee --- វ៉ុលផ្គត់ផ្គង់អវិជ្ជមាន (ភ្ជាប់ទៅនឹងដី (GND))
* GND --- ដីអវិជ្ជមាន (0 V)
* S0-S2 - ជ្រើសរើសធាតុបញ្ចូល (បានភ្ជាប់ទៅម្ជុលឌីជីថល Arduino ចំនួនបី)
* y0-Y7 - ធាតុចូល/លទ្ធផលឯករាជ្យ
* Vcc --- វ៉ុលផ្គត់ផ្គង់វិជ្ជមាន (5V)



រូបភាពខាងឆ្វេងខាងលើគឺជាឧទាហរណ៍នៃរបៀបប្រើ 9 multiplexer ដើម្បីអានការបញ្ចូលអាណាឡូកចំនួន 64 ជាមួយនឹងការបញ្ចូលអាណាឡូក Arduino តែមួយប៉ុណ្ណោះ។
រូបភាពខាងស្តាំខាងលើគឺជាឧទាហរណ៍នៃរបៀបប្រើ 4051s ពីរ (មួយបានកំណត់រចនាសម្ព័ន្ធជា demultiplexer និងមួយជា multiplexer) នៅក្នុងម៉ាទ្រីស 8x8 ដើម្បីសាកល្បង 64 ប៊ូតុង ឬការបញ្ចូលឌីជីថលផ្សេងទៀតពីការបញ្ចូលឌីជីថលតែមួយនៅលើ Arduino (ពីការដំឡើងលើកទីពីរ អ្នកអាចមានប៊ូតុងពីរក្នុងពេលតែមួយ) ក្នុងពេលតែមួយ បើមិនដូច្នេះទេ អ្នកគួរតែប្រើការកំណត់ដំបូង (ខាងឆ្វេង)។

ឧទាហរណ៍កូដ៖

// ឧទាហរណ៍សម្រាប់ការប្រើប្រាស់ 4051 analog multiplexer/demultiplexer
// ដោយ ដាវីឌ គ.

int led = 13 ; // ដំឡើង LED នៅជើងទី 13
int r0 = 0; // តម្លៃជ្រើសរើសលទ្ធផលទៅ 4051 (S0)
int r1 = 0; // តម្លៃជ្រើសរើសទិន្នផលទៅ 4051 (S1)
int r2 = 0; // តម្លៃជ្រើសរើសលទ្ធផលទៅ 4051 (S2)
ជួរ int = 0; // រក្សាទុកលេខកូដធុង
ចំនួន int = 0; // ជក់
int bin = ( 000, 1, 10, 11, 100, 101, 110, 111); // អារេនៃលេខគោលពីរដែលកំណត់ចំនួននៃការបញ្ចូល / ទិន្នផលដែលបានជ្រើសរើសនៃបន្ទះឈីប 4051 ពី 1 ដល់ 8 ។
ការដំឡើងទុកជាមោឃៈ () ( // ចាប់ផ្តើម
pinMode (2, OUTPUT); // s0 ចេញ
pinMode (3, OUTPUT); // s1 ចេញ
pinMode (4, OUTPUT); // s2 ចេញ
digitalWrite (ដឹកនាំ, ខ្ពស់); // បំភ្លឺ LED
ស៊េរីចាប់ផ្តើម (៩៦០០); // អត្រាប្តូរប្រាក់ UART
}

void loop()(
សម្រាប់ (រាប់ = 0; រាប់ ≤ 7; រាប់ ++) ( // វដ្តតាមរយៈធាតុអារេពី 1 ដល់ 8
ជួរដេក = bin [រាប់] ;
r0 = ជួរដេក & 0x01 ;
r1 = (ជួរដេក >> 1) & 0x01 ; //
r2 = (ជួរដេក >> 2) & 0x01 ; //
digitalWrite(2, r0);
digitalWrite(3, r1);
digitalWrite(4, r2);
Serial.println(bin);
ការពន្យាពេល (1000);

បន្ទះសៀគ្វី SPI ឬ I2C ADC អាចរកបានយ៉ាងងាយស្រួលនៅក្នុងជួរនៃដំណោះស្រាយ អត្រាគំរូ និងចំនួនឆានែល។ ពួកវាមានភាពងាយស្រួលក្នុងការបន្ថែមទៅ Arduino ណាមួយ។

ឧទាហរណ៍ MCP3208 នឹងផ្តល់ឱ្យ 8 ឆានែលនៃគុណភាពបង្ហាញ 12 ប៊ីតក្នុងមួយ SPI ដែលមានន័យថា 3 pins (MOSI/MISO/SCK) + 1 ក្នុងមួយបន្ទះឈីប (SS) ។ ដូច្នេះ 1 បន្ទះសៀគ្វីនឹងមាន 4 pins, 2 chips 5 pins, 3 chips 6 pins ជាដើម។

ការបន្ថែម ICs ជាច្រើនទៅកាន់ SPI bus អាចជាការរំខាននៅក្នុងខ្លួនវាជាមួយនឹងការកើនឡើងនៃសមត្ថភាពនៃធាតុបញ្ចូលទាំងនោះ ដែលមានន័យថាអ្នកត្រូវបន្ថយល្បឿននៃការផ្ញើសារបន្តិច ឬបន្ថែមការផ្អាកបន្ថែមមួយចំនួនដើម្បីជំរុញឡានក្រុងឱ្យកាន់តែខ្លាំង។

បន្ទះសៀគ្វី I2C អាចមានល្បិចជាង ព្រោះមានតែចំនួនកំណត់នៃអាស័យដ្ឋាននៅលើឡានក្រុង I2C ប៉ុណ្ណោះ - បូកនៅលើ Arduinos I2C ជាច្រើនក៏ជាបន្ទះ analog ពីរដែលអ្នកប្រហែលជាមិនចង់លះបង់។

ជម្រើសទីពីរពាក់ព័ន្ធនឹងការប្រើប្រាស់ឧបករណ៍ពហុគុណអាណាឡូក (ឧទាហរណ៍ 4051) ដើម្បីប្តូរប្រភពផ្សេងៗគ្នាទៅធាតុបញ្ចូលអាណាឡូកដែលមានស្រាប់។

ជម្រើសទីបី ដែលអ្នកប្រហែលជាមិនបានពិចារណានោះគឺមាន arduinos ជាច្រើន (ឬ microcontrollers ដែលមិនមានតម្លៃថោកផ្សេងទៀត) ដែលនីមួយៗធ្វើការទាញយក ហើយបន្ទាប់មកអនុវត្តវិធីសាស្រ្តទំនាក់ទំនងមួយចំនួនរវាងពួកគេ (ឬជាមួយមេតែមួយ)។ វាមានអត្ថប្រយោជន៍បន្ថែមនៃការអាចយកគំរូឆានែលច្រើនក្នុងពេលតែមួយ (មួយក្នុងមួយ microcontroller) ដែលបង្កើនល្បឿនការងាររបស់អ្នកបន្តិច។

ដោយពង្រីកលើចម្លើយរបស់ Mazhenko អ្នកអាចប្រើ analog multiplexer ដូចជា 74HC4051 ដើម្បីប្រែក្លាយច្រកអាណាឡូកមួយទៅជា 8 ។

បងប្អូនជីដូនមួយរបស់វា 74HC4067 នឹង multiplex 16 ports ។ ឥឡូវនេះជាមួយនឹងការបញ្ចូលអាណាឡូកចំនួន 6 នៅលើ Arduino Uno អ្នកអាចមានធាតុបញ្ចូល 6 x 16 = 96 ។ សញ្ញាបញ្ជា A/B/C អាចស្របគ្នា។

វានឹងអនុញ្ញាតឱ្យអ្នកដោះស្រាយការបញ្ចូលចំនួន 96 ជាមួយនឹងបន្ទះសៀគ្វីបន្ថែមចំនួន 6 និងលេខកូដសាមញ្ញសមរម្យ។ ខ្ញុំមានឧទាហរណ៍កូដនៅលើទំព័រ 74HC4051 mux/demux របស់ខ្ញុំ។

សម្រាប់ 8 លេខកូដបញ្ចូល:

// ឧទាហរណ៍នៃការប្រើប្រាស់ 74HC4051 multiplexer/demultiplexer // Author: Nick Gammon // Date: 14 March 2013 const byte sensor = A0; // ដែលច្រក multiplexer ចូល/ចេញត្រូវបានតភ្ជាប់ // អាសយដ្ឋាន multiplexer ជ្រើសរើសបន្ទាត់ (A/B/C) const byte addressA = 6;//low-order bit const byte addressB = 5; const byte addressC = 4; // high-order bit void setup()( Serial.begin(115200); Serial.println("កំពុងចាប់ផ្តើមការសាកល្បង multiplexer..."); pinMode(addressA, OUTPUT); pinMode(addressB, OUTPUT ); pinMode (addressC, OUTPUT); ) // ចុងបញ្ចប់នៃការដំឡើង int readSensor (const byte which) ( // ជ្រើសរើស MUX channel digitalWrite ត្រឹមត្រូវ (addressA, (which & 1) ? HIGH: LOW); // low-order bit digitalWrite (addressB, (which & 2) ? HIGH: LOW); digitalWrite (addressC, (which & 4) ? HIGH: LOW); // high-order bit // ឥឡូវអាន sensor ត្រឡប់ analogRead (sensor); ) / / end of readSensor void loop () ( // បង្ហាញការអាន sensor ទាំង 8 សម្រាប់ (byte i = 0; i< 7; i++) { Serial.print ("Sensor "); Serial.print (i); Serial.print (" reads: "); Serial.println (readSensor (i)); } delay (1000); } //end of loop

ខ្ញុំបានធ្វើការយ៉ាងពិតប្រាកដជាមួយនឹងបញ្ហាដូចគ្នា។ ខ្ញុំត្រូវការកម្មវិធីដែលអាន 100 thermistor... ហេតុអ្វី? ជាការប្រសើរណាស់, ប្រសិនបើអ្នកត្រូវការវា។

ខ្ញុំបានបញ្ចប់វារួចហើយ។

ខ្ញុំបានសាកល្បង 74HC4051 multiplexer/demultiplexer ។ ប៉ុន្តែ​សម្រាប់​ហេតុផល​មួយ​ចំនួន ខ្ញុំ​មិន​បាន​ទទួល​លទ្ធផល​ដែល​ចង់​បាន។

រឿងដំបូងដែលអ្នកនឹងរកឃើញ... POWER អ្នកនឹងត្រូវការការផ្គត់ផ្គង់ថាមពលខាងក្រៅ ក្នុងករណីរបស់ខ្ញុំ ខ្ញុំទើបតែបង្កើតវ៉ុលបែងចែក ហើយភ្ជាប់ thermistor ទៅនឹងថាមពលនោះ ហើយបន្ទាប់មកគ្រាន់តែប្រើ analog port ដើម្បីអាន...

ខ្ញុំកំពុងប្រើ I2C protocol, 8 arduino Mega 7 slaves និង master មួយ។ ហើយបន្ទាប់ពីផ្ញើ ផ្ញើចំនួនគត់ អណ្តែត និង blah blah មិនដំណើរការសម្រាប់ខ្ញុំគ្រាន់តែធ្វើវា។ វាអាចផ្ញើអាណាឡូកអានលើ I2C ហើយមេធ្វើការបំប្លែងចាំបាច់ទាំងអស់។

ប្រសិនបើអ្នកនៅតែចាប់អារម្មណ៍ខ្ញុំអាចផ្ញើកូដប្រភពសម្រាប់មេនិងទាសករ។ ជាមួយនឹងគំរូនេះ អ្នកអាចភ្ជាប់បានរហូតដល់ 50 arduinos ហើយមេនឹងរកមើល arduino នីមួយៗដែលបានភ្ជាប់នៅលើបណ្តាញ និងស្នើសុំទិន្នន័យ។