You are on page 1of 5

TỔNG QUAN

Input và Output ( 4, 5 và 6).


Arduino Uno có 14 chân digital với chức năng input và output sử dụng các hàm
pinMode(), digitalWrite() và digitalRead()
Chân analog có thể đọc được các gtrị từ 0 đến 5V; tương ứng các số từ 0 đến 1023 (hơn 1s)
Nếu 2,5V thì delayVR sẽ là 511. // btrở sẽ chỉnh volt trên chân A0 :
5V -->1023 ( ? =511ms)
2,5v--> ?
Cũng trên 14 chân digital này chúng ta còn một số chân chức năng đó là:
Serial : chân 0 (Rx ), chân 1 ( Tx). Hai chân này dùng để truyền (Tx) và nhận (Rx)
dữ liêu nối tiếp TTL.
PWM (pulse width modulation): các chân 3, 5, 6, 9, 10, 11 trên bo mạch có dấu “~”
SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK), hổ trợ giao tiếp theo chuẩn SPI.
I2C: Arduino hỗ trợ giao tiếp theo chuẩn I2C. Các chân A4 (SDA) và A5 (SCL) cho
phép chúng tao giao tiếp giửa Arduino với các linh kiện có chuẩn giao tiếp là I2C.
Arduino IDE Menu:
 Sketch:
Examples : chứa code mẫu như: cách sử dụng các chân digital, analog, sensor …
 Tool memu:
Board : các bạn cần phải lựa chọn bo mạch cho phù hợp với loại bo mà bạn sử dụng
Serial Port: chọn cổng Com của Arduino. Chọn sai thì ko thể nạp code cho Arduino được.
Bài 1. Led nhấp nháy.
Tạo File Hex. File/ Preferences/.check vào compilation và OK.
pin : là vị trí chân digital.
pinMode(pin,Mode);
Mode: là chế độ vào ( INPUT), ra (OUTPUT).
Ví dụ: pinMode(9, OUTPUT); hoặc int ledPin = 9;
void setup() { pinMode(ledPin, OUTPUT); }
void loop() { //Vòng lặp vô hạn
digitalWrite(ledPin, HIGH); // xuất ra chân 9 là 5V (HIGH)
delay(1000); // 1000ms = 1s

1
Bài 2. Đèn sáng khi nhấn phím.
Khai báo: const int buttonPin = 2; // Phím nhấn vtrị chân số 2

const int ledPin = 13; // Led ở chân số 13


int buttonState = LOW; // biến trạng thái khai báo
settup(){ // vào , ra
buttonState = digitalRead(buttonPin); // Gán giá trị đọc dc ở chân buttonPin cho
biến buttonState
// buttonState có giá trị 0 (không nhấn) or 1 (được nhấn).
- Hàm digitalRead: text được các chân Digital đang ở mức cao hay thấp.
if (buttonState == HIGH) {
Bật led:
digitalWrite(ledPin, HIGH); }
- Lệnh ktra có nhấn nút hay ko: Nếu
else {
Tắt led:
digitalWrite(ledPin, LOW); }
Bài 3. Led sáng dần từ led 1 đến led 10 và ngược lại.
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Khai báo sử dụng 10 vtrí chân led
int donvi = 1 ;
int currentLED = 0; // khai báo 2 biến
setup() { // dùng vòng lặp đ/n Mode cho các chân led
for (int x=0; x<10; x++) { // Khai báo biến x là int ,nếu x<10
pinMode(ledPin[x], OUTPUT);} } // thì chân ledPin[x] xuất ra
Chú ý: for (int x=0; x<10; x++) {
// Tắt tất cả led
digitalWrite(ledPin[x], LOW);}
digitalWrite(ledPin[currentLED], HIGH); // sáng led đầu tiên, led chân số 4 sẽ sáng
Vì currentLED = 0 --> ledPin[x]=4 (chân đầu tiên)

currentLED += direction; // tăng led sáng hiện tại lên 1 đơn vị


if (currentLED == 9) {direction = -1;}
// chiều sáng led tăng hay giảm dần.
if (currentLED == 0) {direction = 1 ;}

2
Bài 4. Led sáng dần và ngược lại có thời gian delay(thay đổi) được.
-Dùng biến trở chỉnh t/g delay
// Khai báo vtrí chân btrở (VR kết nối tại A0[analog chân 0]) : int VRPin=0;
int delayVR=anologRead(VRPin) ; // đọc gtrị analog từ chân A0 và gán cho biến
delay(delayVR);

Bài 5. Điều khiển tốc độ động cơ bằng PWM (điều chỉnh độ rộng xung,
thay đổi độ rộng chuỗi xung , thay đổi Vout).
Khai báo: int potPin = 0; //btrở kết nối chân A0
int transistorPin = 9; // transistor knối chân 9
int potValue = 0 ; // chứa gtrị từ A0
analogWrite(Pin,Value); // tạo ra PWM. Pin là chân có PWM; Value gtrị từ 0 đến 255
(Arduino có PWM ở các chân 3,5,6,9,10,11
VRvalue=analogRead(potpin)/4 ; // để đặt gtrị 0-->255 ( nguyên là 1023 : 0-->1023/4)
analogWrite(transistorPin,VRvalue); // tạo PWM trên chân 9.
Bài 6. Điều khiển động cơ bằng L293D.
#define SWPin2 // đ/n chân sẽ sử dụng trên Arduino
int Mspeed=0 // Khai báo biến chứa tốc độ đọc từ btrở.
Mspeed=analogRead(VRpin)/4 ; // đọc gtrị A0 và gán biến
analogWrite(speedpin,Mspeed); //speedPin=9, chân En1 IC, thiết lập tốc độ động cơ
if (dighitalRead(SWpin)) // Nếu ctắc bật Pin1=low ; Pin2=High. Động cơ quay ngc đồng hồ
{ dighitalWrite(motorPin1,low);
dighitalWrite(motorPin2,High); }
Ese { // Nếu ctắc ko bật --> motor quay cùng chiều kim đồng hồ.
dighitalWrite(motorPin1,High);
dighitalWrite(motorPin2,low); }

Bài 7. LCD 16x2


#include <tenthuvien.h>
#include <LiquidCrystal.h>
LiquidCrystal Object(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.begin(16,2);
lcd.clear();
lcd.print("HV HANG KHONG");
lcd.nodisplay();
lcd.display();

3
lcd.setCursor(10,1); // thiet lap con tro cot 10 hang thu 1
lcd.print("10,1");
Để tạo một ký tự thì chúng ta dùng một mãng gồm 8 phần tử, mỗi phần tử là 1 byte,
nhưng chỉ sử dụng 5 bit thấp của 1 byte để biểu diễn ký tự đó.

byte happy[8] = { //tạo chữ “ô”


B01110,
B10001,
B00000,
B01110,
B10001,
B10001,
B01110,
B00000 };

4
Bài 8. Đo nhiệt độ mt dùng LM35D hiển thị LCD và Serial Monitor.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // dinh nghia chan cho LCD
int maxC=0, minC=100;
int scale = 1;
int buttonPin=8; //chan ket noi voi phim nhan
Setup()
analogReference(INTERNAL); //Khai báo đ.áp tham chiếu cho bộ chđổi ADC bên trong
Arduino uno là 1,1V (giá trị đ.áp tham chiếu nội mặc định của Arduino uno)
- Bộ ADC gồm 10 bit tức là 1084 mức
10mV/1'C = 0,01/1'C (' là độ) --> Volt/nhiệt độ --> cứ 1 mức chđổi của ADC
có 1,1V có 1024 --> (1mức) là 1,1/1024 volt

0,01V --> 1'C ,suy ra: "?'' =0,10742188'C


1,1/1024V --> ? 'C
- int sensor =analogRead(0); // Đọc gtrị ở chân A0 và gán biến( gtrị nằm 0 đến 1023)
(Để tính chxác nhân với 0,10742188 --> int temp=sensor*0.10742188

You might also like