0x znamena, ze to co nasleduje je hexadecimalni cislo
00 je to cislo (jo, nula)
0x10 = 10 hexa = 16 dec
0x0A = A hexa = 10 dec
0x1A = 1A hexa = 26 dec
0x123 = 123 hexa = 291 dec (=1*256+2*16+3*1)
nekdy je pohodlnejsi zapsat cislo dekadicky
int minuts_in_hour = 60; // 0x3e vypada v tomto kontextu podivne
jindy je pohodlnejsi ho zapsat hexadecimalne
byte low_byte_of_my_data = my_data & 0xFF; // jasne jde napsat 255, ale vypada to divne
a nekdy je lepsi to zapsat treba binarne
#define FLAG_CISLO_1 0b00000001
#define FLAG_CISLO_2 0b00000010
#define FLAG_CISLO_3 0b00000100
#define FLAG_CISLO_4 0b00001000
#define FLAG_CISLO_5 0b00010000
byte moje_priznaky = FLAG_CISLO_1 | FLAG_CISLO_3 | FLAG_CISLO_5; // 0b10101 = 0x15 = 21 ale hexa a dec zapis toho moc nereknou
----
https://www.arduino.cc/reference/en/lan ... constants/
Bacha - Arduino knihovny (wiring) definuji konstanty jako B101 a podobne pro "jednodussi" zapis binarnich cisel. Ale protoze sam program je v cecku, tak spravny zapis binarnich konstant je 0b101 a tak podobne.
Arduino/hardware/arduino/avr/cores/arduino/binary.h je ten soubor, kde to spachali a zacina nejak takto:
Kód: Vybrat vše
#ifndef Binary_h
#define Binary_h
#define B0 0
#define B00 0
#define B000 0
#define B0000 0
#define B00000 0
#define B000000 0
#define B0000000 0
#define B00000000 0
#define B1 1
#define B01 1
#define B001 1
#define B0001 1
#define B00001 1
#define B000001 1
#define B0000001 1
#define B00000001 1
#define B10 2
#define B010 2
#define B0010 2
#define B00010 2
#define B000010 2
#define B0000010 2
#define B00000010 2
#define B11 3
#define B011 3
#define B0011 3
#define B00011 3
#define B000011 3
#define B0000011 3
#define B00000011 3
zatimco kdyz se podivam treba na libraries/Adafruit_Circuit_Playground/utility/Adafruit_CPlay_LIS3DH.h tak tam pouzivaji binarni cisla zapsana normalne
Kód: Vybrat vše
typedef enum
{
LIS3DH_RANGE_16_G = 0b11, // +/- 16g
LIS3DH_RANGE_8_G = 0b10, // +/- 8g
LIS3DH_RANGE_4_G = 0b01, // +/- 4g
LIS3DH_RANGE_2_G = 0b00 // +/- 2g (default value)
} lis3dh_range_t;
typedef enum
{
LIS3DH_AXIS_X = 0x0,
LIS3DH_AXIS_Y = 0x1,
LIS3DH_AXIS_Z = 0x2,
} lis3dh_axis_t;
/* Used with register 0x2A (LIS3DH_REG_CTRL_REG1) to set bandwidth */
typedef enum
{
LIS3DH_DATARATE_400_HZ = 0b0111, // 400Hz
LIS3DH_DATARATE_200_HZ = 0b0110, // 200Hz
LIS3DH_DATARATE_100_HZ = 0b0101, // 100Hz
LIS3DH_DATARATE_50_HZ = 0b0100, // 50Hz
LIS3DH_DATARATE_25_HZ = 0b0011, // 25Hz
LIS3DH_DATARATE_10_HZ = 0b0010, // 10 Hz
LIS3DH_DATARATE_1_HZ = 0b0001, // 1 Hz
LIS3DH_DATARATE_POWERDOWN = 0,
LIS3DH_DATARATE_LOWPOWER_1K6HZ = 0b1000,
LIS3DH_DATARATE_LOWPOWER_5KHZ = 0b1001,
} lis3dh_dataRate_t;