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

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

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

Β Β Wire.write(i);

Β Β Wire.endTransmission();

Β Β Wire.requestFrom(DS1307_ADDRESS, 7);

Β Β uint8_t ss = bcd2bin(Wire.read() & 0x7F);

Β Β uint8_t mm = bcd2bin(Wire.read());

Β Β uint8_t hh = bcd2bin(Wire.read());

Β Β Wire.read();

Β Β uint8_t d = bcd2bin(Wire.read());

Β Β uint8_t m = bcd2bin(Wire.read());

Β Β uint16_t y = bcd2bin(Wire.read()) + 2000;

Β Β return DateTime (y, m, d, hh, mm, ss);

}

Ѐункция Wire.read Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (Binary-Coded Decimal, BCD), поэтому ΠΎΠ½ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bcd2bin.

Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BCD Π±Π°ΠΉΡ‚ дСлится Π½Π° Π΄Π²Π° 4-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ прСдставляСт ΠΎΠ΄Π½Ρƒ Ρ†ΠΈΡ„Ρ€Ρƒ Π΄Π²ΡƒΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ дСсятичного числа. Π’Π°ΠΊ, число 37 Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BCD Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСно ΠΊΠ°ΠΊ 0011 0111. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±ΠΈΡ‚Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ дСсятичному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 3, Π° Π²Ρ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±ΠΈΡ‚Π° β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 7.

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

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ познакомились с интСрфСйсом I2C ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ Π΅Π³ΠΎ использования для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствий ΠΏΠ»Π°Ρ‚ Arduino с ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°Ρ‚Π°ΠΌΠΈ Arduino.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ исслСдуСм Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для взаимодСйствий с ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠ΅ΠΉ. Он называСтся 1-Wire. Π­Ρ‚ΠΎΡ‚ интСрфСйс Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ распространСния, ΠΊΠ°ΠΊ I2C, Π½ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² популярном Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ DS18B20.

8. ВзаимодСйствиС с устройствами 1-Wire

Π¨ΠΈΠ½Π° 1-Wire слуТит цСлям, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° Ρ†Π΅Π»ΠΈ ΡˆΠΈΠ½Ρ‹ I2C (Π³Π»Π°Π²Π° 7), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ взаимодСйствий ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² с ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами посрСдством минимального количСства Π»ΠΈΠ½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ 1-Wire, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Dallas Semiconductor, свСл ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² линиях Π΄ΠΎ логичСского ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° β€” всСго ΠΎΠ΄Π½ΠΎΠΉ. Π¨ΠΈΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ быстродСйствиС, Ρ‡Π΅ΠΌ I2C, Π½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ интСрСсной ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ β€” ΠΏΠ°Ρ€Π°Π·ΠΈΡ‚Π½Ρ‹ΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ (parasitic power), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ всСго двумя ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌΠΈ: GND (ground β€” зСмля) ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΌ питания ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π¨ΠΈΠ½Π° 1-Wire поддСрТиваСтся Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΈΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ устройств, Ρ‡Π΅ΠΌ I2C. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… производят ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Dallas Semiconductor ΠΈ Maxim. К ΠΈΡ… числу относятся устройства ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ€ΠΈΠ΄ΠΆΠ΅ΠΉ для ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ², Ρ„Π»Π΅Ρˆ-ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π­Π‘ΠŸΠŸΠ—Π£, Π° Ρ‚Π°ΠΊΠΆΠ΅ АЦП. Однако Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ срСди устройств 1-Wire Ρƒ Ρ€Π°Π΄ΠΈΠΎΠ»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ Π·Π°Π²ΠΎΠ΅Π²Π°Π» Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ DS18B20 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Dallas Semiconductor.

Аппаратная Ρ‡Π°ΡΡ‚ΡŒ 1-Wire

На рис. 8.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ DS18B20 ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Arduino, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ всСго Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° ΠΈ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠ°Ρ€Π°Π·ΠΈΡ‚Π½ΠΎΠ³ΠΎ питания DS18B20.

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

Рис. 8.1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ устройства 1-Wire ΠΊ ΠΏΠ»Π°Ρ‚Π΅ Arduino

1-Wire β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ шина, Π° Π½Π΅ соСдинСниС «точка–точка». К Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎ 255 устройств, взяв Π·Π° основу схСму, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΡƒΡŽ Π½Π° рис. 8.1. Если Π²Ρ‹ ΠΏΠΎΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ устройство Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ питания, Ρ‚ΠΎ сопротивлСниС 4,7 кОм ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Π° Π²Ρ‹Π²ΠΎΠ΄ Vdd Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° DS18B20 вмСсто GND ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСпосрСдствСнно с ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ 5 Π’ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» 1-Wire

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ I2C, интСрфСйс 1-Wire ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ понятия Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΈ Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ устройств. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ, Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства β€” Π²Π΅Π΄ΠΎΠΌΡ‹Ρ…. КаТдоС Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство Π΅Ρ‰Π΅ Π½Π° Π·Π°Π²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ адрСсом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° шинС, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ мноТСство Π²Π΅Π΄ΠΎΠΌΡ‹Ρ…. АдрСс ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 64 Π±ΠΈΡ‚Π°, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1,8 Γ— 1019 Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ².

Подобно I2C, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» 1-Wire прСдусматриваСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡˆΠΈΠ½Ρ‹ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ устройством Π½Π° Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ двусторонних взаимодСйствий. Однако Π² шинС 1-Wire отсутствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ линия ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… сигналов, поэтому Π½ΡƒΠ»ΠΈ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ. Π˜ΠΌΠΏΡƒΠ»ΡŒΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ 60 мкс ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 0, Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ 15 мкс β€” 1.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ линия Π΄Π°Π½Π½Ρ‹Ρ… находится ΠΏΠΎΠ΄ напряТСниСм с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ HIGH, Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ (Π²Π΅Π΄ΡƒΡ‰Π΅ΠΌΡƒ) трСбуСтся ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ устройству, ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ сброса с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ LOW Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 480 мкс. ВслСд Π·Π° Π½ΠΈΠΌ слСдуСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² 1 ΠΈ 0.

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

Π Π°Π±ΠΎΡ‚Ρƒ с интСрфСйсом 1-Wire Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OneWire, которая доступна ΠΏΠΎ адрСсу http://playground.arduino.cc/Learning/OneWire.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ 1-Wire

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Arduino ΠΊΠ°ΠΊ Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ устройство Π½Π° шинС 1-Wire, сначала Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ OneWire:

#include <OneWire.h>

Π—Π°Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр OneWire ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Arduino Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ линия Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° шинС 1-Wire. Π­Ρ‚ΠΈ Π΄Π²Π° дСйствия ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π° Π² Ρ€ΠΎΠ»ΠΈ Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino β€” достаточно просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

OneWire bus(10);

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€ΠΎΠ»ΡŒ Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΡˆΠΈΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ D10.

Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡˆΠΈΠ½Ρ‹

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΊ шинС, ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€, присвоСнный Π½Π° Π·Π°Π²ΠΎΠ΄Π΅, Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ способ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ адрСса устройств, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ шинС. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅Π±Π»Π°Π³ΠΎΡ€Π°Π·ΡƒΠΌΠ½ΠΎ Β«Π·Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒΒ» адрСса устройств Π² скСтч, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² случаС Π·Π°ΠΌΠ΅Π½Ρ‹ Π½ΠΎΠ²ΠΎΠ΅ Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ адрСс ΠΈ скСтч Π½Π΅ смоТСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ устройство (Arduino) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ²ΠΎΠ΅ΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ опись устройств Π½Π° шинС. Π—Π΄Π΅ΡΡŒ слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 8 Π±ΠΈΡ‚ Π² адрСсС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ «сСмСйство», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ устройство, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ устройство, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ DS18B20 ΠΈΠ»ΠΈ относится ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.

Π’ Ρ‚Π°Π±Π». 8.1 пСрСчислСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных ΠΊΠΎΠ΄ΠΎΠ² сСмСйств для ΡˆΠΈΠ½Ρ‹ 1-Wire. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницС http://owfs.sourceforge.net/family.html.

Π’Π°Π±Π»ΠΈΡ†Π° 8.1. ΠšΠΎΠ΄Ρ‹ сСмСйств устройств для ΡˆΠΈΠ½Ρ‹ 1-Wire

Код сСмСйства (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ)

БСмСйство

ОписаниС

06

iButton 1993

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡

10

DS18S20

Высокоточный Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ 9 Π±ΠΈΡ‚

28

DS18B20

Высокоточный Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ 12 Π±ΠΈΡ‚

1C

DS28E04-100

Π­Π‘ΠŸΠŸΠ—Π£ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ 4 ΠšΠ±Π°ΠΉΡ‚

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ OneWire имССтся функция search, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для поиска всСх Π²Π΅Π΄ΠΎΠΌΡ‹Ρ… устройств Π½Π° шинС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ адрСса всСх устройств Π½Π° шинС Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°:

// sketch_08_01_OneWire_List

#include <OneWire.h>

OneWire bus(10);

void setup()

{

Β Β Serial.begin(9600);

Β Β byte address[8]; // 64 Π±ΠΈΡ‚Π°

Β Β while (bus.search(address))

Β Β {

Β Β Β Β for(int i = 0; i < 7; i++)

Β Β Β Β {

Β Β Β Β Β Β Serial.print(address[i], HEX);

Β Β Β Β Β Β Serial.print(" ");

Β Β Β Β }

Β Β Β Β // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму

Β Β Β Β if (OneWire::crc8(address, 7) == address[7])

Β Β Β Β {

Β Β Β Β Β Β Serial.println(" CRC OK");

Β Β Β Β }

Β Β Β Β else

Β Β Β Β {

Β Β Β Β Β Β Serial.println(" CRC FAIL");

Β Β Β Β }

Β Β }

}

void loop()

{

}

На рис. 8.2 ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этого скСтча ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄Π²ΡƒΡ… Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² DS18B20, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ Arduino. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° устройства ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ сСмСйства Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅, Ρ€Π°Π²Π½Ρ‹ΠΉ 28 (Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅).

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