Hỏi về vòng lặp trong vòng lặp

Em đang có 1 đề tài sử dụng Cảm biến khoảng cách siêu âm HC-SR05 để nhận biết khoảng cách từ đó điều khiển 3 đèn (1,2,3) hoạt động như sau: " Khi khoảng cách =1 thì đèn 1 bật, khoảng cách =2 thì đèn 2 bật, khoảng cách =3 thì đèn 3 bật và tự động lặp đi lại lại như vậy" . Phần hoạt động trên thì em đã lập trình thành công, hiện nay em đang muốn tích hợp thêm module Bluetooth để điều khiển song song qua app inventer, vấn đề đặt ra là em muốn có 2 chế độ ( tự điều khiển & điều khiển bằng tay qua Bluetooth). Khung chương trình kiểu như này:

//khai báo các chân, biến
string device 

void setup()
{  
   Serial.begin(9600);          
   BT.begin(9600);
  //khai báo các chân
}
void loop() 
{
while (BT.available())
  {
  delay(10);
  char c = BT.read();
  device += c;
  }  
    Serial.println(device); 
    if(device == "1") 
    {
    // đo & điều khiển tự động lặp lại liên tục ( thưc tế nó chỉ xảy ra 1 lần không liên tục)
    }
    if(device == "a"){
    // bật đèn 1
    }
    if(device == "b"){
    // bật đèn 2
    }
    if(device == "c"){
    // bật đèn 3
    }
    device="";
}

Trên là khung chương trình, rất mong các bạn góp ý để mình có thể hoàn thiện nó, mình xin cảm ơn:)

1 Like

Mình không rõ cái biến device trong mã giả của bạn có nghĩa là gì, ý mình thế này.

while (true) 
{
      char distance = readFromSR04(); // Khoảng cách từ 1cm đến 100cm.
      char bluetoothCommand = BT.read();  // Giá trị 1,2,3 để bật đèn tương ứng.
      if (bluetoothCommand == INVALID_VALUE)
      {
             turnLight(int(distance/33)+1, ON);  // turnLight(<ID của đèn: 1,2 hoặc 3>, <trạng thái ON/OFF>);
             turnLight(int(((distance+33)%100)/33)+1, ON);
             turnLight(int(((distance+66)%100)/33)+1, ON); 
      } else 
      {
             turnLight(bluetoothCommand, ON);
             turnLight((bluetoothCommand+1)%3, ON);
             turnLight((bluetoothCommand+2)%3, ON);
      }
}

Chủ đề này sẽ được tự động đóng sau 90 ngày, sẽ không được gửi trả lời.