<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

如何使用Arduino構建一個電子動畫眼睛

科技觀察員 ? 來源:circuitdigest ? 作者:Debashis Das ? 2022-07-10 09:52 ? 次閱讀

在這個項目中,我們將使用 Arduino 構建一個動畫眼睛。在網上尋找新的項目創意時,我萌生了制作動畫眼睛的想法,這個項目立即引起了我的注意。首先,它看起來很酷,并且有一個簡單的機制,我在做這個項目時學到了很多關于機電一體化的知識。非常感謝Will Cogley構建 3D 模型并讓社區可以訪問所有源文件,用他的話來說,他想設計它,以便制造商社區更容易訪問它。這個動畫眼睛設計有兩個版本,一個簡單的和一個高級的,對于這個項目,我們認為構建簡單的,在這個過程中,我們會告訴你構建經驗以及我們遇到的問題。

構建 3D 打印電子動畫眼睛所需的組件

這個項目的 BOM 非常小,因為所有的辛苦工作都是由 3D 打印機完成的,我們只需要一些螺絲和粗體,大部分你可以在當地的愛好商店找到。下面給出了 BOM 的完整列表。

六臺SG90伺服電機

螺釘 M2、M3 和 M4

Arduino UNO

跨接電纜

面包板

針頭機

PLA 燈絲和 3D 打印機

后處理和組裝 - 電子動畫眼睛機構

要使用這個項目,我們需要首先打印所有 3D 模型,您可以在Ikkalebob instructables中找到 3D 模型。打印完所有 3D 部件后,您需要打磨眼睛和其他一些順利合作所需的部件,一旦這些部件完成,我們就可以繼續進行組裝過程。如果您正確打印了每個部分,您的產品應該類似于下圖。

pYYBAGLKMFaAXnc8AAThsAVqw_U153.png

我們將通過將 6 個伺服電機中的 5 個連接到Servo_Block模塊來開始構建,如下圖所示。為了捕捉圖像,我必須使用黑色作為背景,因為它增加了圖像的細節層次。

poYBAGLKMEGAetU-AAeUnBKQBCo185.png

現在我們將Servo_Block連接到Main_Base,如下圖所示。我們還使用了四個 12 毫米 M3 內六角螺釘來制作設備的支腿。

pYYBAGLKMECAIzHIAAbNPmU2pvQ767.png

接下來,我們將為雙眼連接 Eye-Adaptor 和 Fork。完成后,我們將 Eye-Holder 與 Eye-Adaptor 和Three-point_Connector與 Fork 連接。完成所有這些過程后,它將如下圖所示。

pYYBAGLKMDyAOnV2AAW_4NhpUkQ564.png

完成后,我們將第六個和最后一個伺服器連接到Sub_Base,然后用螺絲將Sub_Base連接到Main_Base。在此之后,我們將 PlaceHolder Eye 彈出到眼睛適配器。我們還用螺釘連接了 X 臂和 Y 臂。

poYBAGLKMDWAImZJAAclABb6buA882.png

現在我們將眼瞼連接器連接到眼瞼,我們使用 M3 螺釘從兩側將眼瞼固定到位。

pYYBAGLKMDKAFmVdAAbrzxZcfKo911.png

如果您已正確完成所有操作,圖像將類似于上圖所示的圖像 ,您可以看到我們已將所有眼瞼與眼瞼連接器連接起來,并且我們已將它們與伺服電機的臂擰緊。完成后,我們可以進入編碼過程。

3D打印的Animatronic眼睛電路圖

DIY 3D 打印的仿真眼示意圖如下圖所示,您可以看到它非常簡單易懂。雖然項目設計者和作者提供的原理圖中使用了 PCA9685 IC,一個 16 通道 12 位 PWM 伺服電機驅動器,但我們不會在這個項目中使用它,因為 Arduino 的伺服庫可以輕松處理六個伺服器。

pYYBAGLKMCyAIwsgAAGQuQ8Daas618.png

正如我們之前所說,硬件連接非常簡單。我們使用 Arduino 的六個引腳來控制六個伺服電機。如果我們快速瀏覽一下 Arduino 的規格,您會發現 Arduino 有六個 PWM 引腳,我們正在使用所有這些引腳來控制所有六個伺服電機。

用于控制動畫眼睛的 Arduino 代碼

動畫眼睛 Arduino 代碼非常簡單易懂。為了使這段代碼正常工作,我們將使用 Arduino 的Servo.h 庫。

我們通過包含所需的庫并定義控制所有六個伺服電機所需的所有實例來開始我們的代碼。

#include <伺服.h>
伺服 top_left_eyelid;
伺服底部_左眼瞼;
伺服 top_right_eyelid;
伺服bottom_right_eyelid;
伺服紗線;
伺服 Xarm;

接下來,我們有我們的setup()函數。在 setup 函數中,我們已經聲明了眼睛的哪個部分連接到 Arduino 的哪個引腳。這非常有用,因為我們可以拔下所有連接器并按原樣連接。

  top_left_eyelid.attach(10);
  bottom_left_eyelid.attach(11);
  top_right_eyelid.attach(5);
  bottom_right_eyelid.attach(6);
  Yarm.attach(9);
  Xarm.attach(3);

接下來,我們初始化串口進行調試,并調用一些函數以保持眼睛睜開并位于中心,我們還添加了一些延遲以保持穩定性。

  序列號.開始(9600);
  開眼();
  眼球中心();
  延遲(2000);

接下來,我們有我們的loop()函數,但在我們解釋循環函數之前,我們將解釋一些更重要的函數,這些函數對于理解循環函數內部的內容是必要的。這些功能是最重要的功能,有了這些,我們將移動系統的眼球。首先,我們有open_eye()函數。如果你看硬件,你需要順時針移動一個伺服器,逆時針方向移動另一個伺服器,我們對左右眼瞼都做同樣的事情。

無效的開眼(){
  top_left_eyelid.write(55);
  bottom_left_eyelid.write(36);
  top_right_eyelid.write(2);
  bottom_right_eyelid.write(160);
}

接下來是close_eye()函數,在close_eye函數中,我們將做與open_eye函數完全相同的事情,但相反。

無效 close_eye() {
  top_left_eyelid.write(2);
  bottom_left_eyelid.write(120);
  top_right_eyelid.write(46);
  bottom_right_eyelid.write(55);
}

接下來,我們有look_up()和look_down()函數。如果您查看硬件,移動設備的 Y 臂會使眼球上下移動。

無效查找(){
  Yarm.write(132);
}
無效look_down(){
  Yarm.write(45);
}

接下來,我們有eye_ball_left()和eye_ball_right()函數,它們與 up 和 down 函數相同,唯一的區別在于設備的角度。

無效 eye_ball_left() {
  Xarm.write(50);
}
無效的eye_ball_right(){
  Xarm.write(130);
}

接下來我們有eye_ball_centert()函數。在此功能中,我們將 X 臂和 Y 臂設置為 90 度角,以便我們可以將眼睛移動到死點。

無效的eye_ball_centert(){
  Xarm.write(90);
  Yarm.write(90);
}

現在我們有了一些我編寫的其他函數,以使我們的生活更輕松。在該列表中,我們首先有synchronous_close()函數,調用此函數將關閉并打開一次眼睛。

無效同步關閉(){
  close_eye();
  延遲(420);
  開眼();
  延遲(222);
}

然后我們有random_close()函數,它將隨機打開和關閉眼睛。這將產生很酷的效果。

無效隨機關閉(){
  close_eye();
  延遲(隨機(220、880));
  開眼();
  延遲(隨機(220、880));
}

接下來,我們有random_movement()函數。在這個函數中,我們在延遲函數中使用了 Arduino 的random()函數來使眼睛隨機移動。

無效隨機運動(){
  Xarm.write(60);
  延遲(隨機(250、340));
  Yarm.write(80);
  延遲(隨機(250、340));
  Xarm.write(120);
  延遲(隨機(250、340));
  Yarm.write(140);
  Xarm.write(60);
  延遲(隨機(250、340));
  Yarm.write(80);
  延遲(隨機(250、340));
  Xarm.write(120);
  延遲(隨機(250、340));
  Yarm.write(140);
  眼球中心();
  延遲(300);
  同步關閉();
  隨機關閉();
}

現在我們將解釋 void 循環功能,它是 Arduino 的主要功能。在這個函數中,我們將眼睛向左、向右和居中移動,然后上下移動,然后我們會讓眼睛眨眼。我們將這樣做幾次并做出隨機動作。最后,我們有兩個 for 循環。for 循環是如何實現平滑運動或移動眼球的示例。

無效循環(){
  eye_ball_left();
  延遲(680);
  eye_ball_right();
  延遲(680);
  眼球中心();
  延遲(450);
  同步關閉();
  眼球中心();
  延遲(450);
  抬頭();
  延遲(400);
  向下看();
  延遲(400);
  眼球中心();
  延遲(300);
  隨機關閉();
  延遲(450);
  抬頭();
  延遲(400);
  向下看();
  延遲(400);
  隨機運動();
  延遲(400);
  眼球中心();
  延遲(300);
  top_left_eyelid.write(2);
  bottom_left_eyelid.write(120);
  延遲(200);
  top_left_eyelid.write(55);
  bottom_left_eyelid.write(36);
  延遲(200);
  開眼();
  延遲(500);
  對于 (int i = 60; i < 120; i++)
  {
    Xarm.write(i);
    Yarm.write(i - 5);
    延遲(10);
  }
  眼球中心();
  延遲(400);
  同步關閉();
  for (int i = 120; i > 60; i--) {
    Xarm.write(i);
    Yarm.write(i - 5);
    延遲(10);
  }
}

這標志著代碼部分的結束,我們可以繼續閱讀本文的下一部分。

測試和調試 3D 打印的電子動畫眼睛

由于項目的機械部分有點忙,有很多事情在第一次開始時沒有奏效,所以在本節中,我想討論這些話題。

我們遇到的第一個問題是eye_place_holders移動不順暢,并且eye_place_holders和eye_lids之間存在很多摩擦。

poYBAGLKMCKAKbGPAAbkhoEa7Bk751.png

解決此問題的方法是丟失固定眼支架和設備底座的螺釘,這些螺釘是上面所示的標記螺釘。

下一個問題是如何將伺服臂連接到eye_lid和X-arm和Y-arm 的臂。這是一個大問題,因為如果沒有適當的接頭,設備將無法順利工作,因此在下圖中您可以看到所有伺服臂的圖片。

poYBAGLKMCKAfbUOAAL7THKBYlw355.png

代碼

#include <伺服.h>


伺服 top_left_eyelid;
伺服底部_左眼瞼;
伺服 top_right_eyelid;
伺服bottom_right_eyelid;
伺服紗線;
伺服 Xarm;
無效設置(){
top_left_eyelid.attach(10);
bottom_left_eyelid.attach(11);
top_right_eyelid.attach(5);
bottom_right_eyelid.attach(6);
Yarm.attach(9);
Xarm.attach(3);
序列號.開始(9600);
開眼();
眼球中心();
延遲(2000);
}
無效循環(){
eye_ball_left();
延遲(680);
eye_ball_right();
延遲(680);
眼球中心();
延遲(450);
同步關閉();
//同步關閉();
眼球中心();
延遲(450);
抬頭();
延遲(400);
向下看();
延遲(400);
眼球中心();
延遲(300);
隨機關閉();
延遲(450);
抬頭();
延遲(400);
向下看();
延遲(400);
隨機運動();
延遲(400);
眼球中心();
延遲(300);
top_left_eyelid.write(2);
bottom_left_eyelid.write(120);
延遲(200);
top_left_eyelid.write(55);
bottom_left_eyelid.write(36);
延遲(200);
開眼();
延遲(500);
對于 (int i = 60; i < 120; i++)
{
Xarm.write(i);
Yarm.write(i - 5);
延遲(10);
}
眼球中心();
延遲(400);
同步關閉();
for (int i = 120; i > 60; i--) {
Xarm.write(i);
Yarm.write(i - 5);
延遲(10);
}
}
無效隨機運動(){
Xarm.write(60);
延遲(隨機(250、340));
Yarm.write(80);
延遲(隨機(250、340));
Xarm.write(120);
延遲(隨機(250、340));
Yarm.write(140);
Xarm.write(60);
延遲(隨機(250、340));
Yarm.write(80);
延遲(隨機(250、340));
Xarm.write(120);
延遲(隨機(250、340));
Yarm.write(140);
眼球中心();
延遲(300);
同步關閉();
隨機關閉();
}
無效隨機關閉(){
close_eye();
延遲(隨機(220、880));
開眼();
延遲(隨機(220、880));
}
無效同步關閉(){
close_eye();
延遲(420);
開眼();
延遲(222);
}
無效 eye_ball_left() {
Xarm.write(50);
}
無效的eye_ball_right(){
Xarm.write(130);
}
無效的eye_ball_centert(){
Xarm.write(90);
Yarm.write(90);
}
無效查找(){
Yarm.write(132);
}
無效look_down(){
Yarm.write(45);
}
無效 close_eye() {
top_left_eyelid.write(2);
bottom_left_eyelid.write(120);
top_right_eyelid.write(46);
bottom_right_eyelid.write(55);
}
無效的開眼(){
top_left_eyelid.write(55);
bottom_left_eyelid.write(36);
top_right_eyelid.write(2);
bottom_right_eyelid.write(160);
}

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

    關注

    185

    文章

    6432

    瀏覽量

    185054
  • DIY設計
    +關注

    關注

    2

    文章

    59

    瀏覽量

    19736
  • 3D打印
    +關注

    關注

    26

    文章

    3485

    瀏覽量

    107730
收藏 人收藏

    評論

    相關推薦

    如何構建Arduino官方開發環境

    本系列教程將向大家講述,在自己的計算機上構建完善的嵌入式系統開發環境的方法。本文將向大家講述構建Arduino官方開發環境的方法。Arduino簡介:
    發表于 12-24 06:44

    如何利用arduino實現緩動動畫庫CxgAnimate

    在javascript里有動畫庫,在c和單片機領域內沒見過誰做個呼吸燈效果能抽象出,這個過程其實是動畫。受js
    發表于 01-07 08:26

    使用Arduino構建數字羅盤

    方向。在本文中,您將學習如何使用 Arduino 構建自己的數字羅盤。通過它,您將能夠了解HMC5883L傳感器的完整操作,來檢測它的方位方向。此外,您將學習如何構建自己的電子羅盤板并
    發表于 08-25 06:11

    如何使用Arduino構建可調電子負載

    在本教程中,我們將學習如何使用 Arduino 構建我們自己的可調電子負載,最大輸入電壓為 24V,漏極電流高達 5A。
    發表于 08-17 16:10 ?1826次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>構建</b>可調<b class='flag-5'>電子</b>負載

    Arduino控制時鐘和動畫開源分享

    電子發燒友網站提供《Arduino控制時鐘和動畫開源分享.zip》資料免費下載
    發表于 10-27 09:23 ?0次下載
    <b class='flag-5'>Arduino</b>控制時鐘和<b class='flag-5'>動畫</b>開源分享

    帶有Neopixel環形動畫Arduino時鐘

    電子發燒友網站提供《帶有Neopixel環形動畫Arduino時鐘.zip》資料免費下載
    發表于 11-07 16:16 ?1次下載
    帶有Neopixel環形<b class='flag-5'>動畫</b>的<b class='flag-5'>Arduino</b>時鐘

    使用Arduino uno R3的Mechatron動畫工作室

    電子發燒友網站提供《使用Arduino uno R3的Mechatron動畫工作室.zip》資料免費下載
    發表于 11-22 09:39 ?0次下載
    使用<b class='flag-5'>Arduino</b> uno R3的Mechatron<b class='flag-5'>動畫</b>工作室

    使用Alexa和Arduino動畫智能燈

    電子發燒友網站提供《使用Alexa和Arduino動畫智能燈.zip》資料免費下載
    發表于 12-09 10:23 ?0次下載
    使用Alexa和<b class='flag-5'>Arduino</b>的<b class='flag-5'>動畫</b>智能燈

    使用Arduino UNO構建游戲

    電子發燒友網站提供《使用Arduino UNO構建游戲.zip》資料免費下載
    發表于 12-29 14:04 ?0次下載
    使用<b class='flag-5'>Arduino</b> UNO<b class='flag-5'>構建</b>游戲

    Arduino簡單的滑塊構建電子設備

    電子發燒友網站提供《Arduino簡單的滑塊構建電子設備.zip》資料免費下載
    發表于 12-30 09:45 ?0次下載
    <b class='flag-5'>Arduino</b>簡單的滑塊<b class='flag-5'>構建</b><b class='flag-5'>電子</b>設備

    構建小型工作電子動畫

    電子發燒友網站提供《構建小型工作電子動畫頭.zip》資料免費下載
    發表于 06-09 14:41 ?0次下載
    <b class='flag-5'>構建</b>小型工作<b class='flag-5'>電子</b><b class='flag-5'>動畫</b>頭

    使用Raspberry Pi和Arduino實現Web控制的LED動畫

    電子發燒友網站提供《使用Raspberry Pi和Arduino實現Web控制的LED動畫.zip》資料免費下載
    發表于 07-03 14:52 ?0次下載
    使用Raspberry Pi和<b class='flag-5'>Arduino</b>實現Web控制的LED<b class='flag-5'>動畫</b>

    Arduino戒指的構建

    電子發燒友網站提供《Arduino戒指的構建.zip》資料免費下載
    發表于 07-04 09:39 ?2次下載
    <b class='flag-5'>Arduino</b>戒指的<b class='flag-5'>構建</b>

    小型Arduino獨立構建

    電子發燒友網站提供《小型Arduino獨立構建.zip》資料免費下載
    發表于 07-05 14:49 ?0次下載
    小型<b class='flag-5'>Arduino</b>獨立<b class='flag-5'>構建</b>

    Arduino動畫矩陣骰子

    電子發燒友網站提供《Arduino動畫矩陣骰子.zip》資料免費下載
    發表于 07-06 09:05 ?0次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>動畫</b>矩陣骰子
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>