2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Trong bài học này, chúng ta sẽ sử dụng một động cơ servo, một điện trở quang và một điện trở kéo xuống để lắp ráp một hệ thống nguồn sáng theo dõi tự động.
Bước 1: Các thành phần:
- Bo mạch Arduino Uno * 1
- Cáp USB * 1
- Động cơ servo * 1
- điện trở quang * 1
- Điện trở (10k) * 1
- Bảng mạch * 1
- Dây nhảy
Bước 2: Nguyên tắc
Động cơ servo và điện trở quang quét và tìm kiếm nguồn sáng ở 180 độ và ghi lại vị trí của nguồn sáng. Sau khi kết thúc quá trình quét, động cơ servo và điện trở quang dừng ở hướng của nguồn sáng.
Bước 3: Thủ tục:
Bước 1:
Xây dựng mạch.
Bước 2:
Tải xuống mã từ
Bước 3:
Tải bản phác thảo lên bảng Arduino Uno
Nhấp vào biểu tượng Tải lên để tải mã lên bảng điều khiển.
Nếu "Hoàn tất tải lên" xuất hiện ở cuối cửa sổ, điều đó có nghĩa là bản phác thảo đã được tải lên thành công.
Bây giờ, nếu bạn sử dụng đèn pin để chiếu vào điện trở quang, bạn sẽ thấy động cơ servo và điện trở quang quay, và cuối cùng dừng lại ở hướng của nguồn sáng.
Bước 4: Sơ đồ
Bước 5: Mã
/********************************************************************
* Tên:
Tự động theo dõi nguồn sáng
* hàm số
: nếu bạn sử dụng đèn pin để chiếu sáng điện trở quang, * Bạn sẽ thấy
động cơ servo và điện trở quang quay, * và cuối cùng
dừng theo hướng của nguồn sáng.
***********************************************************************
/ Email: [email protected]
// Trang web: www.primerobotics.in
#bao gồm
const int photocellPin = A0;
/************************************************/
Servo myservo; // tạo đối tượng servo để điều khiển servo
int outputValue = 0;
int angle = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180};
int maxVal = 0;
int maxPos = 0;
/*************************************************/
void setup ()
{
Serial.begin (9600);
myservo.attach (9); // gắn servo trên chân 9 vào đối tượng servo
}
/*************************************************/
void loop ()
{
for (int i = 0;
tôi <19; i ++)
{
myservo.write (angle ); // ghi góc vào servo
giá trị sản phẩm đầu ra
= analogRead (photocellPin); // đọc giá trị của A0
Serial.println (outputValue); // in ra
if (outputValue> maxVal) // nếu giá trị hiện tại của A0 lớn hơn trước đó
{
maxVal = outputValue; // ghi giá trị xuống
maxPos
= i; //
}
chậm trễ (200);
}
myservo.write (angle [maxPos]); // ghi góc tới servo mà A0 có giá trị lớn nhất
trong khi (1);
}