在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Arduino的簡易智能機器人手臂的制作

454398 ? 來源:網絡整理 ? 作者:佚名 ? 2019-11-07 10:55 ? 次閱讀

第1步:你需要的東西: -

以下列出了您需要的東西: -

1。伺服電機x 5

美國鏈接: - https://amzn.to/2OxbSH7

歐洲鏈接: - https://amzn.to/2Ddr6Pw

2。電位計x 5(我使用過100k。)

美國鏈接: - https://amzn.to/2ROjhDM

歐洲鏈接: - https://amzn.to/2AYlhE7

3。 Arduino UNO。 (您也可以使用Arduino Nano)

美國鏈接: - https://amzn.to/2DBbENW

歐洲鏈接: - https://amzn.to/2zHCQX7

4 。面包板。 (我建議使用此套件)

美國鏈接: - https://amzn.to/2Dy86w4

歐洲鏈接: - https://amzn.to/2AZa5ao

5。電池。 (可選,我使用的是5v適配器)

6。紙板/木板/太陽板/丙烯板可用或易于找到。

您還需要安裝Arduino IDE。

步驟2:制作手臂: -

在這里,我使用冰棍棒制作手臂。您可以使用任何可用的物資。你可以嘗試不同的機械設計,以制造更好的手臂。我的設計不是很穩定。

我只是用雙面膠帶將舵機粘在冰棒上并用螺絲固定。

對于Master臂我將電位器粘在冰棒上棍棒和手臂。

參考圖片會給你一個更好的主意。

我已將所有東西安裝在用作基礎的A4尺寸帆布板上。

步驟3:建立連接: -

在此步驟中,我們將進行所有必要的連接,請參閱上面的圖片。

首先連接所有伺服器與電源并聯(紅線至+ ve和黑線或棕線至Gnd)

然后將信號線(即黃線或橙線)連接到arduino的PWM引腳。

現在將電位器并聯連接到+ 5v和arduino的Gnd。

將中間端子連接到ardunio的模擬引腳。

此處數字引腳3,5,6,9和10用于控制伺服電壓

模擬引腳A0至A4用于電位計輸入。

連接到引腳3的伺服將由連接到A0的電位器控制

連接到引腳5的伺服將由A1上的電位器控制,依此類推。..。

注意: - 即使Servos不是由arduino供電,也要確保將伺服器的Gnd連接到arduino,否則手臂將無法正常工作。

步驟4:編碼: -

此代碼的邏輯非常簡單,電位計的值存儲在數組中,然后使用for循環遍歷記錄,伺服器按照步驟執行步驟價值。您可以查看本教程,我用作參考“Arduino電位器伺服控制和記憶”

代碼: - (可下載文件附后)。

首先我們將聲明所有全局必要的變量,因此我們可以在整個程序中使用它們。此處不需要特別說明。

#include

//Servo Objects

Servo Servo_0;

Servo Servo_1;

Servo Servo_2;

Servo Servo_3;

Servo Servo_4;

//Potentiometer Objects

int Pot_0;

int Pot_1;

int Pot_2;

int Pot_3;

int Pot_4;

//Variable to store Servo Position

int Servo_0_Pos;

int Servo_1_Pos;

int Servo_2_Pos;

int Servo_3_Pos;

int Servo_4_Pos;

//Variable to store Previous position values

int Prev_0_Pos;

int Prev_1_Pos;

int Prev_2_Pos;

int Prev_3_Pos;

int Prev_4_Pos;

//Variable to store Current position values

int Current_0_Pos;

int Current_1_Pos;

int Current_2_Pos;

int Current_3_Pos;

int Current_4_Pos;

int Servo_Position; //Stores the angle

int Servo_Number; //Stores no of servo

int Storage[600]; //Array to store data (Increasing array size will consume more memory)

int Index = 0; // Array index starts from 0th position

char data = 0; //variable to store data from serial input.

現在我們將編寫一個設置功能,我們設置引腳及其功能。這是首先執行的主要功能。

void setup()

{

Serial.begin(9600); //For Serial communication between arduino and IDE.

//Servo objects are attached to PWM pins.

Servo_0.attach(3);

Servo_1.attach(5);

Servo_2.attach(6);

Servo_3.attach(9);

Servo_4.attach(10);

//Servos are set to 100 position at initialization.

Servo_0.write(100);

Servo_1.write(100);

Servo_2.write(100);

Servo_3.write(100);

Servo_4.write(100);

Serial.println(“Press ‘R’ to Record and ‘P’ to play”);

}

現在我們必須使用模擬輸入引腳讀取電位計的值并將它們映射到控制伺服系統。為此我們將定義一個函數并將其命名為 Map_Pot(); ,你可以將它命名為任何你想要的用戶定義函數。

void Map_Pot()

{

/* The servos rotate at 180 degrees

but to using it to limits is not

a good idea as it makes the servos buzz continuously

which is annoying so we limit the servo to move

between: 1-179 */

Pot_0 = analogRead(A0); // Read input from pot and store it in the Variable Pot_0.

Servo_0_Pos = map(Pot_0, 0, 1023, 1, 179); //Map servos as per the value between 0 to 1023

Servo_0.write(Servo_0_Pos); //Move the servo to that position.

Pot_1 = analogRead(A1);

Servo_1_Pos = map(Pot_1, 0, 1023, 1, 179);

Servo_1.write(Servo_1_Pos);

Pot_2 = analogRead(A2);

Servo_2_Pos = map(Pot_2, 0, 1023, 1, 179);

Servo_2.write(Servo_2_Pos);

Pot_3 = analogRead(A3);

Servo_3_Pos = map(Pot_3, 0, 1023, 1, 179);

Servo_3.write(Servo_3_Pos);

Pot_4 = analogRead(A4);

Servo_4_Pos = map(Pot_4, 0, 1023 , 1, 179);

Servo_4.write(Servo_4_Pos);

}

現在我們將編寫循環函數:

void loop()

{

Map_Pot(); //Function call to read pot values

while (Serial.available() 》 0)

{

data = Serial.read();

if (data == ‘R’)

Serial.println(“Recording Moves.。.”);

if (data == ‘P’)

Serial.println(“Playing Recorded Moves.。.”);

}

if (data == ‘R’) //If ‘R’ is entered, start recording.

{

//Store the values in a variable

Prev_0_Pos = Servo_0_Pos;

Prev_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(); // Map function recalled for comparison

if (abs(Prev_0_Pos == Servo_0_Pos)) // absolute value is obtained by comparing

{

Servo_0.write(Servo_0_Pos); // If values match servo is repositioned

if (Current_0_Pos != Servo_0_Pos) // If values don‘t match

{

Storage[Index] = Servo_0_Pos + 0; // Value is added to array

Index++; // Index value incremented by 1

}

Current_0_Pos = Servo_0_Pos;

}

/* Similarly the value comparison is done for all the servos, +100 is added every for entry

as a differential value. */

if (abs(Prev_1_Pos == Servo_1_Pos))

{

Servo_1.write(Servo_1_Pos);

if (Current_1_Pos != Servo_1_Pos)

{

Storage[Index] = Servo_1_Pos + 100;

Index++;

}

Current_1_Pos = Servo_1_Pos;

}

if (abs(Prev_2_Pos == Servo_2_Pos))

{

Servo_2.write(Servo_2_Pos);

if (Current_2_Pos != Servo_2_Pos)

{

Storage[Index] = Servo_2_Pos + 200;

Index++;

}

Current_2_Pos = Servo_2_Pos;

}

if (abs(Prev_3_Pos == Servo_3_Pos))

{

Servo_3.write(Servo_3_Pos);

if (Current_3_Pos != Servo_3_Pos)

{

Storage[Index] = Servo_3_Pos + 300;

Index++;

}

Current_3_Pos = Servo_3_Pos;

}

if (abs(Prev_4_Pos == Servo_4_Pos))

{

Servo_4.write(Servo_4_Pos);

if (Current_4_Pos != Servo_4_Pos)

{

Storage[Index] = Servo_4_Pos + 400;

Index++;

}

Current_4_Pos = Servo_4_Pos;

}

/* Values are printed on serial monitor, ’ ‘ is for displaying values in tabular format */

Serial.print(Servo_0_Pos);

Serial.print(“ ”);

Serial.print(Servo_1_Pos);

Serial.print(“ ”);

Serial.print(Servo_2_Pos);

Serial.print(“ ”);

Serial.print(Servo_3_Pos);

Serial.print(“ ”);

Serial.println(Servo_4_Pos);

Serial.print (“Index = ”);

Serial.println(Index);

delay(50);

}

if (data == ’P‘) //IF ’P‘ is entered , Start playing recorded moves.

{

for (int i = 0; i 《 Index; i++) //Traverse the array using for loop

{

Servo_Number = Storage[i] / 100; // Finds number of servo

Servo_Position = Storage[i] % 100; // Finds position of servo

switch(Servo_Number)

{

case 0:

Servo_0.write(Servo_Position);

break;

case 1:

Servo_1.write(Servo_Position);

break;

case 2:

Servo_2.write(Servo_Position);

break;

case 3:

Servo_3.write(Servo_Position);

break;

case 4:

Servo_4.write(Servo_Position);

break;

}

delay(50);

}

}

}

代碼準備好后,立即將其上傳到arduino板。

Smart arm已準備就緒。這個功能還不如Stoerpeak制作的那么順暢。

如果您可以更好地編寫代碼或對我有任何建議,請在評論部分告訴我。

有人說過,讓我們繼續測試。..。

步驟5:測試: -

將代碼成功上傳到電路板后,打開“串行監視器”,您可以在“工具”選項中找到它。當串行監視器啟動時,arduino將重置。現在,您可以使用主臂控制機械臂。但沒有記錄任何東西。

要開始錄制,請在顯示器中輸入“R”,然后您可以執行要錄制的移動。

移動完成后,您必須輸入“P”才能播放錄制的動作。只要電路板未復位,伺服器就會繼續執行移動。
責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28582

    瀏覽量

    207816
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187477
收藏 人收藏

    評論

    相關推薦

    【「具身智能機器人系統」閱讀體驗】2.具身智能機器人的基礎模塊

    具身智能機器人的基礎模塊,這個是本書的第二部分內容,主要分為四個部分:機器人計算系統,自主機器人的感知系統,自主機器人的定位系統,自主
    發表于 01-04 19:22

    《具身智能機器人系統》第10-13章閱讀心得之具身智能機器人計算挑戰

    閱讀《具身智能機器人系統》第10-13章,我對具身智能機器人的工程實踐有了全新認識。第10章從實時性角度剖析了機器人計算加速問題。
    發表于 01-04 01:15

    【「具身智能機器人系統」閱讀體驗】+兩本互為支持的書

    最近在閱讀《具身智能機器人系統》這本書的同時,還讀了 《計算機視覺之PyTorch數字圖像處理》一書,這兩本書完全可以視為是互為依托的姊妹篇。《計算機視覺之PyTorch數字圖像處理》是介紹
    發表于 01-01 15:50

    【「具身智能機器人系統」閱讀體驗】2.具身智能機器人大模型

    近年來,人工智能領域的大模型技術在多個方向上取得了突破性的進展,特別是在機器人控制領域展現出了巨大的潛力。在“具身智能機器人大模型”部分,作者研究并探討了大模型如何提升
    發表于 12-29 23:04

    【「具身智能機器人系統」閱讀體驗】1.初步理解具身智能

    感謝 感謝電子發燒友網社區給予《具身智能機器人系統》試讀機會。在這知識的盛宴中,我感受到社區的關懷與支持。定不負期望,認真研讀,分享所學,回饋社區。 一、本書大綱 《具身智能機器人系統
    發表于 12-28 21:12

    【「具身智能機器人系統」閱讀體驗】1.全書概覽與第一章學習

    非常感謝電子發燒友提供的這次書籍測評活動!最近,我一直在學習大模型和人工智能的相關知識,深刻體會到機器人技術是一個極具潛力的未來方向,甚至可以說是推動時代變革的重要力量。能參與這次活動并有機會深入
    發表于 12-27 14:50

    【「具身智能機器人系統」閱讀體驗】+初品的體驗

    《具身智能機器人系統》 一書由甘一鳴、俞波、萬梓燊、劉少山老師共同編寫,其封面如圖1所示。 本書共由5部分組成,其結構和內容如圖2所示。 該書可作為高校和科研機構的教材,為學生和研究人員提供系統
    發表于 12-20 19:17

    《具身智能機器人系統》第1-6章閱讀心得之具身智能機器人系統背景知識與基礎模塊

    要給AI這個聰明的“頭腦”裝上一副“身體”。這個“身體”可以是一部手機,可以是一臺自動駕駛汽車。而人形機器人則是集各類核心尖端技術于一體的載體,是具身智能的代表產品。與傳統的軟件智能體不同,具身
    發表于 12-19 22:26

    變速齒輪在機器人中的使用

    扭矩的傳動裝置。它通常由多個不同大小的齒輪組成,通過齒輪間的嚙合來傳遞動力,并實現轉速和扭矩的轉換。 二、變速齒輪在機器人中的使用 驅動機器人手臂機器人手臂需要靈活、精確地移動
    的頭像 發表于 12-04 17:11 ?403次閱讀

    舵機技術深度解析,讓機器人智能

    你是否曾駐足于那些靈活的機器人手臂前,驚嘆于它們如何精準地抓取物品?或者你是否曾仰望藍天,對無人機那行云流水般的飛行軌跡感到好奇?這些令人矚目的技術成就,其背后的秘密武器,正是我們今天要深入探討
    的頭像 發表于 11-06 14:19 ?620次閱讀

    開源項目!用ESP32做一個可愛的無用機器人

    簡介 作者在完成碩士論文答辯后,利用空閑時間制作了一個他一直想做的機器人——可愛無用機器人。 無用機器人原理是一個連接到開關的電機,通過邏輯門控制。當開關被推到“開”時,
    發表于 09-03 09:34

    開源項目!用ESP32做一個可愛的無用機器人

    簡介 作者在完成碩士論文答辯后,利用空閑時間制作了一個他一直想做的機器人——可愛無用機器人。 無用機器人原理是一個連接到開關的電機,通過邏輯門控制。當開關被推到“開”時,
    發表于 08-30 14:50

    助力風電行業!深視智能SR7400線激光以機器人手眼標定實現風力葉片切割引導

    機器人手眼標定在機器人視覺領域,手眼標定是重要的一步,也是使自動化系統更加精確高效的關鍵一環。手眼標定可以幫助機器人轉換識別到的視覺信息,從而完成后續的控制工作(如抓取、焊接、噴涂、搬運等)。但對
    的頭像 發表于 07-27 08:45 ?441次閱讀
    助力風電行業!深視<b class='flag-5'>智能</b>SR7400線激光以<b class='flag-5'>機器人手</b>眼標定實現風力葉片切割引導

    AMD Kria? KR 260套件+ROS 2快速開發機器人解決方案

    在這個項目中,我們將配置AMD Kria? KR 260機器人入門套件來控制Trossen Robotics ReactorX 150機器人手臂。這個復雜的機器人手臂使用ROBOTIS ? IXEL
    的頭像 發表于 06-21 16:35 ?9229次閱讀
    AMD Kria? KR 260套件+ROS 2快速開發<b class='flag-5'>機器人</b>解決方案

    如何使用Arduino制作智能垃圾箱

    在這個項目中,我將向您展示如何使用Arduino制作智能垃圾箱,當您帶著垃圾接近時,垃圾箱的蓋子會自動打開。
    的頭像 發表于 02-11 12:22 ?3132次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>智能</b>垃圾箱
    主站蜘蛛池模板: 性性欧美| 欧美伊人久久综合网| 欧美在线天堂| 韩国理论片在线看2828dy| 天堂网www在线资源网| 天天在线影院| 久热国产在线| 天天色天天综合| 国产 高清 在线| 久久综合九色综合欧美狠狠| 四虎a级欧美在线观看| 四虎精品成在线播放| 全国男人的天堂网站| 久久久久四虎国产精品| 欧美色图 亚洲| 免费艹逼视频| 免费黄色网址网站| 黄 色 片成 人免费观看| 久久伦子沙发| 成 人色 网 站 欧美大片在线观看 | 拍拍拍交性免费视频| 激情五月婷婷基地| 久久精品夜色国产| 丁香5月婷婷| brazzersvideosex欧美高清| 国产色丁香久久综合| 99色在线| 嘿嘿午夜| 欧美 亚洲 国产 精品有声| 亚洲国产欧美日韩一区二区三区| 一级中文字幕乱码免费| 中文字幕欧美日韩| 色播五月激情| 国产精品欧美久久久久天天影视| 天天射美女| 黄 在线| 性欧美xxxxhd| 色噜噜狠狠狠狠色综合久| 久久精品综合网| 天天干天天干| 国产伦一区二区三区免费|