Hướng dẫn sử dụng nhiều button ngắt với 1 chân ngắt điều khiển tốc độ động cơ DC

Hôm trước có một bạn Comment hỏi hướng dẫn để sài trong bài share của mình nên mình mạn phép viết thêm 1 bài đơn giản để giúp các bạn hiểu rõ hơn cách này của mình :)

Ở đây đơn giản là mình sử dụng 3 button tương ứng với 3 tốc độ của động cơ. khi nhấn button bất kỳ, hàm ngắt được gọi lên rồi sau đó kiểm tra nút nào được nhấn và sẽ băm xung PWM điều khiển tốc độ động cơ tương ứng.

 

I. Ý nghĩa

Button 1 tốc độ là a, button 2 tốc độ là b, button 3 tốc độ là c.

Ngắt button có tác dụng rất nhiều khi các bạn làm việc với nhiều led 7seg hay led ma trận vì nó dùng ngắt nên nhạy khi nhấn vào, chống dội tốt và không làm mờ led 7seg và led ma trận.

Hôm sau mình sẽ làm 1 clip so sánh cho các bạn thấy sức mạnh của ngắt button với button có dội bằng code nhé :)

II. SƠ ĐỒ NỐI CHÂN

III. Code

int interruptPin = 2; //xem thêm tại http://arduino.vn/reference/attachinterrupt //Trên uno bạn chỉ có thể dùng chan số 2 và số 3 nhé :)

#define PWM  3

void setup()

{

	pinMode(8, INPUT);

	pinMode(9, INPUT);

	pinMode(10, INPUT);

	pinMode(PWM, OUTPUT);

	pinMode(interruptPin, INPUT_PULLUP);

	attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);

}

//hàm ngắt

void blink()

{

	delay(30);  //chống hiện tượng dội cho tất cả nút đang nhấn

	if( !digitalRead(8))
	{
		analogWrite(PWM, 50);
	}
	 //đọc giá trị từng chân xem chân nào đang nhấn.

	if( !digitalRead(9))
	{
		analogWrite(PWM, 100);
	}

	if( !digitalRead(10))
	{
		analogWrite(PWM, 150);

	}

}
void loop() {}

 

Youtube: 
Video của mình
Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
6 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ả

Ngắt nhiều button chỉ với 1 chân ngắt

Như chúng ta biết số lượng chân ngắt rất hạn chế trong các dòng vi điều khiển. khi sử dụng nhiều button để ngắt thì các chân ngắt khi sử dụng cho các việc còn lại sẽ rất phí. còn nếu viết hàm để xử lý chống dội vi điều khiển quét các hàm liên tục thì phung phí xung để làm những việc khác. Và khi làm với một hệ thống với rất nhiều nút nhấn và rất hạn chế việc delay thì phương pháp này của mình có thể sẽ giúp cho các bạn :)

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