Π ΠΈΡ. 8.2. Π‘ΠΏΠΈΡΠΎΠΊ Π²Π΅Π΄ΠΎΠΌΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² 1-Wire
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ search ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 8 Π±Π°ΠΉΡ, ΠΊΡΠ΄Π° ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ. ΠΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π² ΡΠΈΠΊΠ»Π΅ while, ΠΊΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ°. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±Π°ΠΉΡ Π°Π΄ΡΠ΅ΡΠ° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ (Cyclic Redundancy Check, CRC), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π°Π΄ΡΠ΅ΡΠ°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OneWire Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ CRC.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DS18B20
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OneWire Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΌ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ DS18B20. ΠΠ° ΡΠΈΡ. 8.3 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ DS18B20 ΠΊ ΠΏΠ»Π°ΡΠ΅ Arduino. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π΄Π°ΡΡΠΈΠΊΠ° Π²ΡΠ΅Π³ΠΎ ΡΡΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ° ΠΈ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠ°.

Π ΠΈΡ. 8.3. Π‘Ρ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ DS18B20 ΠΊ Arduino
ΠΠ»Ρ Π΄Π°ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Dallas Semiconductor ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠΏΡΠΎΡΠ°ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DallasTemperature Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ https://github.com/milesburton/Arduino-Temperature-Control-Library.
// sketch_08_02_OneWire_DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
const int busPin = 10;
OneWire bus(busPin);
DallasTemperature sensors(&bus);
DeviceAddress sensor;
void setup()
{
Β Β Serial.begin(9600);
Β Β sensors.begin();
Β Β if (!sensors.getAddress(sensor, 0))
Β Β {
Β Β Β Β Serial.println("NO DS18B20 FOUND!");
Β Β }
}
void loop()
{
Β Β sensors.requestTemperatures();
Β Β float tempC = sensors.getTempC(sensor);
Β Β Serial.println(tempC);
Β Β delay(1000);
}
ΠΡΠΎΡ ΡΠΊΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π² ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² Π³ΡΠ°Π΄ΡΡΠ°Ρ Π¦Π΅Π»ΡΡΠΈΡ, ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π°ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ (ΡΠΈΡ. 8.4).

Π ΠΈΡ. 8.4. ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ, ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΠΎΠΉ Ρ Π΄Π°ΡΡΠΈΠΊΠ° DS18B20
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ, Π½ΠΎ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΡΡ Π½Π° ΡΠ»ΡΡΠ°ΠΉ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π΄Π°ΡΡΠΈΠΊΠ°ΠΌΠΈ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DallasTemperature ΡΠ°ΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π°Π΄ΡΠ΅ΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ OneWire Π² ΡΡΠ½ΠΊΡΠΈΠΈ getAddress, Π²ΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π΄Π°ΡΡΠΈΠΊΠ°. Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠΎΡΠΎΠΉ Π΄Π°ΡΡΠΈΠΊ, Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ getAddress. ΠΡΠΈΠΌΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Ρ ΡΠ°ΠΉΡΠ° ΠΊΠ½ΠΈΠ³ΠΈ, Π³Π΄Π΅ ΠΎΠ½ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ sketch_08_03_OneWire_DS18B20_2.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΡΠΈΠ½ΠΎΠΉ 1-Wire ΠΈ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΠΎΠ³ΠΎ Π΄Π°ΡΡΠΈΠΊΠ° DS18B20.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ SPI.
9. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ SPI
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Serial Peripheral Interface, SPI) β Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΠ½Π° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΊ ΠΏΠ»Π°ΡΠ΅ Arduino. ΠΡΠΎ Π±ΡΡΡΡΠ°Ρ ΡΠΈΠ½Π°, Π½ΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π² Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅ΡΡΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΏΡΠΎΡΠΈΠ² Π΄Π²ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ I2C. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ SPI Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΠΎΠΉ ΡΠΈΠ½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡΠ°Ρ Π»ΠΈΠ½ΠΈΡ Π² Π½Π΅ΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Π²ΡΠ±ΠΎΡ Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎΒ» (Slave Select, SS). ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΡΠΈΠ½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ SS Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠΌ Π½Π° ΠΏΠ»Π°ΡΠ΅ Arduino. Π’Π°ΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΡΠΈΠ½Π΅, ΠΎΡΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ SPI ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΡΠΎΠΊΠΈΠΌ ΡΠΏΠ΅ΠΊΡΡΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΠΏΡ ΡΠ΅Ρ ΠΆΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ I2C. ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, I2C ΠΈ SPI.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π±ΠΈΡΠ°ΠΌΠΈ
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ SPI ΡΠ°ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ¦Π Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ MCP3008, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠ΅Π±ΡΠ΅Ρ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π»ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡΡ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ SPI, Ρ Ρ ΠΎΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Ρ Π±ΠΈΡΠ°ΠΌΠΈ.
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
ΠΠΏΠ΅ΡΠ²ΡΠ΅ Ρ Π±ΠΈΡΠ°ΠΌΠΈ ΠΌΡ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈΡΡ Π² Π³Π»Π°Π²Π΅ 4 (ΡΠΌ. ΡΠΈΡ. 4.2). ΠΠΏΠ΅ΡΠΈΡΡΡ Π±ΠΈΡΠ°ΠΌΠΈ Π² Π±Π°ΠΉΡΠ΅ ΠΈΠ»ΠΈ Π² ΡΠ»ΠΎΠ²Π΅ (Π΄Π²Π° Π±Π°ΠΉΡΠ°), ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΡΡΠ»Π΅Π½Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠΎΡΡΠΎΠΌΡ Π² ΡΠΊΠ΅ΡΡΠ°Ρ Π΄Π»Ρ Arduino Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
byte x = 0b00000011; // 3
unsigned int y = 0b0000000000000011; // 3
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π±Π°ΠΉΡ Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 3 (2 + 1). ΠΠ΅Π΄ΡΡΠΈΠ΅ Π½ΡΠ»ΠΈ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ»ΡΠΆΠ°Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ 8-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° int, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 16 Π±ΠΈΡ. ΠΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ unsigned ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΈΠΏΠ° int ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°. ΠΡΠΎΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΈΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ +, β, * ΠΈ Π΄Ρ., ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ Π±ΠΈΡΠ°ΠΌΠΈ. ΠΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π° unsigned Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ.
ΠΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ 16-Π±ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ.
Π¨Π΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° β ΡΡΠΎ ΡΠΈΡΠ»Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 16, Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡ Π² ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΡ ΠΎΡ 0 Π΄ΠΎ 9, Π½ΠΎ ΠΈ Π±ΡΠΊΠ²Ρ ΠΎΡ A Π΄ΠΎ F, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 10 Π΄ΠΎ 15. Π ΡΡΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ Π±ΠΈΡΠ° ΡΠΈΡΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠΎΠΉ. Π ΡΠ°Π±Π». 9.1 ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 0 Π΄ΠΎ 15 ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π’Π°Π±Π»ΠΈΡΠ° 9.1. ΠΠ²ΠΎΠΈΡΠ½ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°
ΠΠ΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π¨Π΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
Π¨Π΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅, ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ:
int x = 0x0003; // 3
int y = 0x010F; // 271 (256 + 15)
ΠΡΡ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π½Π° C, Π½ΠΎ ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΌ, Π° Π½Π΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌ.
ΠΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²
ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ ΠΏΡΠΈ ΠΏΡΠΈΠ΅ΠΌΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²ΠΈΠ΄Π° ΡΠ²ΡΠ·ΠΈ, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² Π±Π°ΠΉΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΡ Π±ΠΈΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΡΡΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΡΠ°ΡΡΠΎ ΡΡΠ°ΡΠ°ΡΡΡΡ Π²ΡΠΎΠ»ΠΊΠ½ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, Π½ΠΎ ΡΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΡΡ Π² Π±Π°ΠΉΡΠ΅ ΠΈΠ»ΠΈ Π² Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ° ΡΠΈΡ. 9.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΡΠ»ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΡΡΠ΅ΠΌΡ ΠΌΠ»Π°Π΄ΡΠΈΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ.