Shortcut02 - Điều khiển Servo từ xa thông qua biến trở

Giới thiệu

Đây là loạt bài vắn tắt chia sẻ kinh nghiệm giúp các bạn có thể sử dụng các mudule cũng như tiếp cận code một cách ngắn gọn và dễ hiểu hơn smiley

Mục đích bài viết: Hướng dẫn điều khiển một Servo trong các dự án robot từ xa thông qua module NRF24 bằng biến trở cool

 

Công cụ

  1. Arduino: 2 mạch (bất kì).
  2. Moulde NRF24L01 (truyền/nhận).
  3. Servo bất kì 
  4. Biến trở (100k ôm)
  5. Dây nốitest board.

Lắp mạch

Mạch gửi

Mạch nhận

Chương trình

Mạch gửi

 

#include <SPI.h>

#include "RF24.h"
 
const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ để phát
RF24 radio(9,10); //thay 10 thành 53 với mega
int msg[3]; // tạo mảng int lưu giá trị nhận được (không dùng byte nhé vì max byte chỉ 256 giá trị trong khi giá trị truyền analog max 1024 giá trị 
const int bientro = A0; // chọn chân biến trở là A0

 void setup(){ 
  radio.begin();                     
  radio.setAutoAck(1);               
  radio.setRetries(1,1);             
  radio.setDataRate(RF24_1MBPS);    // Tốc độ truyền
  radio.setPALevel(RF24_PA_MAX);      // Dung lượng tối đa
  radio.setChannel(10);               // Đặt kênh
  radio.openWritingPipe(pipe);        // mở kênh
  Serial.begin(9600); // mở cổng Serial tiện debug
} 
 
void loop(){
  int value = analogRead(bientro); // đọc giá trị biến trở
  msg[0] = value; // gán mảng bằng giá trị đọc được
  radio.write(&msg, sizeof(msg)); // bắt đầu truyền dữ liệu
  Serial.println(*msg); // kiểm tra lệnh gửi hoặc có thể truyền vào msg[0]
  delay(50); // đợi 50ms gửi lần sau
}

 

Mạch nhận

#include "RF24.h"
 #include <Servo.h>      // Thư viện điều khiển servo
 
Servo myservo; // Khai báo đối tượng myservo dùng để điều khiển servo
const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ phát
RF24 radio(9,10);//thay 10 thành 53 với mega
int msg[3]; // tạo mảng int lưu giá trị nhận được (không dùng byte nhé vì max byte chỉ 256 giá trị trong khi giá trị truyền analog max 1024 giá trị)

 
void setup(){
  Serial.begin(9600);
  radio.begin();                     
  radio.setAutoAck(1);              
  radio.setDataRate(RF24_1MBPS);    // Tốc độ dữ liệu
  radio.setChannel(10);               // Đặt kênh
  radio.openReadingPipe(1,pipe);     
  radio.startListening();    
  myservo.attach(A0); // cài đặt chân A0 điều khiển servo        

}
 
void loop(){
  if (radio.available()){
    while (radio.available()){
      radio.read(&msg, sizeof(msg));
      int servoPos = map(msg[0], 0, 1023, 0, 179); // hàm map chuyển giá trị 0 đến 1023 về 0 đến 179 của servo
      myservo.write(servoPos);  // Cho servo quay một góc là servoPos độ
      Serial.println(servoPos); // kiểm tra góc tren Serial monitor
      delay(50); // đợi 50ms cho servo chuyển góc
     }
  }
}

Ở bài sau chúng ta sẽ thử sử dụng button để điều khiển servo từ xa nhé, sử dụng INPUT_PULLUP cool

 

Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
11 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Giới thiệu cảm biến ánh sáng và cách lập trình

Cảm biến ánh sáng sử dụng quang trở có khả năng thay đổi điện trở theo cường độ ánh sáng chiếu vào. Tín hiệu xuất ra của cảm biến là digital HIGH (5V) và LOW tượng trưng cho các trạng thái bật, tắt thiết bị điện tự động mà bạn không cần phải thao tác vào !

 
lên
19 thành viên đã đánh giá bài viết này hữu ích.

Đếm số lần nhấn button với led 7 đoạn

Hôm nay chúng ta sẽ học cách đếm số lần nhấn 1 button với Led 7 đoạn thay cho thư viện Serial.

lên
16 thành viên đã đánh giá bài viết này hữu ích.