Results for "cơ bản"
Arduino giao tiếp với Button (phần 3):Một nút nhấn điều khiển 2 led đơn theo từng chế độ

Nội dung

  • Sau đây là ví dụ về điều khiển 2 led đơn bằng 1 nút nhấn.

  • Ở chế độ này thì gồm có 4 thao tác khác nhau. Ban đầu ở chế độ 1 chưa nhấn gì thì cả 2 led tắt, ở chế độ 2 khi nhấn nút led 1 sáng/led 2 tắt, ở chế độ 3 khi nhấn nút led 1 tắt/led 2 sáng, và ở chế độ cuối khi nhấn nút thì cả 2 led đều sáng rồi cứ tiếp tục 4 thao tác lặp đi lặp lại.


Về phần cứng

  1. Board mạch Arduino
  2. Nút nhấn (1 cái)
  3. Điện trở 10k ohm (1 cái) và 220 ohm(2 cái)
  4. Led đơn(2 cái)

Sơ đồ lặp mạch





Lập trình



    int switch = 5;              // nút nhấn được kết nối với pin 5

    int led1 = 8;

    int led2 = 9;

    int val;                         // đọc trạng thái pin
    int val2;                       // đọc trạng thái bị trì hoãn
    int buttonState;           // giữ trạng thái nút
    int mode = 0;              // led sẽ sáng ở chế độ nào

void setup () 
{
      pinMode(switch, INPUT);    // đặt nút nhấn làm ngỏ vào
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      buttonState = digitalRead(switch);   // đọc trạng thái ban đầu
}

void loop ()
{
      val = digitalRead(switch);      // đọc giá trị đầu vào và lưu trữ nó trong val
      delay(10);                         // 10 mili giây là thời gian chờ
      val2 = digitalRead(switch);     // đọc lại đầu vào để kiểm tra xem có bị trả lại không
      if (val == val2) // make sure we got 2 consistant readings!
        {                 
        if (val != buttonState) // trạng thái nút đã thay đổi!
            {          
             if (val == LOW)// kiểm tra xem nút có được nhấn hay không
             {                
                     if (Mode == 0) 
                      {          
                       Mode = 1;               
                      }
               else 
               {
                     if (Mode == 1) 
                      {        
                       Mode = 2;           
                      } 
               else 
               {
                    if (Mode == 2) 
                      {      
                       Mode = 3;           
                      } 
               else 
                {
                    if (Mode == 3) 
                      { 
                       Mode = 0;          
                      }
                }
                }
                }
               }
           }
        buttonState = val;                // lưu trạng thái mới trong biến của chúng tôi
      }

      //Thiết lập các chế độ
      if (Mode == 0) 
        {                           
          digitalWrite(led1, LOW);
          digitalWrite(led2, LOW);
        }

      if (Mode == 1) 
        { 
          digitalWrite(led1, HIGH);
          digitalWrite(led2, LOW);
        }

      if (Mode == 2) 
        { 
          digitalWrite(led1, LOW);
          digitalWrite(led2, HIGH);
        }
      if (Mode == 3)  
        { 
          digitalWrite(led1, HIGH);
          digitalWrite(led2, HIGH);
        }    
}

Mô phỏng

Gồm có 4 chế độ xác lập trong lập trình:

  • Ở chế độ ban đầu thì cả 2 led đều ở mức thấp nên cả 2 đều tắt.

Chế độ 1



  • Ở chế độ 2, khi nhấn nút led 1 sáng, led 2 tắt.

Chế độ 2



  • Ở chế độ 3, khi nhấn nút led 1 tắt, led 2 sáng.

Chế độ 3



  • Ở chế độ cuối, khi nhấn nút thì cả 2 led đều ở mức cao nên cả 2 đều sáng.




Chúc các bạn thành công ở bài này! 

thitech Thứ Tư, 23 tháng 5, 2018
Arduino giao tiếp với Button (Phần 2): Dùng 1 button để đổi trạng thái của led

Nội dung

  • Dùng button để hoán đổi trạng thái của led.
  • Trạng thái ban đầu led tắt,bắt đầu nhấn nút lần thứ 1 thì led bật,rồi nhấn nút lần thứ 2 thì led tắt cứ tiếp tục cho những lần kế tiếp cho việc lặp lại sáng tắt như vậy.

Về phần cứng

  1. Board mạch Arduino
  2. Button(nút nhấn) 1 cái
  3. Led đơn
  4. Điện trở 10k và 220 Ohm 

Sơ đồ lắp mạch






Lập trình

     byte led = 13; // nối led vào chân 13
     byte button = 2; // nối led vào chân 2
     byte ledStatus = LOW; // trạng thái của led
void setup()
{
       pinMode(led, OUTPUT);
       pinMode(button, INPUT);
       digitalWrite(led, LOW); //ban đầu led tắt
}
void loop()
{
         if (digitalRead(button) == LOW) // nếu nút được nhấn
         {
          while (digitalRead(button) == LOW); // chờ nút nhấn buông

          ledStatus = !ledStatus; // đảo trạng thái led từ LOW -> HIGH
          digitalWrite(led, ledStatus);
          }
}


Mô phỏng

    Ở mô phỏng 1,Ban đầu trạng thái là tắt khi ấn nút và thả ra vào lần 1 thì led sáng 


Mô phỏng 1





   Tiếp tục ở mô phỏng 2 ấn nút và thả ra lần 2 thì led sẽ tắt và cứ thế lặp đi lặp lại liên tục sáng/tắt khi thao tác

Mô phỏng 2



Chúc các bạn thành công!

thitech Thứ Ba, 22 tháng 5, 2018
Arduino - Giao tiếp với Button (Phần 1): Bật tắt led bằng 2 nút nhấn

Nội dung

   Xác định trạng thái của nút nhấn từ đó chúng ta có thể dùng các button để điều khiển bật tắt đèn led
Từ đó ta cho ra được ví dụ đơn giản về việc điều khiển led bật/tắt bằng 2 nút nhấn.

Yêu cầu phần cứng

  1.   Board mạch Arduino
  2.   Button(nút nhấn) 2 cái
  3.   Led đơn
  4.   Điện trở 220 Ohm

Lắp đặt mạch



Lập trình

     int button1 = 6;
     int button2 = 7;
     int led = 13;

     void setup() 
     {
      pinMode(button1, INPUT);  //Cài đặt chân D6 ở trạng thái đọc dữ liệu
      pinMode(button2, INPUT);  //Cài đặt chân D7 ở trạng thái đọc dữ liệu
      pinMode(led,OUTPUT); // Cài đặt chân D13 dưới dạng OUTPUT
     }

void loop() 
{
     int nutnhan1 = digitalRead(button1);    //Đọc trạng thái button
     int nutnhan2 = digitalRead(button2);    //Đọc trạng thái button

     if (nutnhan1 == HIGH)  // Nếu mà button bị nhấn
      { 
      digitalWrite(led,HIGH); // Đèn led sáng
      } 

      if (nutnhan2 == HIGH) // Nếu mà button bị nhấn
      { 
      digitalWrite(led,LOW);//Đèn led tắt
      }
}


Mô phỏng






    Khi bạn ấn nút nhấn 1 thì led sẽ sáng và ngược lại.




   Khi ấn nút nhấn 2 thì led sẽ tắt.





   Chúc các bạn thành công!

thitech Thứ Hai, 21 tháng 5, 2018
Arduino - Hiển thị dữ liệu lên LCD .

Giới thiệu :

Hôm nay tôi sẽ hướng dẫn các bạn cách để hiển thị dữ liệu ( kí tự , thông tin , ... ) lên LCD 16x2 bằng Arduino cũng như một số các hiệu ứng mà các bạn có thể hiển thị được với LCD .

Mục tiêu cần nắm : 

Nắm được các pin out của LCD .
Cách kết nối Arduino và LCD .

Chuẩn bị : 

Arduino Uno .
LCD 16x2.
Bread board.
Biến trở 10k ( loại nào cũng được ) .

Giới thiệu sơ lược về thư viện LCD :


Thư viện LiquidCrystal là thư viện điều khiển LCD trên Arduino, nó được xây dựng để cho các bạn có thể lập trình điều khiển các module LCD ô vuông một cách nhanh chóng mà không cần phải lập trình nhiều. Thư viện này được viết để phù hợp với con IC HD44780 (con điều khiển module LCD), tuy nhiên, trên thị trường mình toàn thấy các con LCD của Trung Quốc và thư viện này vẫn hoạt động tốt. Nghĩa là, bạn chỉ cần mua module LCD về và gắn vào Arduino, nạp code là chạy được, không cần quan tâm đến IC điều khiển LCD.

Pinout :



  1. VSS: tương đương với GND - cực âm
  2. VDD: tương đương với VCC - cực dương (5V)
  3. Constrast Voltage (Vo): điều khiển độ sáng màn hình
  4. Register Select (RS): điều khiển địa chỉ nào sẽ được ghi dữ liệu
  5. Read/Write (RW): Bạn sẽ đọc (read mode) hay ghi (write mode) dữ liệu? Nó sẽ phụ thuộc vào bạn gửi giá trị gì vào.
  6. Enable pin: Cho phép ghi vào LCD
  7. D0 - D7: 8 chân dư liệu, mỗi chân sẽ có giá trị HIGH hoặc LOW nếu bạn đang ở chế độ đọc (read mode) và nó sẽ nhận giá trị HIGH hoặc LOW nếu đang ở chế độ ghi (write mode)
  8. Backlight (Backlight Anode (+) và Backlight Cathode (-)): Tắt bật đèn màn hình LCD.

Lắp mạch :

Module LCD có thể được điều khiển ở chế độ: 4-bit điều khiển và 8-bit điều khiển. Với cách dùng ở chế độ 4-bit, bạn cần 7 chân ở Arduino, và nếu muốn dùng hết khả năng của LCD thì bạn cần 7 + 4 = 11 chân ở Arduino (không nên tí nào). Ngoài ra, mình đã thử hết các hàm trong thư viện LiquidCrystal của Arudino  ở chế độ 4-bit thì mọi thứ đều hoạt động tốt cả. Vì vậy, mình sẽ mắc mạch ở chế độ 4-bit điều khiển và hướng dẫn theo hướng này.

Code :


  1. #include <LiquidCrystal.h>//thư viện LCD
  2. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//khai báo chân ( RS,E,d4,d5,d6,d7)
  3.  
  4. void setup() {
  5. lcd.begin(16, 2);//khởi tạo LCD16x2
  6. lcd.print("T-Hi tech");//in dòng chữ
  7. }
  8.  
  9. void loop() {
  10. lcd.setCursor(0, 1);//đặt trỏ tại vị trí cột 0 dòng 1
  11. //dòng trên là 0 dòng dưới là 1 .
  12. lcd.print("Hello");
  13. }
  14. Demo:




  1. Tổng kết :
  2. Rất là đơn giản đúng không nào ? Ngoài ra các bạn hiển thị dữ liệu sử dụng các hiệu ứng cơ bản dưới đây :
  3. Chạy chữ .

Blink
      Cuộn chữ.
      Hãy tự sáng tạo thêm nhiều hiệu ứng cho mình nhé !!! Do kiến thức bị giới hạn nên nếu bài viết có sai sót gì xin các bạn cứ góp ý dưới phần nhận xét.

    thitech
    Arduino - Điều khiển led đơn qua giao tiếp serial giữa Arduino và PC .
    Thư viện Serial được dùng trong việc giao tiếp giữa các board mạch với nhau (hoặc board mạch với máy tính hoặc với các thiết bị khác). Tất cả các mạch Arduino đều có ít nhất 1 cổng Serial (hay còn được gọi là UART hoặc USART). Giao tiếp Serial được thực hiện qua 2 cổng digital 0 (RX) và 1 (TX) hoặc qua cổng USB tới máy tính. Vì vậy, nếu bạn đang sử dụng các hàm của thư viện Serial này, bạn không thể sử dụng các chân digital 0 và digital 1 để làm việc khác được!
    Bạn có thể sử dụng bảng Serial monitor có sẵn trong Arduino IDE để giao tiếp với Arduino qua giao thức Serial. Kích vào biểu tượng Serial Monitor (hình kính lúp bên góc phải trên cùng ) hoặc nhấn tổ hợp phím Ctrl+Shift+M để mở bảng Serial Monitor, sau đó bạn kích chuột vào bảng chọn như hình dưới để chọn baudrate giống với baudrate được dùng trong quá trình lập trình của bạn. Mặc định là 9600.
    Sau đây là 1 ví dụ đơn giản về việc điều khiển 1 led đơn tắt mở qua giao tiếp Serial giữa máy tính và arduino .

    Nội dung :

    Đọc dữ liệu nhập từ monitor .
    Điều khiển led đơn .

    Chuẩn bị :

    Arduino Uno.
    1 led đơn bất kì ( Đỏ ) .
    Trở 330 .

    Lắp mạch : 

    Lập trình :

    String x="";// khai báo biến x dạng chuỗi 
    // do kí tự nhập từ bàn phím mang giá trị theo bảng mã ASCII
    void setup() {
      Serial.begin(9600);
      pinMode(11,OUTPUT);// khai báo ngõ ra chân 11
      Serial.println("nhap trang thai led ( on or off ) :");
      //xuất ra monitor câu lệnh 
    }

    void loop() { 
       while(Serial.available()>0)//nếu có dữ liệu truyền tới thì vào làm các lệnh sau
      {
         x = Serial.readString();//gán dữ liệu truyền tới vào chuỗi x
         Serial.println(x);
        if(x == "on" ){ //nếu x = on thì chân 11 xuất mức cao => led sáng 
          digitalWrite(11,HIGH);
        }
        if(x == "off" ){//nếu x = off thì chân 11 xuất mức thấp  => led tắt  
          digitalWrite(11,LOW);
        }
      }
    }

    Tổng kết : 

    Hi vọng sau bài viết này các bạn có thể hình dung được rõ hơn về chuẩn giao tiếp serial . Do kiến thực giới hạn nên nếu bài viết có sai sót gì mong các bạn góp ý.

    thitech Chủ Nhật, 20 tháng 5, 2018
    Arduino-chớp tắt Led
    NỘI DUNG

          Một ví dụ đơn giản về chớp tắt một con led đơn trên giao diện Arduino.



    YÊU CẦU PHẦN CỨNG

    1. Board mạch Arduino.
    2. Một led đơn.
    3. Điện trở 220 Ohm.

    SƠ ĐỒ KẾT NỐI



    LẬP TRÌNH 

    • Đầu tiên,ta gán biến "led" cho chân digital 7 của Arduino bằng lệnh sau .

               int led = 7;

    • Tiếp theo tạo void setup() sau đó khởi tạo ngỏ ra của chân digital 7 vừa khai báo ở trên để kết nối với Led.

               pinMode(led, OUTPUT);

    • Để bật đèn Led bạn dùng lệnh digitalWrite và HIGH cho chân 7 lệnh này thực hiện trong void loop().

              digitalWrite(led,HIGH);

    • Và ngược lại bạn muốn tắt led dùng lệnh LOW.

               digitalWrite(led,LOW);

    • Nếu bạn muốn led sáng hay tắt trong khoảng thời gian nào đó thì dùng lệnh delay ở phía sau.

       Sau đây là đoạn code của chương trinh

            int led = 7;
            void setup()
            {
            pinMode(led, OUTPUT);
            }
            void loop()
            {
           digitalWrite(led,HIGH);
           delay(1000);
           digitalWrite(led,LOW);
           delay(1000);
            }



    MÔ PHỎNG










    CHÚC CÁC BẠN THÀNH CÔNG!

    thitech Thứ Năm, 17 tháng 5, 2018