---------Code Start-------------------------------------------------------------------
/* Arduino Mạch báo trộm phát loa dùng cảm biến chuyển động.
by Thuthuatarduino.blogspot.com 14/08/2017.
*/
#define LED 12 // chọn chân 12 báo hiệu LED.
#define CB 2 // chọn ngõ tín hiệu vào cho Cảm biến.
#define LOA 3 //chọn chân cho chuông khi có đột nhập.
void setup()
{
// Cấu hình các chân điều khiển.
pinMode(LED, OUTPUT);
pinMode(CB, INPUT);
pinMode(LOA, OUTPUT);
}
void loop()
{
if (digitalRead(CB) == HIGH) // nếu chân nối Cảm biến ở mức cao (có người).
{
digitalWrite(LED, HIGH); // bật đèn LED.
analogWrite(LOA, 128); // phát LOA cảnh báo.
delay(1000); // thời gian chuông kêu và đèn. sáng.
}
else
{
// Chân nối cảm biến ở mức thấp thì tắt đèn và tắt loa.
digitalWrite(LED, LOW);
digitalWrite(LOA, LOW);
delay(300);
}
}
---------Code End-------------------------------------------------------------------
CƠ BẢN 1: Khi nhấn nút LED sáng rồi tắt.
---------Code Start-------------------------------------------------------------------
/* Arduino Code Điều khiển LED bằng nút bấm cơ bản 1.
by Thuthuatarduino.blogspot.com 03/08/2017.
*/
#define LED 7 // định nghĩa chân digital nối với led.
#define BUTTON 5 // định nghĩa chân digital nối với nút bấm.
void setup() {
pinMode(LED, OUTPUT); // thiết lập LED OUTPUT.
pinMode(BUTTON, INPUT); // thiết lập BUTTON là INPUT.
}
void loop() {
// Nếu chân nối với nút bấm ở mức HIGH (bấm nút) thì LED sáng.
if(digitalRead(BUTTON) == HIGH) {
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}
}
---------Code End-------------------------------------------------------------------
CƠ BẢN 2: Khi nhấn nút LED nhấp nháy 3 lần rồi tắt.
---------Code Start--------------------------------------------------------------
#define LED 7 // định nghĩa chân digital nối với led.
#define BUTTON 5 // định nghĩa chân digital nối với nút bấm.
void setup() {
pinMode(LED, OUTPUT); // thiết lập LED OUTPUT.
pinMode(BUTTON, INPUT); // thiết lập BUTTON là INPUT.
}
void loop() {
// Nếu chân nối với nút bấm ở mức HIGH thì chạy vòng lặp for.
if(digitalRead(BUTTON) == HIGH) {
// Vòng lặp làm LED nhấp nháy 3 lần.
for(int i=1; i<4; i++){
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
}
}
---------Code End--------------------------------------------------------------
CƠ BẢN 3: Tắt và mở LED bằng 1 nút bấm.
---------Code Start-------------------------------------------------------------------
/* Arduino Code Điều khiển LED bằng nút bấm cơ bản 1.
by Thuthuatarduino.blogspot.com 03/08/2017.
*/
#define LED 7 // định nghĩa chân digital nối với led.
#define BUTTON 5 // định nghĩa chân digital nối với nút bấm.
int LEDstatus = 0; // biến lưu trạng thái LED trước đó.
void setup() {
pinMode(LED, OUTPUT); // thiết lập LED OUTPUT.
pinMode(BUTTON, INPUT); // thiết lập BUTTON là INPUT.
}
void loop() {
if(digitalRead(BUTTON) == HIGH && LEDstatus == 0) {
digitalWrite(LED, HIGH);
delay(1000); // Chờ buông tay.
LEDstatus = 1;
}
if(digitalRead(BUTTON) == HIGH && LEDstatus == 1) {
digitalWrite(LED, LOW);
delay(1000); // Chờ buông tay.
LEDstatus = 0;
}
}
---------Code End---------------------------------------------------------------
NÂNG CAO 1: Khi nhấn nút thì 3 Led luân phiên nhấp nháy.
---------Code Start-------------------------------------------------------------------
/* Arduino Code Điều khiển LED bằng nút bấm
by Thuthuatarduino.blogspot.com 03/08/2017.
*/
#define LED1 9 // định nghĩa chân digital nối với led.
#define LED2 8
#define LED3 7
#define BUTTON 5 // định nghĩa chân digital nối với nút bấm.
int del = 500;
void setup() {
// thiết lập chân nối led là OUTPUT và nối nút bấm là INPUT.
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
// Nếu chân nối với nút bấm ở mức HIGH thì thực hiện vòng lặp for.
if(digitalRead(BUTTON) == HIGH){
for(int a=1; a<6; a++){
digitalWrite(LED1, HIGH);
delay(del);
digitalWrite(LED1, LOW);
delay(del);
digitalWrite(LED2, HIGH);
delay(del);
digitalWrite(LED2, LOW);
delay(del);
digitalWrite(LED3, HIGH);
delay(del);
digitalWrite(LED3, LOW);
delay(del);
}
}
else
{
// Ngược lại không điều khiển gì cả.
}
}
---------Code End---------------------------------------------------------------
NÂNG CAO 2: 1 led đang nhấp nháy khi nhấn nút thì 3 Led luân phiên nhấp nháy.
---------Code Start-------------------------------------------------------------------
/* Arduino Code Điều khiển LED bằng nút bấm
by Thuthuatarduino.blogspot.com 03/08/2017.
*/
#define LED1 9 // định nghĩa chân digital nối với led.
#define LED2 8
#define LED3 7
#define BUTTON 5 // định nghĩa chân digital nối với nút bấm.
int del = 500;
void setup() {
// thiết lập chân nối led là OUTPUT và nối nút bấm là INPUT
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
// Nếu chân nối với nút bấm ở mức HIGH (bấm nút) thì thực hiện vòng lặp for.
if(digitalRead(BUTTON) == HIGH){
for(int a=1; a<6; a++){
digitalWrite(LED1, HIGH);
delay(del);
digitalWrite(LED1, LOW);
delay(del);
digitalWrite(LED2, HIGH);
delay(del);
digitalWrite(LED2, LOW);
delay(del);
digitalWrite(LED3, HIGH);
delay(del);
digitalWrite(LED3, LOW);
delay(del);
}
}
else
{
// Ngược lại cho LED1 nhấp nháy.
digitalWrite(LED1, HIGH);
delay(del);
digitalWrite(LED1, LOW);
delay(200);
}
}
---------Code End-------------------------------------------------------------
1. Dự kiến phân phối thời lượng giảng dạy.
- Khóa học kéo dài 1 tháng 15 ngày (6 tuần). Dạy 3 buổi / tuần (18 buổi)
- Mỗi buổi kéo dài 90 phút (2 tiết).
2. Chi tiết nội dung giảng dạy từng buổi như sau.
TUẦN 1:
- Buổi 1:
- Giới thiệu sơ lược về Arduino, bạn có thể làm gì để ứng dụng Arduino trong đời sống.
- Cho học viên xem các Video về các project ứng dụng Arduino.
- Hỏi và đáp các câu hỏi xoay quanh Arduino.
- Buổi 2:
- Hướng dẫn học viên cài đặt phần mềm Java-Platform-SE; Arduino-IDE; Driver USB-Serial-CH340.
- Kết nối board Arduino với máy tính để nạp và chạy thử chương trình đầu tiên "Làm một LED nhấp nháy".
- Phân tích cơ bản các thành phần trong một chương trình lập trình cho Arduino. (Khai báo; Cấu hình; Thân chương trình).
- Buổi 3:
- Nghỉ
TUẦN 2:
- Buổi 4:
- Hai mô hình chức năng cơ bản nhất của Arduino là: MH1: điều khiển các I/O bằng tín hiệu đầu ra; MH2: Nhận tín hiệu đầu vào - Xử lý - điều khiển các I/O bằng tín hiệu đầu ra.
- Điện tử cơ bản: điện áp, dòng điện, công xuất là gì? Các linh kiện như đèn Led (màu, cực + -, dòng 10mA), điện trở (đọc mã màu), diode.
- Giải thích sơ đồ mạch điện của dự án 1 "Làm một LED nhấp nháy" (chân digital 13 - điện trở - led).
- Học viên tự gõ code và nạp chương trình cho dự án 1 "Làm một LED nhấp nháy". Học viên tự điều chỉnh các thông số, thêm các khai báo, nạp chạy thử và nhận xét.
- Hỏi đáp nâng cao.
- Buổi 5:
- Thực hiện dự án 2 "Điều khiển 5 LED nhấp nháy theo dạng sóng " (học viên tự kết nối mạch, tự gõ code theo cách 1 và nạp cho mạch).
- Giới thiệu vòng lặp for() (cú pháp, cách hoạt động, chức năng).
- Viết lại chương trình cho dự án 2 sử dụng vòng lặp for(). Học viên tự nhận xét về ích lợi khi sử dụng vòng lặp for().
- Mở rộng chương trình điều khiển 8 Led (lắp thêm linh kiện, bổ sung code) => nạp và chạy thử.
- Hỏi đáp nâng cao.
- Buổi 6:
TUẦN 3:
- Buổi 7:
- Ôn tập / Hỏi đáp nâng cao.
- Buổi 8:
- Điện tử cơ bản. Nhắc lại mô hình 3 bước Arduino Vào - Xử lý - Ra.
- Nút nhấn điều khiển 3 led chạy các kiểu khác nhau.
- Nút nhấn điều khiển Loa phát âm thanh. (nếu còn tg).
- Buổi 9:
- Giới thiệu sơ lược về các loại cảm biến.
- Cảm biến "ánh sáng" => điều khiển đèn Led tắt hay sáng.
TUẦN 4:
- Buổi 10:
- Buổi 11:
- Buổi 12:
TUẦN 5:
- Buổi 13:
- Buổi 14:
- Buổi 15:
TUẦN 6:
- Buổi 16:
- Buổi 17:
- Buổi 18:
CÁCH 1:
---------Code Start-------------------------------------------------------------------
/* Arduino Code Điều khiển động cơ Servo
by Thuthuatarduino.blogspot.com 02/07/2017.
*/
#include <Servo.h> // Chèn thư viện điều khiển động cơ Servo.
Servo myservo; // Đặt tên động cơ là myservo.
void setup()
{
myservo.attach(3); // Chân digital 3 điều khiển động cơ.
}
void loop() {
myservo.write(180); // Quay động cơ về vị trí 180 độ.
delay(1000);
myservo.write(90); // Quay động cơ về vị trí 90 độ.
delay(1000);
myservo.write(0); // Quay động cơ về vị trí 0 độ (ban đầu).
delay(1000);
}
---------Code End-------------------------------------------------------------------
CÁCH 1:
---------Code Start-------------------------------------------------------------------
/* Arduino Code làm 1 LED sáng tăng dần rồi sáng giảm dần
by Thuthuatarduino.blogspot.com 01/07/2017.
*/
int del=5; // biến delay.
void setup()
{
pinMode(3, OUTPUT); // Chân 3 PWM nối với LED.
}
void loop()
{
// Tăng dần độ rộng xung từ 0 đến 255.
for(int a=0; a<256; a++)
{
analogWrite(3, a);
delay(del);
}
// Giảm dần độ rộng xung từ 255 về 0.
for(int a=255; a>=0; a--)
{
analogWrite(3, a);
delay(del);
}
delay(200);
}
---------Code End-------------------------------------------------------------------
**Chú ý: tăng hay giảm giá trị biến del để tăng nhanh hay giảm nhanh tốc độ sáng dần, mờ dần của LED.
CÁCH 2: Định nghĩa chân PWM nối với LED.
---------Code Start-------------------------------------------------------------------
/* Arduino Code làm 1 LED sáng tăng dần rồi sáng giảm dần
by Thuthuatarduino.blogspot.com 01/07/2017.
*/
#define LED 3 // Chân 3, 6, 9, 10, 11 là các chân PWM.
int del=5; // biến delay.
void setup()
{
pinMode(LED, OUTPUT); // Chân 3 PWM nối với LED.
}
void loop()
{
// Tăng dần độ rộng xung từ 0 đến 255.
for(int a=0; a<256; a++)
{
analogWrite(LED, a);
delay(del);
}
// Giảm dần độ rộng xung từ 255 về 0.
for(int a=255; a>=0; a--)
{
analogWrite(LED, a);
delay(del);
}
delay(200);
}
---------Code End-------------------------------------------------------------------
NÂNG CAO 1:
---------Code Start-------------------------------------------------------------------
/* Arduino Code điều khiển 5 LED lần lượt sáng tăng dần rồi tắt.
by Thuthuatarduino.blogspot.com 07/08/2017.
*/
#define LED1 3
#define LED2 5
#define LED3 6
#define LED4 9
#define LED5 10
int del = 5;
void setup() {
// thiết lặp các chân điều khiển là OUTPUT.
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
}
void loop() {
// LED1 sáng tăng dần rồi tắt.
for(int i=0; i<256; i++){
analogWrite(LED1, i);
delay(del);
}
analogWrite(LED1, 0); // tắt LED1.
// LED2 sáng tăng dần rồi tắt.
for(int i=0; i<256; i++){
analogWrite(LED2, i);
delay(del);
}
analogWrite(LED2, 0);
// LED3 sáng tăng dần rồi tắt.
for(int i=0; i<256; i++){
analogWrite(LED3, i);
delay(del);
}
analogWrite(LED3, 0);
// LED4 sáng tăng dần rồi tắt.
for(int i=0; i<256; i++){
analogWrite(LED4, i);
delay(del);
}
analogWrite(LED4, 0);
// LED5 sáng tăng dần rồi tắt.
for(int i=0; i<256; i++){
analogWrite(LED5, i);
delay(del);
}
analogWrite(LED5, 0);
}
---------Code End-------------------------------------------------------------------
NÂNG CAO 2:
NÂNG CAO 3:
CÁCH 1:
---------Code Start-------------------------------------------------------------------
/* Arduino Code làm 5 led nhấp nháy theo dạng sóng
by Thuthuatarduino.blogspot.com 31/07/2017
*/
void setup()
{
pinMode(2, OUTPUT); // LED 1 nối vào chân digital 2
pinMode(3, OUTPUT); // tương tự LED 2 đến LED 5
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH); // Bật LED 1
delay(500); // Chờ trong 0.5 giây
digitalWrite(2, LOW); // Tắt LED 1
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
}
---------Code End-------------------------------------------------------------------
CÁCH 2: Sử dụng vòng lặp For và biến del.
---------Code Start-------------------------------------------------------------------
/* Arduino Code làm 5 led nhấp nháy theo dạng sóng
by Thuthuatarduino.blogspot.com 31/07/2017
*/
int del = 500; // biến del
void setup()
{
pinMode(2, OUTPUT); // LED 1 nối vào chân digital 2
pinMode(3, OUTPUT); // tương tự LED 2 đến LED 5
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop()
{
for (int a=2; a<7; a++)
{
digitalWrite(a, HIGH);
delay(del);
digitalWrite(a, LOW);
delay(del);
}
for (int a=5; a>1; a--)
{
digitalWrite(a, HIGH);
delay(del);
digitalWrite(a, LOW);
delay(del);
}
}
---------Code End-------------------------------------------------------------------
CÁCH 1:
---------Code Start-------------------------------------------------------------------
/* Arduino Code làm một led nhấp nháy.
by Thuthuatarduino.blogspot.com 30/07/2017
*/
void setup()
{
pinMode(13, OUTPUT); // đặt chân digital 13 làm chân output.
}
void loop()
{
digitalWrite(13, HIGH); // bật chân digital 13 lên mứt 5V.
delay(1000); // chờ trong 1 giây.
digitalWrite(13, LOW); // tắt chân digital 13 xuống mứt 0V.
delay(1000); // chờ trong 1 giây.
}
---------Code End-------------------------------------------------------------------
CÁCH 2: (Đặt nhãn cho chân 13 và dùng biến del).
---------Code Start-------------------------------------------------------------------
/* Arduino Code làm một led nhấp nháy.
by Thuthuatarduino.blogspot.com 30/07/2017
*/
# define LED 13 // Định nghĩa chân 13 nối với LED.
int del = 1000; // Dùng biến del chứa giá trị delay.
void setup()
{
pinMode(LED, OUTPUT); // đặt chân digital 13 làm chân output.
}
void loop()
{
digitalWrite(LED, HIGH); // bật chân digital 13 lên mứt 5V.
delay(del); // chờ trong del giây.
digitalWrite(LED, LOW); // tắt chân LED xuống mứt 0V.
delay(del); // chờ trong del giây.
}
---------Code End-------------------------------------------------------------------
Ích lợi của cách 2: Thay đổi định nghĩa chân nối với LED và thay đổi thời gian LED nhấp nháy một cách nhanh chóng.