精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車?。ǖ?篇)

石勝厚 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-03-23 15:15 ? 次閱讀

到目前為止,我們已經在DevicePlus上介紹過Arduino的使用方法和一些應用案例。在本文中,我們將嘗試一個用Arduino讓傳感器工作的電子作品。此次的分享嘉賓是福田和宏先生!他過去曾在DevicePlus上連載過“Arduino基礎”等作品。

◆◆◆

大家好!讓我們直接進入主題吧。通過將幾個微控制器電子元器件相組合,就能創作出很多不同的作品。從機器人無人機等流行設備到鬧鐘和玩具等小物件,您可以實現各種創意。這次要為大家介紹的是一款名為“小雞賽車”的車形機器人的制作過程。

作品簡介

poYBAGPyz1KAUfxVAADOQAu7S_U103.jpg

使用這次的作品可以玩一種游戲,讓名為“小雞賽車”的車形機器人向著墻壁行駛,比賽從機器人停下的地方到墻壁的距離誰最短。它采用了可以通過按鈕來操作車形機器人的設計,因此任何人都可以輕松享受競賽游戲。

這款小雞賽車中配有電機,通過開關使其前進。參加游戲的人手握按鈕,當小車馬上要撞上墻壁時按下按鈕使之停止。

然后使用距離傳感器來測量賽車與墻壁之間的距離。即使和好幾個人一起玩,只要能測量出到墻壁的距離,就能比出誰在離墻壁最近的位置停下來了,是不是很有趣?

另外,我們還需要提前準備一個用來檢測是否已碰撞到墻壁的機制。我的設計是在小雞賽車的前端安裝了開關,這樣,如果它撞到墻上開關就會被按下。如果這個開關被按下,就意味著玩家失敗。

所需的電子零部件

在確定了小雞賽車的大致動作之后,讓我們來看看需要使用哪些電子零部件。這次我們將使用Arduino進行控制。由于“Arduino UNO”等產品體積較大,不適合安裝在這么小的作品上,因此,我決定使用體積小巧的“Arduino Nano”。“Arduino Nano”的尺寸為45×18mm,大小是可以放在食指上的程度,所以正好可以安裝在作品上,而不用擔心尺寸太大。另外,雖然體積更小,但卻具有與“Arduino Uno”相同的功能,這點很關鍵。

驅動電機使用配有齒輪的電機。這是因為齒輪會增強驅動的力量,這樣即使放置電池等較重的部件,也可以輕松地讓賽車跑起來。此外,還需要電機驅動器讓電機運轉。

使小雞賽車停下來的操作,我用按鈕開關來實現。這次,我想將開關線延長,以便從遠處也可以控制賽車。

我使用微動開關來判斷小雞賽車是否撞到了墻上,選用了附有金屬板的微動開關。金屬板的存在可以確保開關被按下而不必擔心碰撞角度。此外,通過在前方安裝左右兩個微動開關,可以提高發生碰撞時按下開關的準確性。

停止時,需要測量到墻壁的距離,我使用距離傳感器來完成這項工作。這次用的是可以使用超聲波測量距離的距離傳感器。

另外,我還希望在顯示器上顯示結果,以便讓玩家知道測量出來的距離。我使用的是字符液晶顯示器,這樣可以比較容易地顯示字符。

可以通過LED讓玩家知道開始的時間以及是否成功。安裝一個綠色和三個紅色的LED。通過倒計時來通知開始時間,先是所有紅色LED點亮,然后逐一熄滅,綠色LED點亮表示開始,賽車駛出。另外,如果成功了,綠色LED亮起;如果失敗了,則紅色LED亮起,據此來告知參賽者結果。

除此之外,還要配備調整電機速度和設置距離的功能。

pYYBAGPzDRWAeqvrAACwexjONKk611.png

接下來,我們根據小雞賽車的結構,來選擇電子零部件。這次使用的電子零部件如下:

pYYBAGPzDRuABevnAAWIP9JedYI752.png

Arduino Nano Every

使用“Arduino Nano Every”作為微控制器來負責控制。Arduino Nano Every是一款于2019年5月發售的新Arduino Nano。當然,如果不想使用Arduino Nano Every,使用舊Arduino Nano或與Arduino Nano兼容的產品也沒有問題。

pYYBAGPzDSSASqfXAAT7f47MdvU822.png

超聲波距離傳感器

通過發射超聲波并測量直到接收到墻壁反射回來的超聲波的時間來測量與對象物之間的距離。

poYBAGPzDSuAQBXIAAQebQuyQtQ297.png

字符液晶顯示器

可以顯示字符和符號的顯示器。這次使用的是“AQM1602Y-FLW-FBW”,最多可以顯示2行16個字符。此外,該顯示器有背光,因此即使在較暗環境下也可以查看所顯示的字符。

pYYBAGPzDTGAb871AAbPAXYAkVY393.png

圓形機器人底盤套件

該套件中包括電機、車輪和殼體。電機采用驅動力量較大的減速電機(齒輪電機)。按照說明書組裝,可以很容易地制作出小雞賽車殼體。將電子電路和傳感器等安裝到這個殼體里面,即可完成制作。當然,您也可以只購買電機,自己來制作殼體。

poYBAGPzDTeAJLv8AAKBMWdGKhk868.png

電機驅動器

使用輸出為1.0A的電機適用的可逆電機驅動器來驅動電機。這次我使用的產品規格如下:

【絕對最大額定值(Ta=25℃)】
電源電壓(VCC):18V
電源電壓(VM):18V
輸出電流(lomax):1A
工作溫度范圍:-20?75℃
保存溫度范圍:-55?150℃
推薦工作范圍】
電源電壓(VCC):6.5?15V
電源電壓(VM):6.5?15V
輸出H電壓設置:

編號 引腳名 功能
1 VREF 輸出H電壓設置引腳
2 OUT2 輸出引腳
3 RNF 輸出單元GND
4 OUT1 輸出引腳
5 VM 電源(電機輸出單元)
6 VCC 電源(小信號單元)
7 FIN 控制輸入(正)
8 GND GND
9 RIN 控制輸入(反)

為了使賽車的左右兩個車輪轉動,我使用了2個電機。

紅色LED
綠色LED

使用LED來通知倒計時和結果信息。我準備了3個紅色和1個綠色的LED。

poYBAGPzDT6AQpooAATTdtpYcvk231.png

按鈕開關

供玩家用來控制小雞賽車。為了便于操作,最好選擇能夠連接到面板的形狀。

pYYBAGPzDUWAcMC3AAWnyAaItb0036.png

微動開關

用來檢測是否與墻壁發生了碰撞。在賽車前方安裝左右兩個微動開關。

除了上述部件之外,我還使用了以下電子元器件:

電子元器件名稱 數量 URL
節拍開關 1 http://akizukidenshi.com/catalog/g/gP-03649/
滑動開關 2 https://www.amazon.co.jp/Zhejiang-Jianfu-Electronics-Co-%E5%9F%BA%E6%9D%BF%E7%94%A8%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-SS-12D00-G5-10%E5%80%8B%E3%82%BB%E3%83%83%E3%83%88/dp/B01L3MJZGS
半固定電阻器 2 http://akizukidenshi.com/catalog/g/gP-14855/
二極管 1 http://akizukidenshi.com/catalog/g/gI-07699/
330Ω電阻 6 http://akizukidenshi.com/catalog/g/gR-25331/
0.1μF電容器 4 http://akizukidenshi.com/catalog/g/gP-10147/
3P排針 1 https://www.amazon.co.jp/%E6%9C%AD%E5%B9%8C%E8%B2%BF%E6%98%93-%E3%83%94%E3%83%B3%E3%83%98%E3%83%83%E3%83%80-1%C3%973-3P-2%E5%80%8B%E5%85%A5%E3%82%8A%EF%BC%9Ccon-000%EF%BC%9E/dp/B00TP91KLK
跳線接頭 1 http://akizukidenshi.com/catalog/g/gP-03690/
電池扣 2 https://www.marutsu.co.jp/pc/i/14367/
電池(006P) 2 http://akizukidenshi.com/catalog/g/gB-03257/
萬用電路板 95×72mm 1 https://www.marutsu.co.jp/pc/i/237293/
萬用電路板 72×47mm 1 https://www.marutsu.co.jp/pc/i/144023/

另外,需要使用如下排母將每個電子元器件用導線連接起來。如果直接將布線焊接起來則不需要這些器件。

電子元器件名稱 數量 URL
L型6P排針 1 http://akizukidenshi.com/catalog/g/gC-05336/
42P排母 1 http://akizukidenshi.com/catalog/g/gC-05779/
Xh-2P連接器 針座 4 https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/B2B-XH-A-LF-SN/455-2247-ND/1651045
XH-2P連接器殼體 4 https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/XHP-2/455-2266-ND/555485
Xh連接器 4P針座 3 https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/B4B-XH-A-LF-SN/455-2249-ND/1651047
XH-4P連接器殼體 3 https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=2AP6-4SFL#
XH連接器觸頭 20 https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/SXH-001T-P0.6/455-1135-1-ND/527370
4P連接器殼體 1 http://akizukidenshi.com/catalog/g/gC-12153/
導線連接器 4 http://akizukidenshi.com/catalog/g/gC-12160/

當然,如果能實現同樣的功能,選擇其他電子元器件也沒有問題。在這種情況下,需要注意它們的連接方法和控制方向。

為Arduino供電

首先需要確保為Arduino提供的電源。由于這是一個能夠移動的作品,所以需要在作品自身上安裝電池等作為電源。Arduino Nano可以通過連接USB數據線供電。因此,還可以通過安裝移動電源等來實現供電。然而,目前市場上的移動電源很多是面向智能手機的,往往又大又重。此外,Arduino消耗的電量很小,不需要像移動電源那么大的容量。

因此,這次我用的是電池。Arduino中配有稱為“VIN”的引腳,當它與最大21V的電源相連接時,就會將電壓轉換為5V并為Arduino供電。因此,我使用了可輸出9V電壓的006P電池來供電。

將電池扣的正極(紅線)連接到“VIN”引腳,將負極(黑線)連接到“GND”引腳即可實現供電。

poYBAGPzDUmAU9dVAAH8f-WeIs4492.png

確認電子部件的工作情況

準備好電子部件后,需要確認每個電子部件是否可以正常工作。這是為了一旦出現無法工作的情況,便于采取諸如更換成其他電子部件等的措施。

在確認時,最好使用面包板進行連接。另外,如果能事先確認作品應該可以在實裝后正常工作,那么您在編寫程序時會更安心。

首先,我們來確認LED和開關是否能夠正常工作。另外,我們要確認一下按下開關后是否開始計數。

將LED連接到Arduino的數字輸出引腳可以打開和關閉LED。此外,我們還需要給LED連接一個電阻器,以防止過電流(關于更詳細的LED使用方法,請參閱“Arduino基礎:通過數字輸出來控制LED照明”(https://techclass.rohm.com.cn/knowledge/tech-info/how-tos/arduino/the-basics-of-arduino-control-led-lighting-with-digital-output))。

這次我使用3個紅色LED和1個綠色LED。將LED分別連接到Arduino的數字輸出引腳8、9、10、11。

玩家操作時使用的按鈕開關,連接數字輸入引腳即可讀取開關狀態。此外,通過將另一個引腳連接到GND,按下按鈕時數字輸入引腳的狀態會變為0V。另外,還要通過編程來啟用上拉功能,以使其在未按下按鈕時處于5V狀態,如果要了解更詳細的內容,請參考“Arduino基礎:讀取開關狀態”(https://techclass.rohm.com.cn/knowledge/tech-info/arduino/the-basics-of-arduino-reading-switch-states)。這次,我們連接數字輸入引腳7。

現在,讓我們將LED和開關連接到面包板上來嘗試計數吧。電子部件的連接如下圖所示。由于開關不能直接連接到面包板上,所以我們用焊接導線的方式連接。

poYBAGPzDVqAZG7oAALjGdnB3Gs594.png

連接好之后,創建以下程序。通過這個程序,當您按下開關時,所有紅色LED燈亮起,然后每秒熄滅1個LED燈,最后綠色LED燈亮起。

const int LED_RED1_PIN = 8;
const int LED_RED2_PIN = 9;
const int LED_RED3_PIN = 10;
const int LED_GREEN_PIN = 11;
const int SW_PIN = 7

void setup()
{
    pinMode( LED_RED1_PIN, OUTPUT );
    pinMode( LED_RED2_PIN, OUTPUT );
    pinMode( LED_RED3_PIN, OUTPUT );
    pinMode( LED_GREEN_PIN, OUTPUT );

    pinMode( SW_PIN, INPUT_PULLUP );

    digitalWrite( LED_RED1_PIN, LOW);
    digitalWrite( LED_RED2_PIN, LOW);
    digitalWrite( LED_RED3_PIN, LOW);
    digitalWrite( LED_GREEN_PIN, LOW);

}

void loop()
{
    if( digitalRead( SW_PIN ) == LOW ){
        while( digitalRead( SW_PIN ) == LOW ){
            delay( 10 );
        }

        digitalWrite( LED_RED1_PIN, HIGH );
        digitalWrite( LED_RED2_PIN, HIGH );
        digitalWrite( LED_RED3_PIN, HIGH );
        digitalWrite( LED_GREEN_PIN, LOW );
        delay( 3000 );

        digitalWrite( LED_RED1_PIN, LOW );
        delay( 1000 );
        digitalWrite( LED_RED2_PIN, LOW );
        delay( 1000 );
        digitalWrite( LED_RED3_PIN, LOW );
        digitalWrite( LED_GREEN_PIN, HIGH );
}

將程序傳輸到Arduino,就可以確認按下按鈕時LED是否按預期工作啦。

◆◆◆

這次我簡單為大家介紹了“小雞賽車”以及所需的電子部件。下一次,我將為大家介紹如何確認超聲波距離傳感器等電子部件的工作情況,以及整個電子電路的創建方法。

福田和宏

作家,居住在日本札幌。喜歡撰寫有關電子創作、電腦、Linux、智能手機等方面的文章。在為“Raspberry Pi Magazine”和“日經Linux”供稿。著有《這本書足夠!Raspberry Pi超簡單入門教程》(SOTECHSHA)、《學習各種電子元器件的控制!Arduino電子創作 實戰教程》(SOTECHSHA)、《Arduino實用入門》(技術評論出版社)等書籍。目前,創辦了“札幌電子工藝部”(https://sapporo-elec.com/),這里匯集了眾多電子創作發燒友,大家使用各自的電子技能創作各種作品。任何人都可以參加,也期待您的加入!

審核編輯黃宇

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

    關注

    241

    文章

    23136

    瀏覽量

    658474
  • Arduino
    +關注

    關注

    187

    文章

    6464

    瀏覽量

    186651
  • 距離傳感器
    +關注

    關注

    3

    文章

    74

    瀏覽量

    15107
收藏 人收藏

    評論

    相關推薦

    STM32F103中斷服務程序里設置斷點沒有停下來是什么原因引起的?

    STM32F103程序,調試時定時中斷服務程序中設置了斷點,但是沒有停下來,程序能正常運行,看中斷里的變量也有變化。多設置幾個斷點也沒用。 其它地方設置斷點就可以停下來。 請問這是
    發表于 04-07 08:02

    怎么讓程序停下來

    我自己編的個程序,想讓舵機正轉45度延時10ms后反轉45度然后停下來,可是舵機直重復剛才的動作,怎么讓它執行次就停下來。#inclu
    發表于 04-14 22:39

    MDK如何設置變量數值變化到設定值后讓程序停下來

    的芯片是STM32F103CB,MDK中,如何設置變量數值變化到設定值后讓程序停下來,謝謝。
    發表于 10-04 14:54

    晃動pitch軸時角度值要過好幾秒才能停下來

    晃動pitch軸的時候,角度值要過好幾秒才能停下來,晃動roll軸的時候還好點,請問是什么問題
    發表于 05-31 01:27

    請問edma方式播放聲音如何讓循環播放的聲音停下來?

    想問兩個問題:1、AUDIO LINE OUT 例程中,edma方式播放聲音,如何讓循環播放的聲音停下來。做交互時很困擾,聲音旦播放就停不下來
    發表于 09-06 08:29

    大扭矩舵機怎么才能讓它停下來

    店里買了個360度的大扭矩舵機,給它個Write(0),它就直轉,怎么才能讓它停下來
    發表于 05-27 05:55

    如何利用STM32適用的代碼讓步進電機停下來

    是否可以指令去步進電機停呢?如何利用STM32適用的代碼讓步進電機停下來呢?
    發表于 12-13 06:08

    基于Arduino Nano和HC-SR04超聲波傳感器制作社交距離項目

    描述基于 Arduino Nano、超聲波傳感器和 LED 模塊的針對 Covid-19 冠狀病毒的社會隔離項目本教程中,您將學習如何基于 Arduino Nano 和 HC-SR0
    發表于 08-09 06:30

    JTAG工具如何才能讓CPU停下來

    通過JTAG 接口,debug ARM Cortex-A7平臺時:JTAG tool與CPU Core連接后,通過halt命令,會讓CPU停下來?這是如何做到的?會做些CoreSight相關
    發表于 08-18 11:14

    JTAG工具如何才能讓CPU停下來

    通過JTAG 接口,debug ARM Cortex-A7平臺時:JTAG tool與CPU Core連接后,通過halt命令,會讓CPU停下來?這是如何做到的?會做些CoreSight相關register設置嗎?
    發表于 10-19 11:10

    使用超聲波傳感器HC SR04和Arduino Uno制作超聲波距離傳感器

    電子發燒友網站提供《使用超聲波傳感器HC SR04和Arduino Uno制作超聲波距離傳感器.zip》資料免費下載
    發表于 10-31 09:35 ?1次下載
    使用超聲波<b class='flag-5'>傳感器</b>HC SR04和<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>超聲波<b class='flag-5'>距離</b><b class='flag-5'>傳感器</b>

    使用Labview、Arduino和超聲波傳感器制作距離/測距程序

    電子發燒友網站提供《使用Labview、Arduino和超聲波傳感器制作距離/測距程序.zip》資料免費下載
    發表于 11-30 11:19 ?6次下載
    使用Labview、<b class='flag-5'>Arduino</b>和超聲波<b class='flag-5'>傳感器</b><b class='flag-5'>制作</b><b class='flag-5'>距離</b>/測距程序

    Arduino和加速度傳感器制作數字滾球迷宮【后篇】

    Arduino和加速度傳感器制作數字滾球迷宮?這次將為大家介紹個使用
    的頭像 發表于 02-20 11:54 ?1649次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b>和加速度<b class='flag-5'>傳感器</b><b class='flag-5'>制作</b>數字滾球迷宮【后篇】

    Arduino距離傳感器制作小雞賽車!(3?最終篇)

    該項目旨在介紹Arduino傳感器工作的個電子作品。此次的分享嘉賓是福田和宏先生!他過去曾在DevicePlus上連載過“Arduino
    的頭像 發表于 02-20 11:12 ?854次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b>和<b class='flag-5'>距離</b><b class='flag-5'>傳感器</b><b class='flag-5'>制作</b><b class='flag-5'>小雞</b><b class='flag-5'>賽車</b>!(<b class='flag-5'>第</b>3<b class='flag-5'>篇</b>?最終篇)

    Arduino距離傳感器制作小雞賽車?。?b class='flag-5'>第2

    1最后一刻停下來!
    的頭像 發表于 02-20 10:25 ?918次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b>和<b class='flag-5'>距離</b><b class='flag-5'>傳感器</b><b class='flag-5'>制作</b><b class='flag-5'>小雞</b><b class='flag-5'>賽車</b>!(<b class='flag-5'>第</b>2<b class='flag-5'>篇</b>)