RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

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

◆◆◆

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

作品簡介

poYBAGPyz1KAUfxVAADOQAu7S_U103.jpg

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

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

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

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

所需的電子零部件

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

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

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

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

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

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

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

除此之外,還要配備調(diào)整電機(jī)速度和設(shè)置距離的功能。

pYYBAGPzDRWAeqvrAACwexjONKk611.png

接下來,我們根據(jù)小雞賽車的結(jié)構(gòu),來選擇電子零部件。這次使用的電子零部件如下:

pYYBAGPzDRuABevnAAWIP9JedYI752.png

Arduino Nano Every

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

pYYBAGPzDSSASqfXAAT7f47MdvU822.png

超聲波距離傳感器

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

poYBAGPzDSuAQBXIAAQebQuyQtQ297.png

字符液晶顯示器

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

pYYBAGPzDTGAb871AAbPAXYAkVY393.png

圓形機(jī)器人底盤套件

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

poYBAGPzDTeAJLv8AAKBMWdGKhk868.png

電機(jī)驅(qū)動器

使用輸出為1.0A的電機(jī)適用的可逆電機(jī)驅(qū)動器來驅(qū)動電機(jī)。這次我使用的產(chǎn)品規(guī)格如下:

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

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

為了使賽車的左右兩個車輪轉(zhuǎn)動,我使用了2個電機(jī)。

紅色LED
綠色LED

使用LED來通知倒計時和結(jié)果信息。我準(zhǔn)備了3個紅色和1個綠色的LED。

poYBAGPzDT6AQpooAATTdtpYcvk231.png

按鈕開關(guān)

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

pYYBAGPzDUWAcMC3AAWnyAaItb0036.png

微動開關(guān)

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

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

電子元器件名稱 數(shù)量 URL
節(jié)拍開關(guān) 1 http://akizukidenshi.com/catalog/g/gP-03649/
滑動開關(guān) 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/

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

電子元器件名稱 數(shù)量 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/
導(dǎo)線連接器 4 http://akizukidenshi.com/catalog/g/gC-12160/

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

為Arduino供電

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

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

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

poYBAGPzDUmAU9dVAAH8f-WeIs4492.png

確認(rèn)電子部件的工作情況

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

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

首先,我們來確認(rèn)LED和開關(guān)是否能夠正常工作。另外,我們要確認(rèn)一下按下開關(guān)后是否開始計數(shù)。

將LED連接到Arduino的數(shù)字輸出引腳可以打開和關(guān)閉LED。此外,我們還需要給LED連接一個電阻器,以防止過電流(關(guān)于更詳細(xì)的LED使用方法,請參閱“Arduino基礎(chǔ):通過數(shù)字輸出來控制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的數(shù)字輸出引腳8、9、10、11。

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

現(xiàn)在,讓我們將LED和開關(guān)連接到面包板上來嘗試計數(shù)吧。電子部件的連接如下圖所示。由于開關(guān)不能直接連接到面包板上,所以我們用焊接導(dǎo)線的方式連接。

poYBAGPzDVqAZG7oAALjGdnB3Gs594.png

連接好之后,創(chuàng)建以下程序。通過這個程序,當(dāng)您按下開關(guān)時,所有紅色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 );
}

將程序傳輸?shù)紸rduino,就可以確認(rèn)按下按鈕時LED是否按預(yù)期工作啦。

◆◆◆

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

福田和宏

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

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23252

    瀏覽量

    660554
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186950
  • 距離傳感器
    +關(guān)注

    關(guān)注

    3

    文章

    75

    瀏覽量

    15121
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    怎么讓程序停下來

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

    MDK如何設(shè)置變量數(shù)值變化到設(shè)定值后讓程序停下來

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

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

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

    請問edma方式播放聲音如何讓循環(huán)播放的聲音停下來

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

    大扭矩舵機(jī)怎么才能讓它停下來

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

    如何利用STM32適用的代碼讓步進(jìn)電機(jī)停下來

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

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

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

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

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

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

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

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

    電子發(fā)燒友網(wǎng)站提供《使用超聲波傳感器HC SR04和Arduino Uno制作超聲波距離傳感器.zip》資料免費下載
    發(fā)表于 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和超聲波傳感器制作距離/測距程序

    電子發(fā)燒友網(wǎng)站提供《使用Labview、Arduino和超聲波傳感器制作距離/測距程序.zip》資料免費下載
    發(fā)表于 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和加速度傳感器制作數(shù)字滾球迷宮【后篇】

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

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

    該項目旨在介紹Arduino傳感器工作的個電子作品。此次的分享嘉賓是福田和宏先生!他過去曾在DevicePlus上連載過“Arduino
    的頭像 發(fā)表于 02-20 11:12 ?893次閱讀
    <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距離傳感器制作小雞賽車!(2

    1最后一刻停下來!
    的頭像 發(fā)表于 02-20 10:25 ?959次閱讀
    <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>)
    RM新时代网站-首页