>>Những thiết bị giúp cuộc sống trở nên thông minh hơn
I.Chuẩn bị :
1. Board arduino uno
2. Mạch L298N
3. 2 x Nút Bấm
4 . 1 Motor 12vdc
5. Nguồn 12 vdc
6. 2 trở 10k
7. 1x IR receved
II.Ứng dụng:
- Làm rèm cửa tự động
- https://youtu.be/9SZgd7-JKys
- Làm máy bơm nước tự động
- Làm Máy sát khuẩn tự động
- Làm ô tô điều khiển từ xa
....
1. Điều khiển động cơ thông bằng 2 nút bấm:
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
#define MAX_SPEED 255 //từ 0-255
#define MIN_SPEED 0
int BtnNext = 2;
#define BtnPrev 8
bool btien;
bool blui;
void setup()
{
Serial.begin(9600);
pinMode(BtnNext, INPUT);
pinMode(BtnPrev, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
btien = false;
blui = false;
}
void motor_1_Dung() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void motor_2_Dung() {
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void motor_1_Tien(int speed) { //speed: từ 0 - MAX_SPEED
speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
digitalWrite(IN1, HIGH);// chân này không có PWM
analogWrite(IN2, 255 - speed);
}
void motor_1_Lui(int speed) {
speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
digitalWrite(IN1, LOW);// chân này không có PWM
analogWrite(IN2, speed);
}
void loop()
{
int buttonStatusNext = digitalRead(BtnNext);
int buttonStatusPrev = digitalRead(BtnPrev);
if (buttonStatusNext != 0 && buttonStatusPrev == 0) {
Serial.println("tien");
motor_1_Tien(MAX_SPEED);
delay(1000);
}
else if (buttonStatusNext == 0 && buttonStatusPrev != 0) {
motor_1_Lui(MAX_SPEED);
Serial.println("Lui");
delay(1000);
} else {
Serial.println("Stop");
motor_1_Dung();
delay(1000);
}
}
2. Điều khiển động cơ bằng IR remote:
#include<IRremote.h>
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
#define MAX_SPEED 255 //từ 0-255
#define MIN_SPEED 0
int BtnNext = 2;
#define BtnPrev 3
const int receiverPin = 8;
IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv mới
decode_results results;// lưu giữ kết quả giải mã tín hiệu
bool btien;
bool blui;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //bat day nhan tin hieu IR
pinMode(BtnNext, INPUT);
pinMode(BtnPrev, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
btien = false;
blui = false;
}
void giaima() {
//Serial.println("HIHI");
if (irrecv.decode(&results)) // nếu nhận được tín hiệu
{
//Serial.println(results.value, HEX); // in ra Serial Monitor
delay(200);
irrecv.resume(); // nhận giá trị tiếp theo
}
}
void motor_1_Dung() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void motor_2_Dung() {
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void motor_1_Tien(int speed) { //speed: từ 0 - MAX_SPEED
speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
digitalWrite(IN1, HIGH);// chân này không có PWM
analogWrite(IN2, 255 - speed);
}
void motor_1_Lui(int speed) {
speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
digitalWrite(IN1, LOW);// chân này không có PWM
analogWrite(IN2, speed);
}
void dknutbam() {
int buttonStatusNext = digitalRead(BtnNext);
int buttonStatusPrev = digitalRead(BtnPrev);
if (buttonStatusNext != 0 && buttonStatusPrev == 0) {
Serial.println("tien");
motor_1_Tien(MAX_SPEED);
delay(1000);
}
else if (buttonStatusNext == 0 && buttonStatusPrev != 0) {
motor_1_Lui(MAX_SPEED);
Serial.println("Lui");
delay(1000);
} else {
Serial.println("Stop");
motor_1_Dung();
delay(1000);
}
}
void hamgiaima() {
switch (results.value) {
case 0x10EF807F://so1
Serial.println("tien");
motor_1_Tien(MAX_SPEED);
delay(1000);
break;
case 0x10EF40BF://so2
motor_1_Lui(MAX_SPEED);
Serial.println("Lui");
delay(1000);
break;
case 0x10EFC03F://so 3
Serial.println("Stop");
motor_1_Dung();
delay(1000);
break;
}
}
void loop()
{
giaima();
hamgiaima();
}
3. Điều khiển động cơ bằng iphone kết hợp vs 1 bộ điều khiển trung tâm
Thay vì sử dụng IR remote ta sử dụng Iphone để điều khiển . Nhưng kết hợp thêm bộ điều khiển trung tâm ở đây mình dùng thêm bộ điều khiển bam bam remote controller. Mục đích để nhận giải mã của remote , gửi chuỗi lên một server chung sau đó đẩy về qua mạng internet .
Về nguyên lý điều khiển tương tự Remote
(Updating....)
0 Post a Comment:
Post a Comment
Cảm ơn bạn đã chia sẻ ý kiến!
Chúc bạn có một ngày thật vui vẻ.