Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 25

Автор Монк Π‘Π°ΠΉΠΌΠΎΠ½

Ѐункция pgm_read_word Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· Ρ„Π»Π΅Ρˆ-памяти слово (2 Π±Π°ΠΉΡ‚Π°). Π’ Π±ΠΈΠ±Π»ΠΈΠΎΒ­Ρ‚Π΅ΠΊΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pgm_read_byte ΠΈ pgm_read_dword, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ 1 ΠΈ 4 Π±Π°ΠΉΡ‚Π° соотвСтствСнно.

ИспользованиС SD-ΠΊΠ°Ρ€Ρ‚Ρ‹

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ сами ΠΏΠ»Π°Ρ‚Ρ‹ Arduino Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ слота для SD-ΠΊΠ°Ρ€Ρ‚, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ethernet ΠΈ MP3 (рис. 6.6), ΠΈΠΌΠ΅ΡŽΡ‚ слоты для ΠΊΠ°Ρ€Ρ‚ SD ΠΈΠ»ΠΈ microSD.

Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ°Ρ€Ρ‚ SD ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ интСрфСйс SPI (обсуТдаСтся Π² Π³Π»Π°Π²Π΅ 9). К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ SD с ΠΏΠ»Π°Ρ‚ΠΎΠΉ Arduino, Π½Π΅ трСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΊΠΎΠ΄ для взаимодСйствия с интСрфСйсом SPI, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² состав Arduino IDE Π²Ρ…ΠΎΠ΄ΠΈΡ‚ спСциализированная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с простым Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ SD.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _49.jpg

Рис. 6.6. ΠŸΠ»Π°Ρ‚Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ MP3 со слотом для ΠΊΠ°Ρ€Ρ‚Ρ‹ microSD

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _50.jpg

Рис. 6.7. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Cardinfo

Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² скСтчСй, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ SD, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°Ρ€Ρ‚Π΅ SD ΠΈ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° (рис. 6.7).

Π—Π°ΠΏΠΈΡΡŒ Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ SD выполняСтся ΠΎΡ‡Π΅Π½ΡŒ просто, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°:

File dataFile = SD.open("datalog.txt", FILE_WRITE);

// Если Ρ„Π°ΠΉΠ» сущСствуСт, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ

if(dataFile) {

Β Β dataFile.println(dataString);

Β Β dataFile.close();

Β Β // вывСсти Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°

Β Β Serial.println(dataString);

}

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ познакомились со всСми аспСктами использования памяти ΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Arduino. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ… ΠΌΡ‹ займСмся исслСдованиСм ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² программирования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… интСрфСйсов Π² Arduino, Π½Π°Ρ‡Π°Π² с ΡˆΠΈΠ½Ρ‹ I2C.

7. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ I2C

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Π°Ρ шина I2C (произносится Β«ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ си») β€” стандартный способ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ. Иногда интСрфСйс I2C Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΌ интСрфСйсом (Two Wire Interface, TWI). ВсС ΠΏΠ»Π°Ρ‚Ρ‹ Arduino ΠΈΠΌΠ΅ΡŽΡ‚ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ интСрфСйс I2C, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств. НСкоторыС ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… устройств прСдставлСны Π½Π° рис. 7.1.

ВсС Ρ‚Ρ€ΠΈ устройства Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ряду Π½Π° рис. 7.1 ΡΠ²Π»ΡΡŽΡ‚ΡΡ модулями отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, выпускаСмыми ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Adafruit. Π’ Π½ΠΈΠΆΠ½Π΅ΠΌ ряду слСва находится ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π£ΠšΠ’-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° TEA5767. Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ приобрСсти Π½Π° сайтС eBay ΠΈΠ»ΠΈ Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π·Π° нСсколько Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ². ΠŸΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ TEA5767, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π£ΠšΠ’, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ частоту ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс I2C. Π’ Ρ†Π΅Π½Ρ‚Ρ€Π΅ находится ΠΌΠΎΠ΄ΡƒΠ»ΡŒ часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Real-Time Clock, RTC), Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ микросхСму обслуТивания ΡˆΠΈΠ½Ρ‹ I2C ΠΈ ΠΊΠ²Π°Ρ€Ρ†Π΅Π²Ρ‹ΠΉ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Установив Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ врСмя ΠΈ Π΄Π°Ρ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс I2C, Π²Ρ‹ смоТСтС Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ врСмя ΠΈ Π΄Π°Ρ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс I2C. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π»ΠΈΡ‚ΠΈΠ΅Π²ΡƒΡŽ Π±Π°Ρ‚Π°Ρ€Π΅ΠΉΠΊΡƒ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сроком слуТбы, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ модуля Π΄Π°ΠΆΠ΅ Π² отсутствиС элСктропитания ΠΎΡ‚ внСшнСго источника. НаконСц, справа находится 16-ΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ ШИМ/сСрвопривод, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊ вашСй ΠΏΠ»Π°Ρ‚Π΅ Arduino 16 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ².

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _51.jpg

Рис. 7.1. Устройства с интСрфСйсом I2C

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ I2C опрСдСляСтся ΠΊΠ°ΠΊ стандарт ΡˆΠΈΠ½Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ допускаСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ мноТСства устройств Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ. НапримСр, Ссли Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ дисплСй ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ, ΠΊ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°Ρ€Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π½Π° Β«Π²Π΅Π΄ΡƒΡ‰Π΅ΠΌΒ» устройствС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ мноТСство Β«Π²Π΅Π΄ΠΎΠΌΡ‹Ρ…Β» устройств. ΠŸΠ»Π°Ρ‚Π° Arduino выступаСт Π² Ρ€ΠΎΠ»ΠΈ Β«Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎΒ» устройства, Π° всС Β«Π²Π΅Π΄ΠΎΠΌΡ‹Π΅Β» устройства ΠΈΠΌΠ΅ΡŽΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ адрСса, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ устройства Π½Π° шинС.

На рис. 7.2 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° возмоТная схСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Arduino Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² I2C: часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ модуля дисплСя.

Π§Π΅Ρ€Π΅Π· интСрфСйс I2C ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Π’ этом случаС ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ»Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ настроСна ΠΊΠ°ΠΊ Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ устройство, Π° другая β€” ΠΊΠ°ΠΊ Π²Π΅Π΄ΠΎΠΌΠΎΠ΅.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _52.jpg

Рис. 7.2. Arduino управляСт двумя устройствами I2C

Аппаратная Ρ‡Π°ΡΡ‚ΡŒ I2C

ЭлСктричСски Π»ΠΈΠ½ΠΈΠΈ соСдинСния интСрфСйса I2C ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π°ΠΌ ΠΈΠ»ΠΈ Π²Ρ…ΠΎΠ΄Π°ΠΌ (ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ с трСмя состояниями). Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ состоянии Π»ΠΈΠ½ΠΈΠΈ соСдинСния Π½Π΅ находятся Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· состояний, HIGH ΠΈΠ»ΠΈ LOW, Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ напряТСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ логичСскими элСмСнтами с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ использования ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ сопротивлСния. Π­Ρ‚ΠΈ сопротивлСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΎΠΌΠΈΠ½Π°Π» 4,7 кОм, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΏΠ°Ρ€Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π½Π° всСй шинС I2C Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ сопротивлСниС ΠΊ шинС питания 3,3 Π’ ΠΈΠ»ΠΈ 5 Π’ Π² зависимости ΠΎΡ‚ уровня напряТСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ дСйствуСт шина. Если ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ устройство Π½Π° шинС ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ напряТСниС питания, для Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ уровня напряТСния. Для ΡˆΠΈΠ½Ρ‹ I2C ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ прСобразования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ BSS138, выпускаСмыС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Adafruit (www.adafruit.com/products/757).

На Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Arduino интСрфСйс I2C ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ. НапримСр, Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Uno ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ A4 ΠΈ A5 β€” Π»ΠΈΠ½ΠΈΠΈ SDA ΠΈ SCL соотвСтствСнно, Π° Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Leonardo ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ D2 ΠΈ D3. (ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ линиях SDA ΠΈ SCL рассказываСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.) На ΠΎΠ±Π΅ΠΈΡ… модСлях Π»ΠΈΠ½ΠΈΠΈ SDA ΠΈ SCL выводятся Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΊΠΎΠ»ΠΎΠ΄ΠΊΡƒ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ рядом с ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ AREF (рис. 7.3).

Π’ Ρ‚Π°Π±Π». 7.1 ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйсу I2C.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _53.jpg

Рис. 7.3. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ I2C Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino Uno

Π’Π°Π±Π»ΠΈΡ†Π° 7.1. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ I2C Π² Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Arduino

МодСль

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Uno

A4 (SDA) ΠΈ A5 (SCL)

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ подписаны SCL ΠΈ SDA ΠΈ находятся рядом с ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ AREF. Π­Ρ‚ΠΈ Π»ΠΈΠ½ΠΈΠΈ интСрфСйса выводятся Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ A4 ΠΈ A5

Leonardo

D2 (SDA) ΠΈ D3 (SCL)

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ подписаны SCL ΠΈ SDA ΠΈ находятся рядом с ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ AREF. Π­Ρ‚ΠΈ Π»ΠΈΠ½ΠΈΠΈ интСрфСйса выводятся Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ D2 ΠΈ D3

Mega2560

D20 (SDA) ΠΈ D21 (SCL)

β€”

Due

D20 (SDA) ΠΈ D21 (SCL)

МодСль Due ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² I2C, подписанных SDA1 ΠΈ SCL1

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» I2C

Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· интСрфСйс I2C ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ (ΠΎΡ‚ΡΡŽΠ΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β€” Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ интСрфСйс, Two Wire Interface). Π­Ρ‚ΠΈ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ (Serial Clock Line, SCL) ΠΈ Π»ΠΈΠ½ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… (Serial Data Line, SDA). На рис. 7.4 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° врСмСнная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° сигнала, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс I2C.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _54.jpg

Рис. 7.4. ВрСмСнная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° сигнала, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс I2C

Π’Π΅Π΄ΡƒΡ‰Π΅Π΅ устройство Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ Π½Π° Π»ΠΈΠ½ΠΈΠΈ SCL, ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒ (Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ ΠΈΠ»ΠΈ Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство) Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ линию SDA ΠΈΠ· Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ состояния (Π² Ρ€Π΅ΠΆΠΈΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π°) ΠΈ посылаСт Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ логичСских Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ† Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сигнала. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ остановлСн, ΠΈ линия SDA возвращаСтся Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ состояниС.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Wire

МоТно, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ описанныС Ρ€Π°Π½Π΅Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, управляя Π±ΠΈΡ‚Π°ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π½Π°ΠΌ Тизнь, Π² составС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для Arduino имССтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Wire, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π½Π° сСбя всС слоТности, связанныС с синхронизациСй, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π°ΠΌ просто ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….