Β Β 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.

Π ΠΈΡ. 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 (Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅).
