สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดีทุกคน! นี่เป็นโครงการของฉันสำหรับตัวเลื่อนกล้อง DIY ฉันมีช่วงเวลาที่ยากลำบาก แต่ฉันแน่ใจว่าถ้าคุณใส่ใจในรายละเอียดมากกว่านี้มันจะได้ผล!
ในทางทฤษฎี วิธีนี้น่าจะได้ผล
หากคุณเลือกทำสิ่งนี้ ฉันหวังว่าคุณจะสนุกกับมัน!
ขั้นตอนที่ 1: รวบรวมวัสดุของคุณ
วัสดุอิเล็กทรอนิกส์
- Arduino
- เซอร์โว 360 สองตัว
- กระดานขนมปัง
- ตัวต้านทาน
- ปุ่ม (เด่นกว่า 3)
วัสดุก่อสร้าง
- แผ่นโฟมสองแผ่น
- เดือยไม้ (สามารถเป็นโลหะ)
- ชิ้นไม้รูปไข่ (ดูภาพแนะนำ)
ขั้นตอนที่ 2: ตั้งค่า
รูปนี้คือแผนภาพวงจร
ทำตามนี้และโครงการของคุณจะทำงาน!
ขั้นตอนที่ 3: การประกอบเขียงหั่นขนม
- ก่อนอื่นให้เชื่อมต่อขั้วบวกกับกราวด์กับเขียงหั่นขนม
- ที่สองเชื่อมต่อเซอร์โวสองตัว…และมีสายสองเส้นที่วิ่งไปที่กราวด์และขั้วบวกและอีกอันกับพินที่คุณเลือก (โปรดทราบว่ารหัสจะมีหมุดที่ฉันเลือก)..
- จากนั้นประกอบปุ่มของคุณ… อย่าลืมเชื่อมต่อกับพินที่คุณเลือก แต่รหัสจะไม่ทำงานหากคุณไม่ได้ใช้พินที่ฉันเลือก เชื่อมต่อปุ่มกับกราวด์เช่นกัน
- และใช้ตัวต้านทาน 220
- สุดท้ายนี้ หากคุณต้องการใช้จอ LCD คุณจะต้องเชื่อมต่อ 2 พินเข้ากับอินพุตแบบอะนาล็อกและหนึ่งสายเข้ากับขั้วบวก
ขั้นตอนที่ 4: รหัส Arduino
#รวม #รวม #รวม
LiquidCrystal_I2C จอแอลซีดี (0x27, 16, 2); // ตั้งค่าที่อยู่ LCD เป็น 0x27 สำหรับอักขระ 16 ตัวและจอแสดงผล 2 บรรทัด
เซอร์โวเซอร์โวซ้าย; // กำหนดเซอร์โวเซอร์โวซ้าย เซอร์โวเซอร์โวขวา; // กำหนดเซอร์โวที่ถูกต้อง
const int startbut = 8; // ปักหมุดสำหรับ startbut (startbutton) const int forwardbut = 12; // ปักหมุดสำหรับ forwardbut (forwardbutton) const int reversebut = 13; // ปักหมุดเพื่อย้อนกลับแต่ (ปุ่มย้อนกลับ) int tim = 500; // ค่าของเวลาหน่วงเวลา int แฟล็ก = 0; จำนวน int = 0;
ถ่าน array1=" ยินดีต้อนรับ "; //สตริงที่จะพิมพ์บน LCD ("ยินดีต้อนรับ") char array2="push left=LEFT, right=RIGHT !"; //สตริงที่จะพิมพ์บนจอ LCD ("push left=LEFT, right=RIGHT")
การตั้งค่าเป็นโมฆะ () { servoLeft.attach(10); // ตั้งค่าเซอร์โวซ้ายเป็นพินดิจิตอล 10 servoRight.attach(9); // ตั้งค่าเซอร์โวขวาเป็นพินดิจิตอล 9 servoLeft.write (90); // ตั้งค่าเซอร์โวเป็น 90 องศา servoRight.write (90); ล่าช้า (100);
// เปลี่ยนพินเป็นอินพุต pinMode (startbut, INPUT); // เริ่มต้น startbut (startbutton) เป็นอินพุต pinMode (reversebut, INPUT); // เริ่มต้นการย้อนกลับแต่ (ปุ่มย้อนกลับ) เป็นอินพุต pinMode (forwardbut, INPUT); // เริ่มต้น forwardbut (forwardbutton) เป็นอินพุต
}
วงเป็นโมฆะ () {// วนซ้ำการทดสอบการเคลื่อนไหว // รหัสสำหรับจอ LCD ถ้า (แฟล็ก == 1 && นับ == 0) { นับ = 1; lcd.init(); // เริ่มต้น LCD lcd.backlight(); //เปิดไฟแบ็คไลท์
lcd.setCursor(15, 0); // ตั้งค่าเคอร์เซอร์ไปที่คอลัมน์ 15 บรรทัดที่ 0 สำหรับ (int positionCounter1 = 0; positionCounter1 <26; positionCounter1++) { lcd.scrollDisplayLeft (); //เลื่อนเนื้อหาของหน้าจอไปทางซ้ายหนึ่งช่อง lcd.print(array1[positionCounter1]); //พิมพ์ข้อความไปยัง LCD ล่าช้า(ทิม); //รอ 250 ไมโครวินาที } lcd.clear(); //ล้างหน้าจอ LCD และจัดตำแหน่งเคอร์เซอร์ที่มุมซ้ายบน lcd.setCursor(15, 1); // ตั้งค่าเคอร์เซอร์ไปที่คอลัมน์ 15 บรรทัดที่ 1 สำหรับ (int positionCounter = 0; positionCounter <26; positionCounter++) { lcd.scrollDisplayLeft (); //เลื่อนเนื้อหาของหน้าจอไปทางซ้ายหนึ่งช่อง lcd.print(array2[ตัวนับตำแหน่ง]); //พิมพ์ข้อความไปยัง LCD ล่าช้า(ทิม); //รอ 250 ไมโครวินาที } lcd.clear(); //ล้างหน้าจอ LCD และจัดตำแหน่งเคอร์เซอร์ที่มุมซ้ายบน } ////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// ///////////////////////////////////
/ ตรวจสอบว่ามีการกดปุ่มหรือไม่ (digitalRead (startbut) == 1) { flag = 1; //แฟล็กตัวแปรสำหรับปุ่มเพื่อเริ่ม }
if (flag == 1){ if(digitalRead(reversebut) == HIGH) //reversebut กดจะเปิดเซอร์โว (reverse(); // ตัวแปรย้อนกลับสำหรับปุ่มย้อนกลับ } อื่น if (digitalRead (forwardbut) == สูง) //forwardbut กดจะเปิดเซอร์โว { ไปข้างหน้า (); //forward ตัวแปรสำหรับ forwardbutton } else { stop(); //stop Variable เพื่อหยุดการเคลื่อนที่ของเซอร์โวเมื่อไม่ได้กดปุ่ม } }
}
// กิจวัตรการเคลื่อนไหวสำหรับไปข้างหน้า ย้อนกลับ และหยุดโมฆะไปข้างหน้า () {// คำสั่งไปข้างหน้า servoLeft.write (0); // ทิศทางที่เซอร์โวหมุน servoRight.write (180); } โมฆะหยุด () { // หยุดคำสั่ง servoLeft.write (90); //หยุดเซอร์โวทั้งสองที่จุดเดียวกัน มิฉะนั้น เซอร์โวจะอยู่ในตำแหน่งที่ต่างกัน servoRight.write(90); } โมฆะย้อนกลับ () { //reverse คำสั่ง servoLeft.write (180); //เซอร์โวเปิดใช้งานในทิศทางตรงกันข้าม servoRight.write(0); }
นี่คือรหัสแห่งความสำเร็จ! หลังจากที่คุณได้ติดตั้ง Arduino แล้ว ทุกอย่างน่าจะใช้งานได้! และสนุกสนาน!
หากไม่ได้ผลโปรดมองย้อนกลับไปที่คำแนะนำนี้และตรวจสอบทุกอย่าง!