Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 60 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
60
Dung lượng
2,68 MB
Nội dung
VI ĐIỀU KHIỂN Microcontroller Giáo viên giảng dạy: BTTT Biên soạn: NVAT I Thông số kỹ thuật Arduino Uno R3: - ATmega328P based Microcontroller Volt vận hành 5V Volt input 7V - 12V Digital pins: 14 Digital (PWM) pins: (pin có dấu ~) (3, 5, 6, 9, 10, 11) (8-bit: -> 255) Analog pins: (10-bit: -> 1023) DC current cho I/O pin: 20mA DC current sử dụng cho 3.3V pin: 50mA - Flash memory ~32KB, 0.5KB sử dụng boot loader SRAM 2KB EEPROM 1KB Clock pin (CLK) có tốc độ 16MHz Mỗi chu kỳ clock pin đẩy bit DATA pin… (không dạy) LED mạch dùng chung chân 13 II Arduino IDE: void setup(){} // hàm khởi tạo, chạy Arduino khởi động void loop(){} // lặp lặp lại sau hàm khởi tạo chạy Hàm I/O bản: Digital pin - pinMode(pin, mode) Thiết lập pinvận hành theo chế độ mode(INPUThoặc OUTPUT ) - digitalWrite(pin, value) Viết pingiá trị value(HIGHhoặc LOW ) - digitalRead(pin) Đọc giá trị pin Trả HIGHhoặc LOW Analog pin - analogReference(type)(cơ nói học cho biết, khơng ra) "Map" vùng giá trị volt từ analog input vào vùng giá trị volt internal _ 3.0v -> 1023 _ -> ~300 1.2V 0.0V Analog 0.0v _ Volt Internal -> 0 | Vùng giá trị Vd: Giả sử vùng giá trị volt từ analog input 1.2V, vùng giá trị DEFAULT 3.3 volt Vì chế Analog sử dụng việc viết Volt từ thấp tới cao để mô tả giá trị từ 0->1023, ta khơng viết tới 3.3V ta không đạt max 1023 Bằng cách chỉnh vùng giá trị internal 3.3V xuống thấp hơn, cao hơn, ta tận dụng tối ưu miền 1024 giá trị, thu giá trị đọc xác Mặc định type là DEFAULT - analogRead(pin) -C hỉ đọc pin Analog - Đọc giá trị trả số nguyên từ -> 1023 (2^10) - Sử dụng thiết bị A/D Converter, thiết bị có 10 bit, để đọc (thơng tin thêm) - analogWrite(pin, value) -C hỉ viết pin digital PWM (chân digital có dấu ~ trước) - Viết analog, viết đc từ 0->255 (2^8) - Sử dụng thiết bị PWM timer, thiết bị có bit, để viết (thơng tin thêm) Hàm I/O nâng cao: - shiftOut(dataPin, clockPin, bitOrder, value)(cơ nói hàm khó, bỏ qua được) shiftOut()có nhiệm vụ chuyển byte (gồm bit) bit Bit chuyển bit nằm bên trái (leftmost) từ bit nằm bên phải (rightmost) Các bit xuất chân dataPin sau chân clockPin pulsed (có mức điện HIGH, sau bị đẩy xuống LOW) Tham số: - dataPin: pin xuất tín hiệu (int) clockPin: pin dùng để xác nhận việc gửi bit dataPin (int) bitOrder: hai giá trị MSBFIRST LSBFIRST (Bắt đầu từ bit bên phải Bắt đầu từ bit bên trái nhất) value: liệu cần shiftOut (byte) shiftOut() xuất liệu kiểu byte Nếu bạn muốn xuất kiểu liệu lớn bạn phải shiftOut lần (hoặc nhiều hơn), lần bit Code nguồn hàm: void shiftOut( uint8_tdataPin, uint8_t c lockPin, u int8_t b itOrder, uint8_t v al) { uint8_t i; for ( i = 0; i < 8; i++) { if ( bitOrder == LSBFIRST ) d igitalWrite (dataPin, !!(val & (1 Include Library > // > *Add ZIP Library > Chọn file ZIP vừa tải // Lưu ý: Nếu khác Thư viện, code bên không chạy. # include int D HT_IN = 7; // chan Digital input cua sensor dht dht_sensor; void s etup() { Serial.begin( 9600 ); } void l oop() { int c heck = dht_sensor.read11(DHT_IN); // DHT11 float h = dht_sensor.humidity; // % am float t = dht_sensor.temperature; // nhiet C Serial p rint ("Do am: "); S erial p rint (h); Serial println (" %"); Serial p rint ("Nhiet do: "); S erial p rint (t); S erial println (" C"); delay (500); }