Bạn có thể làm mọi thứ với arduino !
arduino
12
White

Nguyen The Vinh viết ngày 13/03/2020

1. Giới thiệu

Bây giờ, nếu bạn muốn điều khiển bật tắt một bóng led, hoặc là đảo chiều một cái motor, hay là sử dụng một cảm biến nào đó, hoặc nói đơn giản là bạn muốn điều khiển một thứ gì đó liên quan đến điện tử thì bạn cần mạch arduino. Thứ gì đó liên quan đến điện tử thì arduio sẽ giúp bạn rất nhiều !

  • Hiện nay không chỉ ở Việt Nam mà con trên thế giới arduino được biết đến rất nhiều bởi sự đa dạng và tính sáng tạo của nó. Sức mạnh của nó càng ngày được thể hiện qua thời gian với nhưng ứng dụng mở
  • Arduino có dùng để áp dụng rất nhiều vào cuộc sống thường ngày như làm một số động tác điều khiển đèn led, motor hoặc cao hơn là các dự án robot, cảm biến ...

2. Cài đặt IDE 1

  • Trước tiên, bạn cần cài Java Runtime Environment (JRE), nếu bạn không cài JRE thì thương sẽ dẫn đến tình trạng không vào được IDE

  • Để tải được arduino IDE bạn cần vào đường link này : Arduino

3.Một số code .

IDE có cung cấp cho chúng ta rất nhiều ví dụ từ đơn giản đến phức tạp, có vô vàn vi dú về cảm biến, Led, .... Ở mục file=> examples=> chọn bài. Về cơ bản thì Code Arduino cũng giống như code C++ và C nên nó khá đơn giản với nhưng người đã từng họ c và c++ rùi

a. Plink Led

  • Plink Led tức là làm led nhấp nhấy theo một nhịp nào đó.
void setup{
pinMode(13,OUTPUT);
// đây là phần khởi tạo, ở đây mình sử dùng 13 tức là LED mặc định của arduino được tích hợp sẵn trong mạch rùi
}
void loop{
// đây là hàm được lặp đi lặp lại xuyên xuất khi chạy code
digitalWrite(13,HIGH); //  nó sẽ làm đèn led sáng lên 
delay(1000); // chờ 1 giây ở đây nó dùng ms nên ở đây là 1000
digitalWrite(13,LOW);// nó sẽ làm cho đèn tắt đi 
delay(1000);
}
  • Ở đây thay vì dùng pin thứ 13 ta có thể dùng bất cứ pin nào có trên Board, bạn cần cắm chân âm của con led vào cổng GND và chân dường thì cắm vào một pin bất kì là xong thui.

b.Pull switch

  • pull switch tức là bạn có thể tạo event qua việc nhấn công tắc
void setup{
pinMode(13,OUTPUT); 
pinMode(3,INPUT):// INPUT là một kiểu mới thường dùng để khởi tạo các cảm biến nút nhất 
}
void loop{
if(digitalRead(3)==0)// 0 tức là digital ở pin 3 là LOW => đang nhấn nút
{
while(digitalRead(3)==0)// vẫn đang nhấn nút khi nào thả ra thì mới chạy code ở phía sau
digitalWrite(13,HIGH); 
delay(1000); 
digitalWrite(13,LOW);
delay(1000);
}
}
  • Code ở trên là khi nào nhấn nút rồi thả ra thì đèn sẽ nhấp nháy còn nếu dí nút thì không nhấp nháy
  • digitalRead() là hàm đọc tín hiệu từ chân pin mà ta truyền vào.

c. Rheostat analog

  • BIến trở có 3 chân đó là VCC, GND, Analog(AOUT,AC). GND=>GND, VCC=>5V, Analog có thể nối vào A0.

Bản chất của biến trở là biến dổi trở khi ta xoay nó làm cho dòng điện đi ra yếu hơn hoặc mạnh hơn nên từ đó ta có thể dùng để điều khiển rất nhiều thứ từ biến trở.

void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);//câu lệnh khởi tạo Terminal ở port 9600
}
void loop (){
Serial.println(analogRead(A0)); // nó sẽ in ra trở ở cổng A0 tức là sẽ cho ta biết ta xoay biến trở vào bên nào 
if(analogRead(A0>500)){
digitalWrite(13,HIGH);//tức là khi nào trở ở cổng A0 > 500 => đèn sáng 
}
else{
digitalWrite(13,LOW);
}
}
  • Có thể ứng dụng rất nhiều ở đoạn code trên như làm cánh tay robot làm theo, hoặc là điều khiển motor...

d. Viết Code một số cảm biến thông dụng

  • Có rất nhiều cảm biến thông dụng như là cảm biến ánh sáng, cảm biến gas, cảm biến âm thanh....

  • Có rất nhiều cảm biến nhưng hầu hết các cảm biến ra chỉ sử dụng 3 chân chính như là ở con biến trở : VCC , GND, Analog(AOUT, AC)

  • về cơ bản các bạn sẽ test điện trở ở Analog khi đã tác đông môi trường của cảm biến, rồi tạo event thôi !

e.AnalogWrite()

  • AnalogWrite() là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu analog (phát xung PWM). Người ta thường điều khiển mức sáng tối của đèn LED hay hướng quay của động cơ servo bằng cách phát xung PWM như thế này.
  • Nó có thể dùng để điều khiển độ nhanh chậm của motor và điều khiển led RGB
  • Bạn không cần gọi hàm pinMode() để đặt chế độ OUTPUT cho chân sẽ dùng để phát xung PWM trên mạch Arduino.
  • Khi dùng hàm analogWrite(_Pin,Value) thí pin sẽ là một chân bất kì value sẽ khoảng từ 0->255 <=> với lại là V : 0v->5V => nó có thể dùng để điều khiển rất nhiều thứ

  • Code dưới đây là code điều khiển led RGB chuyển qua lại rất nhiều màu .

void setup(){}

void loop(){
//led RGB sẽ có 4 chân red, blue, green, Anode(+)
// 3 chân read, blue, green chúng ta sẽ nối vào 3 chân bất kì bạn thích.
// ở đây mình lấy 3 chân :3, 5, 6.
// để điều khiển led chuyển màu bạn chỉ cần truyền điện khác nhau vào từng pin khác nhau thì sẽ chuyển màu thui
for(int i = 0; i < 255;i ++){
analogWrite(3,i);
analogWrite(5,i);
analogWrite(6,i);
delay(100);
}
for(int i = 255; i > 255 ; i --){
analogWrite(3,i);
analogWrite(5,i);
analogWrite(6,i);
delay(100);
}
}

g. LCD

  • LCD có một thư viện riêng trong arduino, nếu bạn muốn code LCD thì bạn cần tải thư viện sau : LiquidCrystal_I2C.
  • để có thể add thư viện này vào IDE bạn vào Sketchs=>Includes Library=> add zip...
  • Sau khi add được thư viện vào IDE bạn có thể include nó vào project rồi dùng thôi !
  • LCD có rất nhiều _pin nếu chúng ta dùng nhiều pin như thế thì sẽ khiến board của chúng ta hết _pin, nên khi chạy LCD chúng ta sẽ cần một mạch support để biến LCD nhiều pin trở thành chỉ con 4 _pin đó là : VCC,GND,SCL,SDA, các chân nối thứ tự là 5V,GND,A4,A5 (bắt buộc)
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//16 là độ dài còn 2 là độ cao của lcd
void setup(){
lcd.begin();// khởi tạo lcd
lcd.backlight(); // màn hình phía sau sáng lên
lcd.clear();//xóa toàn bộ dữ liệu trên màn hình lcd
lcd.setCursor(0,0)// tức là cho điểm khởi đầu là 0,0
lcd.print("Hello World!");//in ra hello world ! trên LCD
}

0x27 là address của LCD, mỗi LCD sẽ có một address khác nhau. để có được address này chúng ta cần chạy code sau :

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}

*code được trích từ https://playground.arduino.cc/Main/I2cScanner/ *

h.Servo

  • Servo là một loại động cơ chuyển động theo kiểu radar, nó xoay tối đa khoảng 120 ~~ 180 độ.

  • có 3 loại servo chính đó là :

  • Servo xanh (1,8kg ~~ 2kg)

  • Servo đen nhạt (5,4kg~~6kg)

  • Servo đen (8,6kg ~~ 10kg)

    dù có nhiều loại servo nhưng hầu như servo đều có 3 chân: VCC, GND, chân tín hiệu. để có thể điều khiển được servo bận cần add thư viện servo vào IDE, vì thư viện này có sẵn trong IDE nên chúng ta có thể dùng nó để import vào luôn project của chúng ta

#include <Servo.h>
Servo myServo
void setup(){
myServo.attach(9)// ở đây mình dùng chân tín hiệu là _pin 9
}
void loop(){
myServo.write(90);// ở đây là góc độ bạn muốn servo quay 
// ở đây bạn có thể ứng dụng để làm các bàn tay robot, qua biến trở kết hợp với servo
}

4.Tổng kết.

  • Arduino hiện đang chứng tỏ được giá trị của nó qua thời gian, thời đại càng phát triển con người cần nhưng nhu cầu cao hơn do đó arduino cũng sẽ càng ngày càng phát triển nhờ sự đa dạng của nó.

Mọi người ra đường nhớ đeo khẩu trang vào nhé !Cảm ơn mọi người đã đọc bài của mình :smile:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Nguyen The Vinh

1 bài viết.
19 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
9 3
Như thường lệ, một dòng quảng cáo, bài được đăng lại từ blog của mình: https://thefullsnack.com/posts/mechkeyboardsecondpart.html :grin: _Bạn đa...
Huy Trần viết hơn 1 năm trước
9 3
White
14 1
Là một lập trình viên, bàn phím là một vật dụng bạn phải sờ vào hằng ngày, thậm chí số lần bạn sờ nó còn nhiều hơn số lần bạn sờ vào vợ hoặc bạn gá...
Huy Trần viết hơn 2 năm trước
14 1
White
14 6
Giới thiệu tự chế một USB Rubber Ducky từ Arduino Pro Micro Educational purpose bài viết có mục đính học tập, chia sẻ Vừa nãy đọc xong bài viết t...
Đoàn Ngọc Huân viết hơn 1 năm trước
14 6
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
19 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!