Სარჩევი:
- ნაბიჯი 1: აღჭურვილობა
- ნაბიჯი 2: Arduino დაყენება
- ნაბიჯი 3: საბოლოო პროგრამა
- ნაბიჯი 4: ვიდეო სახელმძღვანელო
- ნაბიჯი 5: დასკვნა
ვიდეო: საფორტეპიანო ფილები რობოტი მკლავი: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ჯგუფი შედგება 2 ავტომატიზაციის ინჟინრებისგან UCN– დან, რომლებმაც წარმოადგინეს ბრწყინვალე იდეა, რომლის მოტივაციაც გვაქვს და განვავითაროთ. იდეა ემყარება არდუინოს დაფას, რომელიც აკონტროლებს რობოტულ მკლავს. არდუინოს დაფა არის ოპერაციის ტვინი და შემდეგ ოპერაციის გამტარებელი, Robotic arm, გააკეთებს იმას, რაც მას სჭირდება. უფრო ღრმა ახსნა მოგვიანებით მოვა.
ნაბიჯი 1: აღჭურვილობა
რობოტის ხელი:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
პროგრამული უზრუნველყოფა რობოტისთვის- https://www.arduino.cc/en/Main/OldSoftwareRelease… ფერის გამოვლენის კამერა:
CMUcam5 Pixy კამერა - (https://charmedlabs.com/default/pixy-cmucam5/)
პროგრამული უზრუნველყოფა - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
ნაბიჯი 2: Arduino დაყენება
თქვენ შეგიძლიათ ნახოთ დაყენება დაფაზე, რაც ძალიან ადვილია.
მარცხნივ არის კვების ბლოკი.
შუა არის პირველი სერვოსთვის, რომელიც მოგვიანებით დაკავშირებულია სხვა სერვისებთან, სერვოთი სერვოით.
ქვედა არის ის, სადაც ჩვენ ვაკონტროლებთ დაფას კომპიუტერისგან ან ლეპტოპისგან, რომელსაც აქვს USB შესასვლელი მეორე ბოლოში.
ნაბიჯი 3: საბოლოო პროგრამა
||| პროგრამა |||
#ჩართეთ
#მოიცავს #მოიცავს "უქმნის.ჰ" #მოიცავს // Pixy Library #include
#განსაზღვრეთ POSECOUNT 5
BioloidController ბიოლოიდი = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; ლოგიკური IDCheck; ლოგიკური RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // დააწესეთ ერთობლივი ნომერი 1 რეგისტრი 32 სიჩქარეზე 50. ax12SetRegister2 (2, 32, 50); // ერთობლივი ნომერი 2 რეგისტრაცია 32 სიჩქარე 50. ax12SetRegister2 (3, 32, 50); // დააწესეთ ერთობლივი ნომერი 3 რეგისტრი 32 სიჩქარით 50. ax12SetRegister2 (4, 32, 50); // დააწესეთ ერთობლივი ნომერი 4 რეგისტრი 32 სიჩქარეზე 50. ax12SetRegister2 (5, 32, 100); // დააწესეთ ერთობლივი ნომერი 5 რეგისტრი 32 სიჩქარის 100. // ცვლადების ინიციალიზაცია id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // სერიული პორტის გახსნა Serial.begin (9600); დაგვიანება (500); Serial.println ("############################"); Serial.println ("სერიული კომუნიკაცია დამყარდა.");
// შეამოწმეთ ლიპო ბატარეის ძაბვის CheckVoltage ();
// სერვანების სკანირება, პოზიციის დაბრუნება MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// წაიკითხეთ სენსორი: int inByte = Serial.read ();
გადართვა (inByte) {
საქმე '1': MovePose1 (); შესვენება;
საქმე '2': MovePose2 (); შესვენება; საქმე '3': MovePose3 (); შესვენება;
საქმე '4': MovePose4 (); შესვენება;
საქმე '5': MoveHome (); შესვენება; საქმე '6': დაიჭირე (); შესვენება;
საქმე '7': LEDTest (); შესვენება;
საქმე '8': RelaxServos (); შესვენება; }}
void CheckVoltage () {// დაელოდეთ, შემდეგ შეამოწმეთ ძაბვა (LiPO უსაფრთხოება) float voltage = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("############################"); Serial.print ("სისტემის ძაბვა:"); სერიული. ბეჭდვა (ძაბვა); Serial.println ("ვოლტი"); if (ძაბვა 10.0) {Serial.println ("ძაბვის დონე ნომინალური."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("############################"); }
ბათილია MoveHome () {დაგვიანებით (100); // რეკომენდირებული პაუზა bioloid.loadPose (მთავარი); // ჩატვირთეთ პოზა FLASH– დან, nextPose ბუფერულ ბიოლოიდში. readPose (); // მიმდინარე სერვო პოზიციებში წაკითხვა curPose ბუფერზე Serial.println ("############################"); Serial.println ("სერვისების გადატანა სახლის პოზიციაზე"); Serial.println ("############################"); დაგვიანება (1000); bioloid.interpolateSetup (1000); // ინტერპოლაციის დაყენება მიმდინარე-> მომდევნო 1/2 წამზე მეტი ხნის განმავლობაში (bioloid.interpolating> 0) {// ამის გაკეთება სანამ ჩვენ არ მივაღწიეთ ჩვენს ახალ პოზას bioloid.interpolateStep (); // გადაადგილება servos, საჭიროების შემთხვევაში. დაგვიანება (3); } if (RunCheck == 1) {MenuOptions (); }}
ბათილია MovePose1 () {დაგვიანებით (100); // რეკომენდირებული პაუზა bioloid.loadPose (Pose1); // ჩატვირთეთ პოზა FLASH– დან, nextPose ბუფერულ ბიოლოიდში. readPose (); // მიმდინარე სერვო პოზიციებში წაკითხვა curPose ბუფერზე Serial.println ("############################"); Serial.println ("სერვისების გადატანა პირველ პოზიციაზე"); Serial.println ("############################"); დაგვიანება (1000); bioloid.interpolateSetup (1000); // ინტერპოლაციის დაყენება მიმდინარე-> მომდევნო 1/2 წამზე მეტი ხნის განმავლობაში (bioloid.interpolating> 0) {// ამის გაკეთება სანამ ჩვენ არ მივაღწიეთ ჩვენს ახალ პოზას bioloid.interpolateStep (); // გადაადგილება servos, საჭიროების შემთხვევაში. დაგვიანება (3); } SetPosition (3, 291); // დააწესეთ სახსრის პოზიცია 3 '0' დაგვიანებით (100); // დაელოდეთ სახსრის გადაადგილებას if (RunCheck == 1) {MenuOptions (); }}
ბათილია MovePose2 () {დაგვიანებით (100); // რეკომენდირებული პაუზა bioloid.loadPose (Pose2); // ჩატვირთეთ პოზა FLASH– დან, nextPose ბუფერულ ბიოლოიდში. readPose (); // მიმდინარე სერვო პოზიციებში წაკითხვა curPose ბუფერზე Serial.println ("############################"); Serial.println ("სერვისების გადატანა მე -2 პოზიციაზე"); Serial.println ("############################"); დაგვიანება (1000); bioloid.interpolateSetup (1000); // ინტერპოლაციის დაყენება მიმდინარე-> მომდევნო 1/2 წამზე მეტი ხნის განმავლობაში (bioloid.interpolating> 0) {// გააკეთეთ ეს სანამ ჩვენ არ მივაღწიეთ ჩვენს ახალ პოზას bioloid.interpolateStep (); // გადაადგილება servos, საჭიროების შემთხვევაში. დაგვიანება (3); } SetPosition (3, 291); // დააწესეთ სახსრის პოზიცია 3 '0' დაგვიანებით (100); // დაელოდეთ სახსრის გადაადგილებას if (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {დაგვიანებით (100); // რეკომენდებული პაუზა bioloid.loadPose (Pose3); // ჩატვირთეთ პოზა FLASH– დან, nextPose ბუფერულ ბიოლოიდში. readPose (); // მიმდინარე სერვო პოზიციებში წაკითხვა curPose ბუფერზე Serial.println ("############################"); Serial.println ("სერვისების გადატანა მე -3 პოზიციაზე"); Serial.println ("############################"); დაგვიანება (1000); bioloid.interpolateSetup (1000); // ინტერპოლაციის დაყენება მიმდინარე-> მომდევნო 1/2 წამზე მეტი ხნის განმავლობაში (bioloid.interpolating> 0) {// ამის გაკეთება სანამ ჩვენ არ მივაღწიეთ ჩვენს ახალ პოზას bioloid.interpolateStep (); // გადატანა servos, საჭიროების შემთხვევაში. დაგვიანება (3); } SetPosition (3, 291); // დააწესეთ სახსრის პოზიცია 3 '0' დაგვიანებით (100); // დაელოდეთ სახსრის გადაადგილებას if (RunCheck == 1) {MenuOptions (); }}
ბათილია MovePose4 () {დაგვიანებით (100); // რეკომენდირებული პაუზა bioloid.loadPose (Pose4); // ჩატვირთეთ პოზა FLASH– დან, nextPose ბუფერულ ბიოლოიდში. readPose (); // მიმდინარე სერვო პოზიციებში წაკითხვა curPose ბუფერზე Serial.println ("############################"); Serial.println ("სერვისების გადატანა მე -4 პოზიციაზე"); Serial.println ("############################"); დაგვიანება (1000); bioloid.interpolateSetup (1000); // ინტერპოლაციის დაყენება მიმდინარე-> მომდევნო 1/2 წამზე მეტი ხნის განმავლობაში (bioloid.interpolating> 0) {// ამის გაკეთება სანამ ჩვენ არ მივაღწიეთ ჩვენს ახალ პოზას bioloid.interpolateStep (); // გადაადგილება servos, საჭიროების შემთხვევაში. დაგვიანება (3); } SetPosition (3, 291); // დააწესეთ სახსრის პოზიცია 3 '0' დაგვიანებით (100); // დაელოდეთ სახსრის გადაადგილებას if (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("############################"); Serial.println ("მოძრაობის ნიშნის ტესტის ინიციალიზაცია"); Serial.println ("############################"); დაგვიანება (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("გადადის სერვო ID:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; დაგვიანება (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; დაგვიანება (10); }
// გამეორება მომდევნო სერვო ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("#############################"); Serial.println ("გთხოვთ შეიყვანოთ ვარიანტი 1-5 ინდივიდუალური ტესტების ხელახლა გასაშვებად."); Serial.println ("1" პირველი პოზიცია "); Serial.println ("2" მე -2 პოზიცია "); Serial.println ("3" მე -3 პოზიცია "); Serial.println ("4" მე -4 პოზიცია "); Serial.println ("5) მთავარი პოზიცია"); Serial.println ("6) შეამოწმეთ სისტემის ძაბვა"); Serial.println ("7) LED ტესტის შესრულება"); Serial.println ("8" Relax Servos "); Serial.println ("############################"); }
void RelaxServos () {id = 1; Serial.println ("############################"); Serial.println ("დამამშვიდებელი სერვისები."); Serial.println ("############################"); while (id <= SERVOCOUNT) {დამშვიდდით (id); id = (id ++)%SERVOCOUNT; დაგვიანება (50); } if (RunCheck == 1) {MenuOptions (); }}
void LEDTest () {id = 1; Serial.println ("############################"); Serial.println ("გაშვებული LED ტესტი"); Serial.println ("############################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); დაგვიანება (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); დაგვიანება (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // დააწესეთ სახსრის 1 პოზიცია '0' დაგვიანებით (100); // დაელოდეთ სახსრის გადაადგილებას
}
ჩვენ დავამყარეთ ჩვენი პროგრამა მწარმოებლების PincherTest პროგრამაზე, რამდენიმე მნიშვნელოვანი შესწორებით პოზიციონირების შემთხვევაში. ჩვენ გამოვიყენეთ პოზა.ჰ რობოტს, რომ ჰქონდეს პოზიციები მეხსიერებაში. პირველ რიგში ჩვენ შევეცადეთ Pixycam– ით ჩვენი სათამაშო იარაღი ავტომატური ყოფილიყო, მაგრამ სინათლისა და მცირე ეკრანის პრობლემების გამო, ეს არ შეიძლებოდა მომხდარიყო. რობოტს აქვს მთავარი სახლის პოზიცია, პროგრამის ატვირთვის შემდეგ, ის შეამოწმებს რობოტში ნაპოვნი ყველა სერვისს. ჩვენ დავაყენეთ პოზები 1-4 ღილაკზე, ასე რომ ადვილი დასამახსოვრებელი იქნება. მოგერიდებათ გამოიყენოთ პროგრამა.
ნაბიჯი 4: ვიდეო სახელმძღვანელო
ნაბიჯი 5: დასკვნა
დასასრულს, რობოტი არის სახალისო პატარა პროექტი ჩვენთვის და სახალისო თამაში და ექსპერიმენტების ჩატარება. მე გირჩევთ სცადოთ და ასევე მოარგოთ მას.
გირჩევთ:
4dof Ps2 Control Arduino აკრილის რობოტი მკლავი: 5 ნაბიჯი
4dof Ps2 Control Arduino Acrylic Robot Arm: it based on mearmlist: 1set mearm acrylic arm1pc arduino uno2pc ps2
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: 8 ნაბიჯი
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: ჩვენ შევქმენით კომბინირებული ბალანსირების და 3 ბორბლიანი რობოტი სკოლებში საგანმანათლებლო გამოყენებისთვის და სკოლის შემდგომ საგანმანათლებლო პროგრამებისთვის. რობოტი დაფუძნებულია Arduino Uno– ზე, საბაჟო ფარზე (კონსტრუქციის ყველა დეტალი მოცემულია), Li Ion ბატარეის პაკეტზე (ყველა კონსტრუქცია
არდუინო - საფორტეპიანო ფილები: 16 ნაბიჯი (სურათებით)
არდუინო - საფორტეპიანო ფილები: გამარჯობა ინტერნეტ ხალხო, ეს იქნება იმის შესახებ, თუ როგორ უნდა გააკეთოთ ის, რაც ნამდვილად არ არის მობილური თამაშების გაფუჭება arduino uno r3– ზე. ასე რომ, დასაწყებად, თქვენ დაგჭირდებათ ყველა ნაწილი, რომელიც არის შემდეგი ! 1x Arduino Uno r3 ($ 42) 2x LCD კლავიატურის ფარი (თითოეული $ 19) 5
როგორ შევიკრიბოთ შთამბეჭდავი ხის რობოტი მკლავი (ნაწილი 1: რობოტი ხაზების თვალთვალისთვის)-დაფუძნებული მიკრო: ბიტი: 9 ნაბიჯი
როგორ შევიკრიბოთ შთამბეჭდავი ხის რობოტი მკლავი (ნაწილი 1: Robot for Line-tracking)-მიკრო: ბიტიდან გამომდინარე: ამ ხის ბიჭს სამი ფორმა აქვს, ის ძალიან განსხვავებული და შთამბეჭდავია. შემდეგ მოდით შევიდეთ მასში სათითაოდ
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი - ცერა თითის რობოტი - სერვო ძრავა - წყაროს კოდი: 26 ნაბიჯი (სურათებით)
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი | ცერა თითის რობოტი | სერვო მოტორი | წყაროს კოდი: Thumbs Robot. გამოყენებული იქნა MG90S სერვო ძრავის პოტენომეტრი. ეს არის ძალიან სახალისო და მარტივი! კოდი ძალიან მარტივია. ეს მხოლოდ 30 სტრიქონია. როგორც ჩანს მოძრაობის გადაღება. გთხოვთ დატოვოთ ნებისმიერი შეკითხვა ან გამოხმაურება! [ინსტრუქცია] წყაროს კოდი https: //github.c