Arduino Light Seeker: 3 ขั้นตอน

Arduino Light Seeker: 3 ขั้นตอน

สารบัญ:

Anonim

ก่อนอื่นเลยฉันมาจากสวิตเซอร์แลนด์ดังนั้นโปรดขอโทษด้วยภาษาอังกฤษของฉัน

นี่เป็นหนึ่งในโปรเจคเล็ก ๆ น้อย ๆ แรกที่ฉันทำกับ Arduino Uno ของฉัน

มันเป็นเพียงผู้แสวงหาแสงเล็กน้อย เซอร์โวหันไปทางแสง

ฉันสร้างวิดีโอเพื่อแสดงให้คุณเห็นว่ามันทำอะไร:

วัสดุ:

ขั้นตอนที่ 1: การเดินสาย

นี่คือการเดินสายที่แน่นอนที่ฉันใช้

ข้อแตกต่างเพียงอย่างเดียวคือฉันคง photoresistor บนเซอร์โว (แต่ฉันไม่สามารถทำได้ด้วยโปรแกรม)

นอกจากนี้ฉันใช้แบตเตอรี่ 9V ในวิดีโอมันเสียบใน Vin และ GND

ตัวต้านทานคือ 200 Ohm สำหรับ LED และ 10 KOhm สำหรับ photoresistor

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

นี่คือรหัสแรกของฉัน ฉันพยายามแปลความคิดเห็นเป็นภาษาอังกฤษ

Arduino คำนวณความแตกต่างระหว่าง photoresistor ด้านซ้ายและขวาและเปลี่ยนเซอร์โวหากความแตกต่างมากกว่า 30

เมื่อเซอร์โวหมุนตามเข็มนาฬิกาไฟ LED ด้านขวาจะติด เมื่อหมุนทวนเข็มนาฬิกาไฟ LED ด้านซ้ายจะติดขึ้น

หากคุณเห็นข้อผิดพลาดหรือสิ่งแปลกโปรดบอกฉัน:)

#include

เซอร์โวเซอร์โว // กำหนด servo

// ตัวแปร

int photoD = 0; // กำหนดพิน 0 สำหรับ photoresistor ที่ถูกต้อง

int photoG = 1; // กำหนดพิน 1 สำหรับ photoresistor ด้านซ้าย

int ledD = 3; // กำหนดพิน 3 สำหรับ LED ที่ถูกต้อง

int ledG = 5; // กำหนดพิน 5 สำหรับไฟ LED ด้านซ้าย

int incr = 5; // ค่าที่จะเพิ่มไปยังมุม

int valS; //มุม

อุณหภูมิที่ยาวนาน //เวลา

temps ยาว 2; // เวลา 2

temps ยาว 3; // เวลา 3

temps4 ยาว // เวลา 4

//----------------------------------------------------------------------------

//ติดตั้ง

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

{

pinMode (3, OUTPUT); // กำหนดขาเอาท์พุท 3

pinMode (5, OUTPUT); // กำหนดไพนต์เอาต์พุต 5

servo.attach (8); // servo บนพิน 8

Serial.begin (9600); // เริ่มการสื่อสารแบบอนุกรม

temps = millis ();

servo.write (75); // ตำแหน่งเริ่มต้นสำหรับเซอร์โว

}

//----------------------------------------------------------------------------

// ห่วง

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

{

int valG; // ค่า photoG

int valD; // ค่า photoD

valD = analogRead (photoD);

valG = analogRead (photoG);

// แสดงค่าบนจอภาพทุกวินาที

if (temps + 1000 <millis ()) {

Serial.print ("ค่า photoresistor ที่ถูกต้อง:");

Serial.println (vald);

Serial.print ("ค่า photoresistor ด้านซ้าย:");

Serial.println (valG);

Serial.print ("มุม:");

Serial.println (Vals);

Serial.println ("----------------------");

temps = millis ();

}

if (temps3 + 1000 <millis () && (valD - valG> 20) && (valS <180)) {

Serial.println ("การหมุนทวนเข็มนาฬิกา");

temps3 = millis ();

}

if (temps4 + 1000 <millis () && (valG - valD> 20) && (valS> 0)) {

Serial.println ("หมุนตามเข็มนาฬิกา");

temps4 = millis ();

}

if (valD - valG> 30) {

valS = valS + incr;

digitalWrite (LEDG สูง);

}

if (valG - valD> 30) {

valS = valS - incr;

digitalWrite (ledD สูง);

}

if (valS> 0 || valS <180) {

servo.write (Vals); // เปลี่ยนเซอร์โว

}

if (valS <= 0) {

valS = 0;

}

if (valS> = 180) {

valS = 180;

}

if (temps2 + 500 <millis () && valD - valG <30 && valG - valD <30) {

digitalWrite (ledD ต่ำ);

digitalWrite (LEDG ต่ำ);

temps2 = millis ();

}

ล่าช้า (30);

}

ขั้นตอนที่ 3: จุดจบ

และ … นั่นคือทั้งหมด!

ฉันหวังว่าคุณจะสนุกกับโครงการนี้!

หากคุณมีคำถามใด ๆ อย่าลังเลที่จะถาม