สารบัญ:

การติดตามแหล่งกำเนิดแสงอัตโนมัติด้วย ARDUINO UNO R3: 5 ขั้นตอน
การติดตามแหล่งกำเนิดแสงอัตโนมัติด้วย ARDUINO UNO R3: 5 ขั้นตอน

วีดีโอ: การติดตามแหล่งกำเนิดแสงอัตโนมัติด้วย ARDUINO UNO R3: 5 ขั้นตอน

วีดีโอ: การติดตามแหล่งกำเนิดแสงอัตโนมัติด้วย ARDUINO UNO R3: 5 ขั้นตอน
วีดีโอ: EP 27. Arduino ฉบับไวจนไฟลุก !! - สาระเดฟ ใน 3 นาที 2024, พฤศจิกายน
Anonim
การติดตามแหล่งกำเนิดแสงอัตโนมัติด้วย ARDUINO UNO R3
การติดตามแหล่งกำเนิดแสงอัตโนมัติด้วย ARDUINO UNO R3

ในบทเรียนนี้ เราจะใช้เซอร์โวมอเตอร์ โฟโตรีซีสเตอร์ และตัวต้านทานแบบดึงลงเพื่อประกอบระบบแหล่งกำเนิดแสงติดตามอัตโนมัติ

ขั้นตอนที่ 1: ส่วนประกอบ

- บอร์ด Arduino Uno * 1

- สาย USB * 1

- เซอร์โวมอเตอร์ * 1

- โฟโตรีซีสเตอร์ * 1

- ตัวต้านทาน (10k) * 1

- เขียงหั่นขนม * 1

- สายจัมเปอร์

ขั้นตอนที่ 2: หลักการ

เซอร์โวมอเตอร์และโฟโตรีซีสเตอร์จะสแกนหาแหล่งกำเนิดแสงใน 180 องศาและบันทึกตำแหน่งของแหล่งกำเนิดแสง หลังจากเสร็จสิ้นการสแกน เซอร์โวมอเตอร์และโฟโตรีซีสเตอร์จะหยุดที่ทิศทางของแหล่งกำเนิดแสง

ขั้นตอนที่ 3: แผนผังไดอะแกรม

แผนภาพ
แผนภาพ

ขั้นตอนที่ 4: ขั้นตอน

ขั้นตอน
ขั้นตอน
ขั้นตอน
ขั้นตอน

ขั้นตอนที่ 1:

สร้างวงจร.

ขั้นตอนที่ 2:

ดาวน์โหลดโค้ดจาก

ขั้นตอนที่ 3:

อัปโหลดภาพร่างไปยังบอร์ด Arduino Uno

คลิกไอคอนอัปโหลดเพื่ออัปโหลดรหัสไปยังแผงควบคุม

หาก "เสร็จสิ้นการอัปโหลด" ปรากฏที่ด้านล่างของหน้าต่าง แสดงว่าอัปโหลดภาพร่างสำเร็จแล้ว

ตอนนี้ ถ้าคุณใช้ไฟฉายส่องโฟโตรีซีสเตอร์ คุณจะเห็นเซอร์โวมอเตอร์และโฟโตรีซีสเตอร์หมุน และสุดท้ายหยุดที่ทิศทางของแหล่งกำเนิดแสง

ขั้นตอนที่ 5: รหัส

/********************************************************************

* ชื่อ:

ติดตามแหล่งกำเนิดแสงโดยอัตโนมัติ

* การทำงาน

: หากคุณใช้ไฟฉายส่องโฟโตรีซีสเตอร์

* แล้วคุณจะได้เห็น

เซอร์โวมอเตอร์และโฟโตรีซีสเตอร์หมุน

* และในที่สุดก็

หยุดที่ทิศทางของแหล่งกำเนิดแสง

***********************************************************************

/อีเมล: [email protected]

//เว็บไซต์: www.primerobotics.in

#รวม

const int photocellPin = A0;

/************************************************/

Servo myservo; // สร้างวัตถุเซอร์โวเพื่อควบคุมเซอร์โว

int outputValue = 0;

มุม int = {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;

/*************************************************/

การตั้งค่าเป็นโมฆะ ()

{

Serial.begin(9600);

myservo.attach(9);//แนบเซอร์โวบนพิน 9 กับวัตถุเซอร์โว

}

/*************************************************/

วงเป็นโมฆะ ()

{

สำหรับ(int i = 0;

ฉัน < 19; ฉัน ++)

{

myservo.write(มุม);//เขียนมุมไปยังเซอร์โว

มูลค่าส่งออก

= analogRead (photocellPin); // อ่านค่าของ A0

Serial.println(outputValue);//พิมพ์

if(outputValue > maxVal)//ถ้าค่าปัจจุบันของ A0 มากกว่าค่าก่อนหน้า

{

maxVal = outputValue; // เขียนค่า

maxPos

=i;//

}

ล่าช้า(200);

}

myservo.write (มุม [maxPos]); // เขียนมุมไปยังเซอร์โวซึ่ง A0 มีค่ามากที่สุด

ในขณะที่(1);

}

แนะนำ: