Truyền Các Số Kiểu Long, Int, Float Trong Giao Tiếp Serial (UART)
Maybe your like
Đây là thư viện dành cho giao tiếp Serial giữa 2 board arduino dùng để truyền nhận tất cả các kiểu số và kí tự
Công việc của nó cũng khá đơn giản!
Để truyền: Ví dụ để truyền số 12345 kiểu int, như ta đã biết trên arduino kiểu int có cỡ là 2 byte, ta sẽ tách 2 byte lưu trữ của biến này thành từng byte rồi xuất ra đường truyền.
Để nhận: Ta sẽ làm ngược lại là ghép 2 byte đã nhận về một số kiểu int.
Kĩ thuật này đã được mình ứng dụng trong việc lưu trữ các số (lớn hơn 255) vào EEPROM tại bài viết này:
http://arduino.vn/tutorial/1370-huong-dan-su-dung-ic-eeprom-24cxx-cua-atmel-va-thu-vien
Để hiểu hơn về phương pháp tách/ghép, bạn hãy xem mã nguồn của thư viện này nhé.
Giới thiệu thư viện
Hiện tại thư viện có các chức truyền nhận các số kiểu:
Kiểu double: từ 2.2250738585072014 E – 308 đến 1.7976931348623158 E + 308.
void write_double(double value); double read_double();Kiểu float: từ 1.175494351 E – 38 đến 3.402823466 E + 38
void write_float(float value); float read_float();Kiểu int8_t: từ -128 đến 127
void write_int8_t(int8_t value); int8_t read_int8_t();Kiểu uint8_t (là kiểu byte): từ 0 đến 255.
void write_uint8_t(uint8_t value); uint8_t read_uint8_t();Kiểu int16_t (là kiểu int): từ -32768 đến 32767
void write_int16_t(int16_t value); int16_t read_int16_t();Kiểu uint16_t (giống kiểu unsigned int): từ 0 đến 65536
void write_uint16_t(uint16_t value); uint16_t read_uint16_t();Kiểu uint32_t (giống kiểu unsigned long) :từ 0 đến 4,294,967,295
void write_uint32_t(uint32_t value); uint32_t read_uint32_t();Kiểu int32_t (giống kiểu long):từ -2,147,483,648 đến 2,147,483,647
void write_int32_t(int32_t value); int32_t read_int32_t();Kiểu unsigned char (là kiểu byte): 0 đến 255
void write_char(unsigned char value); unsigned char read_char();Tương ứng 256 kí tự trong bảng mã ASCII, mỗi lần chỉ gửi được 1 kí tự
Gửi một chuỗi kí tự
void write_string(unsigned char value[], uint32_t n ); void read_string(unsigned char *value, uint32_t n);Với n là số lượng kí tự muốn gửi (hoặc nhận)
Gửi một mã dạng kí tự
void send_pass(unsigned char value[], uint32_t n );Rồi sau đó sử dụng hàm này để kiểm tra xem mã có khớp không, nếu đúng thì trả về 1, sai trả về 0.
bool check_pass(unsigned char value[], uint32_t n );Xóa bộ nhớ đệm
void clear_buffer();Tag » Arduino Uint32_t Size
-
Int32_t Actually 16 Bit With Atmega328p And Arduino
-
What Does Uint32_t Do? - Programming Questions - Arduino Forum
-
Uint16_t And Uint32_t Question! - Arduino Forum
-
Type Definition For Uint32_t - Programming Questions - Arduino Forum
-
Unsigned Int - Arduino Reference
-
Data Types In Arduino - Sparkfun Learn
-
Arduino-device-lib/pb_decode.c At Master - GitHub
-
Variables – C - Arduino Developer Resources
-
Reliably Read Serial Data In C++ [closed] - Arduino - Stack Overflow
-
Variable Types In Arduino IDE
-
Arduino Store Int Into EEPROM - The Robotics Back-End
-
Uint8 In C, Uint32_t Vs Unsigned Int, Uint32_t Arduino,
-
UInt32.MaxValue Field (System) - Microsoft Docs
-
.es/~alberto/arduino/SdBaseFile.cpp