สารบัญ:
นี่เป็นหนึ่งในโปรเจคเล็ก ๆ น้อย ๆ แรกที่ฉันทำกับ 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: จุดจบ
และ … นั่นคือทั้งหมด!
ฉันหวังว่าคุณจะสนุกกับโครงการนี้!
หากคุณมีคำถามใด ๆ อย่าลังเลที่จะถาม