Bài 4: Mô phỏng 2,3,4,5,6,7,.... bằng tinkercad

 Bài trước: Hướng dẫn sử dụng tinkercad

Trong bài này tôi sẽ hướng dẫn các bạn cách sử dụng tinkercad.com để mô phỏng từ 2 đèn led trở lên và lập trình cho chúng nháy theo ý muốn.

Bài 1: Mô phỏng 2 led nhấp nháy.

Lắp mạch:



Sơ đồ mạch:

 Code:

const int leddo = 2;
const int ledxanh=3;

void setup() {               

                pinMode(leddo,OUTPUT);   

                pinMode(ledxanh,OUTPUT); 

             }

void loop() {

             digitalWrite(leddo,HIGH); 

              digitalWrite(ledxanh,LOW);

              delay(1000);           

              digitalWrite(leddo,LOW);

              digitalWrite(ledxanh,HIGH);

             delay(1000);

            }

Mô phỏng



Bài 2: 6 led bật tắt theo thứ tự chẵn lẻ, từ trái qua phải và ngược lại.

Sơ đồ mạch:


Code (Không dùng vòng lặp):

const int led1=2;
const int led2=3;
const int led3=4;
const int led4=5;
const int led5=6;
const int led6=7;
void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  
}

void loop()
{
  //bật tắt chẵn lẻ
  
      digitalWrite(led1,HIGH);
      digitalWrite(led3,HIGH);
      digitalWrite(led5,HIGH);
      digitalWrite(led2,LOW);
      digitalWrite(led4,LOW);
      digitalWrite(led6,LOW);
      delay(1000);
    
      digitalWrite(led1,LOW);
      digitalWrite(led3,LOW);
      digitalWrite(led5,LOW);
      digitalWrite(led2,HIGH);
      digitalWrite(led4,HIGH);
      digitalWrite(led6,HIGH);
      delay(1000);
    
 }

Mô phỏng:



Hạn chế của đoạn code trên là nếu muốn led chớp tắt theo nhiều cách khác nhau chúng ta phải viết rất nhiều code.

Đẻ khắc phục vấn đề này chúng ta sử dụng vòng lặp và sử dụng các chân trên arduino như là biến (không khai báo tên biến led).

Code (Có vòng lặp for)

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  
  //dùng vòng lặp for để thiết lập các led sáng khi khởi động
  for(int i=2;i<8;i++)
  {
    digitalWrite(i,HIGH);
  }
}

void loop()
{
  //tắt từ 1 đến 6
  for(int i=2;i<8;i++)
  {
    digitalWrite(i,LOW);
    delay(500);//dừng 1 giây rồi tắt đèn tiếp theo
  }
  //Sáng từ 6 đến 1
  for(int i=7;i>1;i--)
  {
    digitalWrite(i,HIGH);
    delay(500);
  }
  //Chẵn sáng lẻ tắt lặp lại 5 lần
  int lanlap=1;
  while(lanlap<6){
    for(int i=2;i<8;i++){
      if((i-1)%2!=0){digitalWrite(i,LOW);}
      if((i-1)%2==0){digitalWrite(i,HIGH);}
      
    }
    delay(500);
    lanlap++;
    for(int i=2;i<8;i++){
      if((i-1)%2!=0){digitalWrite(i,HIGH);}
      if((i-1)%2==0){digitalWrite(i,LOW);}
      
    }
    delay(500);
  }
  for(int i=2;i<8;i++)
  {
    digitalWrite(i,HIGH);
  }
  delay(500);
}

Mô phỏng



Giải thích vòng for:

Vòng lặp for trong chương trình trên cho phép lặp lại bằng cách dùng biến i để kiểm soát, biến i có kiểu int là kiểu số nguyên. Trong vòng lặp trên giá trị khởi đầu của i là 2 tương ứng với chân số 2, giá trị khống chế vòng lặp là i<8 có nghĩa là nếu i còn nhỏ hơn 8 vòng lặp vẫn thực hiện tức điều kiện i<8 còn đúng, nếu i=8 điều kiện sai vòng lặp sẽ dừng, i++ có nghĩa là sau mỗi vòng i tăng lên 1 (i++ tương đương với i=i+1).  

Đến đây các bạn đã tìm hiểu thêm về vòng for để điều khiển nhiều đèn led, thực ra công dụng vòng for còn nhiều thứ hấp dẫn hơn nhiều, các bạn hãy theo dõi loạt bài tiếp theo để khám phá ra vẽ đẹp của điện từ kết hợp với ngôn ngữ lập trình trong tin học nhé!

Các bạn có thể xem thêm video trên trang youtube:

Điều khiển 2, 3 led


Điều khiển 7 led


Xin chào và hẹn gặp lại các bạn trong bài sau.

Bài tiếp theo: Nút nhấn, trạng thái nút nhấn và dùng nút nhấn điều khiển Led


Nhận xét, góp ý, thắc mắc, câu hỏi của bạn

Mới hơn Cũ hơn