สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ:-
- ขั้นตอนที่ 2: การสร้างแขน:-
- ขั้นตอนที่ 3: การสร้างการเชื่อมต่อ:-
- ขั้นตอนที่ 4: การเข้ารหัส:-
- ขั้นตอนที่ 5: การทดสอบ:-
วีดีโอ: แขนหุ่นยนต์ที่เรียบง่ายและชาญฉลาดโดยใช้ Arduino !!!: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
ในคำแนะนำนี้ ฉันจะสร้างแขนหุ่นยนต์แบบง่ายๆ ที่จะถูกควบคุมโดยใช้แขนหลัก แขนจะจำการเคลื่อนไหวและเล่นตามลำดับ แนวคิดนี้ไม่ใช่เรื่องใหม่ ฉันได้ไอเดียจาก "แขนหุ่นยนต์ขนาดเล็ก - โดย Stoerpeak" ฉันต้องการทำสิ่งนี้มาเป็นเวลานาน แต่ในตอนนั้น ฉันเพิ่งหัดเล่นและไม่มีความรู้เกี่ยวกับการเขียนโปรแกรมเลย ในที่สุด ตอนนี้ฉันกำลังสร้างมันขึ้นมา ทำให้มันง่าย ราคาถูก และแบ่งปันกับพวกคุณทุกคน
ดังนั้นเรามาเริ่มกันเลย….
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ:-
นี่คือรายการของสิ่งที่คุณต้องการ:-
1. เซอร์โวมอเตอร์ x 5 ลิงค์สำหรับอเมริกา:- https://amzn.to/2OxbSH7Link สำหรับยุโรป:-
2. Potentiometers x 5 (ฉันใช้ไปแล้ว 100k.)Link for US:- https://amzn.to/2ROjhDMLink for Europe:-
3. Arduino UNO (คุณสามารถใช้ Arduino Nano ได้เช่นกัน) ลิงค์สำหรับสหรัฐอเมริกา:- https://amzn.to/2DBbENWLink สำหรับยุโรป:-
4. เขียงหั่นขนม (ฉันแนะนำชุดนี้)ลิงก์สำหรับสหรัฐอเมริกา:- https://amzn.to/2Dy86w4Link สำหรับยุโรป:-
5. แบตเตอรี่ (ไม่บังคับ ฉันใช้อะแดปเตอร์ 5v)
6. กระดาษแข็ง/ไม้/ซันบอร์ด/อะคริลิค ที่มีอยู่หรือหาง่าย
และคุณจะต้องติดตั้ง Arduino IDE ด้วย
ขั้นตอนที่ 2: การสร้างแขน:-
ที่นี่ฉันได้ใช้ไอติมแท่งเพื่อทำแขน คุณสามารถใช้วัสดุใดก็ได้ที่มีให้คุณ และคุณสามารถลองใช้การออกแบบกลไกต่างๆ เพื่อสร้างแขนที่ดียิ่งขึ้นไปอีก การออกแบบของฉันไม่เสถียรมาก
ฉันเพิ่งใช้เทปสองหน้าติดเซอร์โวกับแท่งไอติมแล้วขันให้แน่นด้วยสกรู
สำหรับแขนมาสเตอร์ ฉันติดโพเทนชิโอมิเตอร์กับแท่งไอติมและทำแขน
การอ้างถึงรูปภาพจะทำให้คุณมีความคิดที่ดีขึ้น
ฉันได้ติดตั้งทุกอย่างบนกระดานผ้าใบขนาด A4 ที่ใช้เป็นฐาน
ขั้นตอนที่ 3: การสร้างการเชื่อมต่อ:-
ในขั้นตอนนี้เราจะทำการเชื่อมต่อที่จำเป็นทั้งหมด โปรดดูรูปภาพด้านบน
- ขั้นแรกให้เชื่อมต่อเซอร์โวทั้งหมดขนานกับแหล่งจ่ายไฟ (สายสีแดงถึง +ve และสายสีดำหรือสีน้ำตาลถึง Gnd)
- ถัดไปเชื่อมต่อสายสัญญาณเช่นสายสีเหลืองหรือสีส้มกับขา PWM ของ Arduino
- ตอนนี้เชื่อมต่อโพเทนชิโอมิเตอร์กับ +5v และ Gnd ของ Arduino แบบขนาน
- เชื่อมต่อขั้วกลางกับขาอนาล็อกของ ardunio
ที่นี่ Digital Pins 3, 5, 6, 9 & 10 ใช้สำหรับควบคุมเซอร์โว
Analog Pins A0 ถึง A4 ใช้สำหรับอินพุตจากโพเทนชิโอมิเตอร์
เซอร์โวที่เชื่อมต่อกับพิน 3 จะถูกควบคุมโดยโพเทนชิออมิเตอร์ที่เชื่อมต่อกับ A0
เซอร์โวที่เชื่อมต่อกับพิน 5 จะถูกควบคุมโดย pot บน A1 และอื่นๆ….
หมายเหตุ: - แม้ว่าเซอร์โวจะไม่ได้ขับเคลื่อนโดย Arduino ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อ Gnd ของเซอร์โวกับ Arduino ไม่เช่นนั้นแขนจะไม่ทำงาน
ขั้นตอนที่ 4: การเข้ารหัส:-
ลอจิกของรหัสนี้ค่อนข้างง่าย ค่าของโพเทนชิโอมิเตอร์จะถูกเก็บไว้ในอาร์เรย์ จากนั้นเรคคอร์ดจะถูกสำรวจโดยใช้ลูป for และเซอร์โวทำตามขั้นตอนตามค่า คุณสามารถตรวจสอบบทช่วยสอนนี้ที่ฉันใช้สำหรับการอ้างอิง "Arduino Potentiometer Servo Control & Memory"
รหัส:- (ดาวน์โหลดไฟล์แนบด้านล่าง)
ขั้นแรก เราจะประกาศตัวแปรที่จำเป็นทั้งหมดทั่วโลก เพื่อให้เราสามารถใช้งานได้ตลอดทั้งโปรแกรม ไม่จำเป็นต้องมีคำอธิบายพิเศษสำหรับสิ่งนี้
#รวม
//เซอร์โวอ็อบเจ็กต์ Servo Servo_0; เซอร์โวเซอร์โว_1; เซอร์โว เซอร์โว_2; เซอร์โว เซอร์โว_3; เซอร์โวเซอร์โว_4; //โพเทนชิออมิเตอร์วัตถุ int Pot_0; int Pot_1; int Pot_2; int หม้อ_3; int Pot_4; //ตัวแปรเก็บตำแหน่งเซอร์โว int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; //ตัวแปรเก็บค่าตำแหน่งก่อนหน้าใน Prev_0_Pos; int ก่อนหน้า_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; //ตัวแปรเก็บค่าตำแหน่งปัจจุบันใน Current_0_Pos; int ปัจจุบัน_1_Pos; int Current_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; //เก็บมุมใน Servo_Number; //เก็บหมายเลขของการจัดเก็บ int ของเซอร์โว [600]; //อาร์เรย์เพื่อเก็บข้อมูล (การเพิ่มขนาดอาร์เรย์จะใช้หน่วยความจำมากขึ้น) int Index = 0; // ดัชนีอาร์เรย์เริ่มต้นจากตำแหน่งที่ 0 ข้อมูลถ่าน = 0; //ตัวแปรในการเก็บข้อมูลจากอินพุตแบบอนุกรม
ตอนนี้เราจะเขียนฟังก์ชันการตั้งค่าที่เราตั้งหมุดและหน้าที่ของมัน นี่คือฟังก์ชันหลักที่ดำเนินการก่อน
การตั้งค่าเป็นโมฆะ ()
{ Serial.begin(9600); //สำหรับการสื่อสารแบบอนุกรมระหว่าง Arduino และ IDE // วัตถุเซอร์โวถูกแนบกับหมุด PWM Servo_0.แนบ(3); Servo_1.แนบ(5); Servo_2.แนบ(6); Servo_3.attach(9); Servo_4.attach(10); // เซอร์โวถูกตั้งค่าเป็น 100 ตำแหน่งเมื่อเริ่มต้น Servo_0.write(100); Servo_1.write(100); Servo_2.write(100); Servo_3.write(100); Servo_4.write(100); Serial.println ("กด 'R' เพื่อบันทึกและ 'P' เพื่อเล่น"); }
ตอนนี้ เราต้องอ่านค่าของโพเทนชิโอมิเตอร์โดยใช้พินอินพุตแบบอะนาล็อกและแมปพวกมันเพื่อควบคุมเซอร์โว สำหรับสิ่งนี้ เราจะกำหนดฟังก์ชันและตั้งชื่อมันว่า Map_Pot(); คุณสามารถตั้งชื่ออะไรก็ได้ที่คุณต้องการให้เป็นฟังก์ชันที่ผู้ใช้กำหนด
เป็นโมฆะ Map_Pot()
{ /* เซอร์โวหมุนที่ 180 องศา แต่การใช้มันเพื่อจำกัดไม่ใช่ความคิดที่ดี เพราะจะทำให้เซอร์โวส่งเสียงดังอย่างต่อเนื่อง ซึ่งน่ารำคาญ เราจึงจำกัดเซอร์โวให้เคลื่อนที่ระหว่าง: 1-179 */ Pot_0 = analogRead(A0); // อ่านอินพุตจาก pot และเก็บไว้ใน Variable Pot_0 Servo_0_Pos = แผนที่ (Pot_0, 0, 1023, 1, 179); //แมปเซอร์โวตามค่าระหว่าง 0 ถึง 1023 Servo_0.write(Servo_0_Pos); // ย้ายเซอร์โวไปที่ตำแหน่งนั้น Pot_1 = analogRead (A1); Servo_1_Pos = แผนที่ (Pot_1, 0, 1023, 1, 179); Servo_1.write(Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = แผนที่ (Pot_2, 0, 1023, 1, 179); Servo_2.write(Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = แผนที่ (Pot_3, 0, 1023, 1, 179); Servo_3.write(Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = แผนที่ (Pot_4, 0, 1023, 1, 179); Servo_4.write(Servo_4_Pos); }
ตอนนี้เราจะเขียนฟังก์ชันลูป:
วงเป็นโมฆะ ()
{ Map_Pot(); // เรียกใช้ฟังก์ชันเพื่ออ่านค่า pot ขณะที่ (Serial.available () > 0) { data = Serial.read (); if (data == 'R') Serial.println("การบันทึกการเคลื่อนไหว…"); if (data == 'P') Serial.println("กำลังเล่นการเคลื่อนไหวที่บันทึกไว้…"); } if (data == 'R') // ถ้าป้อน 'R' ให้เริ่มบันทึก {//เก็บค่าในตัวแปร Prev_0_Pos = Servo_0_Pos; ก่อนหน้า_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot(); // ฟังก์ชั่นแผนที่ถูกเรียกคืนสำหรับการเปรียบเทียบหาก (abs(Prev_0_Pos == Servo_0_Pos)) // ค่าสัมบูรณ์ได้มาจากการเปรียบเทียบ { Servo_0.write(Servo_0_Pos); // หากค่าที่ตรงกับเซอร์โวจะถูกเปลี่ยนตำแหน่งหาก (Current_0_Pos != Servo_0_Pos) // หากค่าไม่ตรงกัน { Storage[Index] = Servo_0_Pos + 0; // ค่าถูกเพิ่มในอาร์เรย์ Index++; // ค่าดัชนีเพิ่มขึ้น 1 } Current_0_Pos = Servo_0_Pos; } /* ในทำนองเดียวกัน การเปรียบเทียบค่าจะทำกับเซอร์โวทั้งหมด +100 จะถูกเพิ่มทุกๆ รายการเป็นค่าส่วนต่าง */ ถ้า (abs (Prev_1_Pos == Servo_1_Pos)) { Servo_1.write (Servo_1_Pos); ถ้า (Current_1_Pos != Servo_1_Pos) { ที่เก็บข้อมูล [ดัชนี] = Servo_1_Pos + 100; ดัชนี++; } Current_1_Pos = Servo_1_Pos; } ถ้า (abs (Prev_2_Pos == Servo_2_Pos)) { Servo_2.write (Servo_2_Pos); ถ้า (Current_2_Pos != Servo_2_Pos) { ที่เก็บข้อมูล [ดัชนี] = Servo_2_Pos + 200; ดัชนี++; } Current_2_Pos = Servo_2_Pos; } ถ้า (abs (Prev_3_Pos == Servo_3_Pos)) { Servo_3.write (Servo_3_Pos); ถ้า (Current_3_Pos != Servo_3_Pos) { ที่เก็บข้อมูล [ดัชนี] = Servo_3_Pos + 300; ดัชนี++; } Current_3_Pos = Servo_3_Pos; } ถ้า (abs (Prev_4_Pos == Servo_4_Pos)) { Servo_4.write (Servo_4_Pos); ถ้า (Current_4_Pos != Servo_4_Pos) { ที่เก็บข้อมูล [ดัชนี] = Servo_4_Pos + 400; ดัชนี++; } Current_4_Pos = Servo_4_Pos; } /* ค่าถูกพิมพ์บนมอนิเตอร์แบบอนุกรม '\t' ใช้สำหรับแสดงค่าในรูปแบบตาราง */ Serial.print(Servo_0_Pos); Serial.print(" \t "); Serial.print(Servo_1_Pos); Serial.print(" \t "); Serial.print(Servo_2_Pos); Serial.print(" \t "); Serial.print(Servo_3_Pos); Serial.print(" \t "); Serial.println(Servo_4_Pos); Serial.print ("ดัชนี = "); Serial.println (ดัชนี); ล่าช้า (50); } if (data == 'P') // IF 'P' ถูกป้อน ให้เริ่มเล่นการเคลื่อนไหวที่บันทึกไว้ { สำหรับ (int i = 0; i < Index; i ++) // สำรวจอาร์เรย์โดยใช้ for loop { Servo_Number = Storage / 100; // ค้นหาจำนวนเซอร์โว Servo_Position = Storage % 100; // ค้นหาตำแหน่งของสวิตช์เซอร์โว (Servo_Number) { กรณี 0: Servo_0.write (Servo_Position); หยุดพัก; กรณีที่ 1: Servo_1.write (Servo_Position); หยุดพัก; กรณีที่ 2: Servo_2.write (Servo_Position); หยุดพัก; กรณีที่ 3: Servo_3.write (Servo_Position); หยุดพัก; กรณีที่ 4: Servo_4.write (Servo_Position); หยุดพัก; } ล่าช้า (50); } } }
เมื่อรหัสพร้อมแล้ว ให้อัปโหลดไปยังบอร์ด Arduino
สมาร์ทอาร์มพร้อมทำงาน ฟังก์ชั่นยังไม่ราบรื่นเหมือนที่ทำโดย Stoerpeak
หากคุณสามารถทำให้โค้ดดีขึ้นหรือมีข้อเสนอแนะใดๆ ให้ฉัน โปรดแจ้งให้เราทราบในส่วนความคิดเห็น
จากที่กล่าวไปแล้ว เรามาทดสอบกันต่อ….
ขั้นตอนที่ 5: การทดสอบ:-
หลังจากอัปโหลดรหัสไปยังบอร์ดเรียบร้อยแล้ว เปิด 'Serial Monitor' คุณจะพบได้ในตัวเลือกเครื่องมือ เมื่อมอนิเตอร์แบบอนุกรมเริ่มทำงาน Arduino จะรีเซ็ต ตอนนี้คุณสามารถควบคุมแขนหุ่นยนต์โดยใช้แขนหลักได้ แต่ไม่มีอะไรถูกบันทึกไว้
ในการเริ่มบันทึก ให้ป้อน 'R' ในจอภาพ ตอนนี้คุณสามารถทำการเคลื่อนไหวที่คุณต้องการบันทึกได้
หลังจากย้ายเสร็จแล้วคุณต้องป้อน 'P' เพื่อเล่นการเคลื่อนไหวที่บันทึกไว้ เซอร์โวจะทำการเคลื่อนไหวต่อไปตราบเท่าที่บอร์ดไม่ได้ถูกรีเซ็ต
แนะนำ:
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: 6 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: Arduino Nano เป็นสมาชิกที่ดี ขนาดเล็ก และราคาถูกของตระกูล Arduino มันขึ้นอยู่กับชิป Atmega328 สิ่งที่ทำให้มีประสิทธิภาพเท่ากับ Arduino Uno พี่ชายที่ใหญ่ที่สุดของเขา แต่สามารถรับเงินน้อยกว่า ในอีเบย์ตอนนี้เวอร์ชั่นภาษาจีนสามารถข
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-