QC

Mở cổng dùng ánh sáng dùng Arduino

 Mở cổng dùng ánh sáng dùng Arduino



1. LINH KIỆN VÀ CUNG ỨNG



2. Phần cứng

Chân 8 trên Arduino vào chân đầu tiên của điện trở.

Điện trở chân thứ hai vào cực dương của đèn LED.

Thiết bị đầu cuối âm của LED tới GND của Arduino.

Điện trở từ 5V đến - of Photo của Arduino.

Điện trở GND đến + of Photo của Arduino.

Chân A0 của Arduino đến chân S của điện trở Photo.


3. Software

Vào phần mã để lấy toàn bộ mã.

Trong mã, tôi đã cung cấp giá trị lengthOfBreaker là 0,04 vì chiều dài của bộ ngắt là 4 cm tương ứng với 0,04 tính bằng mét. Bạn có thể thay đổi nó theo chiều dài của cầu dao của bạn.

4. Testing

Setup the components

LƯU Ý: Chỉ nên chặn ánh sáng bằng cầu dao hoặc bất kỳ vật gì khác có chiều dài 4 cm. Nếu không phép đo sẽ sai !!

Nâng breadboard và quang điện trở lên để vật thể có thể di chuyển bên dưới nó.

Kết nối Arduino UNO với máy tính của bạn để nhận đầu ra Serial.

Ngay sau khi bật Arduino, bạn nên bật đèn pin.

Gắn cầu dao vào đối tượng bạn muốn đo tốc độ.

Ngay sau khi cầu dao chặn ánh sáng, đèn LED bật và khi đối tượng đi qua cổng ánh sáng, đèn LED sẽ tắt và tốc độ sẽ được hiển thị trên Màn hình nối tiếp.

CODE

int timer = 0; //For the counting of the breaked time of light.
bool checking = false; //Checks if the the object is being monitored.
float speed = 0; //The final speed of the object.
float lengthOfBreaker = 0.04; //The length of the breaker used in the object.

void setup() {
  pinMode(8, OUTPUT); //An LED for showing the 'checking' variable.
  Serial.begin(9600); //Begin the serial communication.
}

void loop() {
  if (analogRead(A0) < 900) { //Checks if the light intensity is below 900. That means the light is breaked.
    checking = true;
    digitalWrite(8, checking);
    timer = 0;
    while (analogRead(A0) <= 900) { //Increment the timer until the object is gone.
      timer++;
      delay(1); //A fixed time of 1 millisecond is given for counting.
    }
    if (timer > 0) { //Check if the timer value is greater that 0 milliseconds.
      checking = false; //Set the completed variable to true since the checking is completed.
      digitalWrite(8, checking);
      float timeInSec = (float(timer) / float(1000)); //Convert the time in milliseconds to seconds. Output is a float value.
      speed = lengthOfBreaker / timeInSec; //Calculates the speed of the object by using this formula: Speed = Distance / Time
      Serial.print("Object Instantaneous Speed: "); //
      Serial.print(speed);                          //  Print the object speed
      Serial.print(" m/s");                         //  in the Serial monitor.
      Serial.print("\n");                           //
      timeInSec = 0; // Reset the seconds value.
    }
    speed = 0;           //
    checking = false;    //  Reset other values too.
    timer = 0;           //
  }
}










Nap Code vào PY32F003 dùng Stlink

 Nap Code vào PY32F003 dùng Stlink Bước 1: Cài đặt  KeilC v5.39 theo link sau ( chú ý 5.39 keil c mới nạp ok). https://edge07.111.ir.cdn.ir/...