Monday, August 14, 2017

Coding - Mạch báo trộm phát loa dùng cảm biến chuyển động (Cơ bản 7)


---------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------------------------------------------------------------------- 

Wednesday, August 2, 2017

Coding - Điều khiển Led bằng nút bấm (Cơ bản 5)

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 21 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-------------------------------------------------------------


Sunday, July 30, 2017

Phân phối chương trình "Lớp Arduino cơ bản". (NỘI BỘ)

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:

  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.
  2. Cho học viên xem các Video về các project ứng dụng Arduino.
  3. Hỏi và đáp các câu hỏi xoay quanh Arduino.

- Buổi 2:

  1. Hướng dẫn học viên cài đặt phần mềm Java-Platform-SE; Arduino-IDE; Driver USB-Serial-CH340.
  2. 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".
  3. 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:

  1. Nghỉ

TUẦN 2:

Buổi 4:

  1. 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.
  2. Đ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.
  3. 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).
  4. 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.
  5. Hỏi đáp nâng cao.

Buổi 5:
  1.  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).
  2. Giới thiệu vòng lặp for() (cú pháp, cách hoạt động, chức năng).
  3. 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().
  4. 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ử.
  5. Hỏi đáp nâng cao.

    Buổi 6:
    1. Giới thiệu về PWM và công dụng của các chân PWM trong chip Arduino 3, 6, 9, 10, 11.
    2. Lắp mạch và thực hiện dự án "Điều khiển 1 LED sáng tăng dần rồi sáng giảm dần".


    TUẦN 3:

    Buổi 7:

    1. Ôn tập / Hỏi đáp nâng cao.

    Buổi 8:

    1.  Điện tử cơ bản. Nhắc lại mô hình 3 bước Arduino Vào - Xử lý - Ra.
    2. Nút nhấn điều khiển 3 led chạy các kiểu khác nhau.
    3. Nút nhấn điều khiển Loa phát âm thanh. (nếu còn tg).

    Buổi 9:
    1. Giới thiệu sơ lược về các loại cảm biến.
    2. 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:





            Coding - Điều khiển động cơ Servo (Cơ bản 4).

            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-------------------------------------------------------------------

            Coding - dùng chân PWM điều khiển 1 LED sáng tăng dần rồi sáng giảm dần (Cơ bản 3).

            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:

            Coding - Điều khiển 5 LED nhấp nháy theo dạng sóng (Cơ bản 2).

            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-------------------------------------------------------------------

            Coding - Điều khiển một LED nhấp nháy (Cơ bản 1).

            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.