資料介紹
描述
概述
本教程使用相當(dāng)簡(jiǎn)單的電子設(shè)備來(lái)增強(qiáng)毛絨玩具,但可能用于任何項(xiàng)目。
這不是一篇關(guān)于縫紉的文章,只是關(guān)于 C++ 和 MIT AI2 中的電子學(xué)和編碼。
介紹
前段時(shí)間,我拜訪了一家知名的商業(yè)街零售商,為一個(gè)項(xiàng)目購(gòu)買了音效。他們拒絕了,并制作了“名單”。我不會(huì)使用零售商的名稱,但我們稱他們?yōu)椤癕ake-a-Bear”,這樣沒(méi)人會(huì)猜到他們的真名。
如果沒(méi)有挫折,你就不會(huì)對(duì)電子產(chǎn)品感興趣,所以我并沒(méi)有被嚇倒,我開(kāi)始尋找替代品,并開(kāi)始制定計(jì)劃。我意識(shí)到我需要一個(gè)身體,而“Team Girl”不愿意從她大量的“Make-a-Bears”中提供一名志愿者。
從另一個(gè)挫折中恢復(fù)過(guò)來(lái),證明必要性是發(fā)明的引擎,我找到了一只舊怪物拖鞋、一件舊睡袍、一件舊衣服和一條領(lǐng)結(jié)。Bobbs 是由所有這些零碎組成的,但他需要生命,所以我給他塞了一個(gè) Arduino 風(fēng)格的處理器、FX 音板和用于眼睛的三色 LED。
然后事情就失控了(而且價(jià)格昂貴)。
他需要一個(gè)聲音
一些發(fā)光的喇叭怎么樣?
Tickley 腳?是的
傾斜傳感器?是的
暗傳感器?是的
通過(guò) HC06 藍(lán)牙模塊由 Andriod 手機(jī)控制?真他媽的對(duì)
只有一個(gè) Bobbs,但沒(méi)有理由不能在您自己的項(xiàng)目中使用某些想法。我發(fā)現(xiàn)同時(shí)使用他的一種或多種能力可以獲得最好的結(jié)果。例如,如果 Bobbs 被撞倒,傾斜傳感器會(huì)將他的眼睛變成紅色,喇叭會(huì)閃爍紅色,他會(huì)咆哮并說(shuō)“抱我起來(lái)”。
為糟糕的布局道歉。這里有更好的版本
補(bǔ)給品
我盡可能使用 Adafruit、SparkFun 和 Arduino 產(chǎn)品。我嘗試過(guò) Ebay 的廉價(jià)仿冒組件;從我的錯(cuò)誤中吸取教訓(xùn)并購(gòu)買合適的組件。他們可能會(huì)多花幾英鎊/美元,但你會(huì)省下很多麻煩。網(wǎng)站上的支持非常好。
SparkFun Pro Micro(或任何 Arduino 風(fēng)格的微處理器)
5v 電池 - Bobbs 使用老式的無(wú)線電遙控汽車電源組,因?yàn)樗鼈兛梢蕴峁┐罅堪才?,但他將使?4 節(jié) AA 電池運(yùn)行
Adafruit FX 板
Emic 2語(yǔ)音芯片
2通道D類3W放大器
6v電機(jī)
3 個(gè)傾斜傳感器
三色 LED
4017 十進(jìn)制計(jì)數(shù)器
HC-06藍(lán)牙模塊
Vero 板
電線 - 我使用的是杜邦連接器,因?yàn)樗鼈兒芎玫匕惭b在插頭引腳上,但它們總是分開(kāi)。
接頭引腳和連接器
功率晶體管
太陽(yáng)能板
二極管
一個(gè)可以把所有東西都放進(jìn)去的盒子
安卓設(shè)備
第 1 步:大腦
Bobbs 的大腦(可能擴(kuò)展了定義)是一個(gè) SparkFun 處理器,這些可以在 eBay 上以幾英鎊/美元的價(jià)格買到。
我假設(shè)您知道如何對(duì) Arduino 進(jìn)行編程。如果沒(méi)有,請(qǐng)學(xué)習(xí)!這是一個(gè)很棒的微處理器,你的生活會(huì)好很多。
具體參考在這里;
這是一個(gè)很好的緊湊板,有足夠的引腳讓我們現(xiàn)在很開(kāi)心。它有 32k 的內(nèi)存,所以我們?cè)谀抢镉悬c(diǎn)受限,但對(duì)于合理數(shù)量的代碼仍然足夠,因?yàn)?C++ 相當(dāng)高效。
如果您使用的是 Arduino Create,SparkFun Pro Micro 喜歡認(rèn)為它是 Arduino Leonardo。
第 2 步:電源
滿載的 Bobbs 使用了大量的果汁,所以我們需要相當(dāng)大的東西來(lái)提供放大器。我使用了一個(gè)舊的 Nimh RC 汽車電池,該電池已被削減為 4.8v。
為了環(huán)保,Bobbs 在他的背上安裝了一塊 6 伏的太陽(yáng)能電池板。Bobbs 電池通過(guò)太陽(yáng)能充電一點(diǎn)。二極管可防止電池在夜間通過(guò)太陽(yáng)能電池板放電。
在這種配置中,他運(yùn)行了大約一天。
第三步:眼睛
讓我們從簡(jiǎn)單的事情開(kāi)始。我們使用 2 個(gè)三色 LED、微處理器、50 歐姆電阻和一些電線。
紅色腿連接到引腳 5,綠色連接到引腳 6,藍(lán)色連接到引腳 9。負(fù)腿通過(guò) 50 歐姆電阻接地。亮度由 Arduino 使用脈沖寬度調(diào)制控制。擁有單獨(dú)的引腳意味著可以創(chuàng)建多種顏色。
這是對(duì)代碼的一些評(píng)論。
void eye 例程使用analogWrite 根據(jù)整數(shù)r、g 和b 的值向LED 發(fā)送脈沖(脈沖寬度調(diào)制)。反過(guò)來(lái),LED 會(huì)打開(kāi)。
void rollseye 使用三個(gè) for 循環(huán)來(lái)改變 r、g 和 b 的值以產(chǎn)生一系列顏色
void setup 將引腳 5、6 和 9 定義為輸出
void 循環(huán)是重復(fù)調(diào)用 rollseyes 例程的主要代碼
他的眼睛在現(xiàn)實(shí)生活中比在視頻中看起來(lái)更好。
// initialise variables and constants
// Arduino pins
#define redpin 5
#define greenpin 6
#define bluepin 9
void eyes(int r, int g, int b)
{
// writes to pins to change eye colours
analogWrite(redpin, r);
analogWrite(greenpin, g);
analogWrite(bluepin, b);
}
void rollseyes()
{
// loops to change eye colours
int colour;
eyes(0, 0, 0);
for (colour = 0; colour < 255; colour++)
{
// blue fades, red brightens
eyes(colour, 0, 255 - colour);
delay(10);
}
for (colour = 0; colour < 255; colour++)
{
// red fades, green brightens
eyes(255 - colour, colour, 0);
delay(10);
}
for (colour = 0; colour < 255; colour++)
{
// green fades, blue brightens
eyes(0, 255 - colour, colour);
delay(10);
}
}
void setup()
{
/* output pins */
pinMode(redpin, OUTPUT);
pinMode(greenpin, OUTPUT);
pinMode(bluepin, OUTPUT);
}
void loop()
{
rollseyes();
}
第 4 步:聲音
Adafruit Sound board 是個(gè)好東西,但相對(duì)昂貴,大約 20 英鎊,而且它們只能容納大約 10 個(gè)聲音。檢查下面的鏈接以獲取有關(guān)它的大量信息。
如果您不采用滿載的 Bobbs 路線,則該板將在沒(méi)有微處理器的情況下工作,但您必須使用觸發(fā)引腳播放聲音。不管怎樣,是時(shí)候拆開(kāi)放大器和揚(yáng)聲器了。
您可以通過(guò)設(shè)置最多 10 個(gè)觸發(fā)器或通過(guò)與軟件串行庫(kù)的串行通信(解決仇恨者)來(lái)運(yùn)行此操作。我將在下面描述軟件串行 (UART) 方法。我接受它存在問(wèn)題,但沒(méi)有什么會(huì)影響我們這里。
我不會(huì)重復(fù) Adafruit 網(wǎng)站上的詳細(xì)說(shuō)明,而是簡(jiǎn)要說(shuō)明;
首先,找一些聲音復(fù)制到板上。Soundbible 是一個(gè)很好的起點(diǎn)
下載它們并在必要時(shí)轉(zhuǎn)換為 OGG 或 WAV。該板不使用 MP3 格式,但轉(zhuǎn)換文件很容易。我喜歡 Audacity 應(yīng)用程序,因?yàn)槟梢跃庉嬑募垣@得您想要的噪音。
這些文件需要命名為 T00、T01 等
接下來(lái)使用 USB 線將它們傳輸?shù)桨迳稀?/font>這就是設(shè)置完成
安裝。引腳 7 (RX) 和 8 (TX) 連接到 Adafruit FX 板上的 TX 和 RX。將 UG 引腳接地以啟用 UART 模式。還要連接放大器、揚(yáng)聲器和電源。
Bobbs 的揚(yáng)聲器就在他嘴的后面。
編碼。Adafruit 有自己的庫(kù),我沒(méi)有使用過(guò),但希望它們很好。我為 Bobbs 寫了我自己的
關(guān)于代碼的一些注釋;
包括軟件串行庫(kù)并使用引腳 7 和 8 以及 TX 和 TX 創(chuàng)建一個(gè)名為 FXserial 的實(shí)例。
在 void setup() 中使用 FXserial.begin 啟動(dòng)串行通信
播放聲音是通過(guò)調(diào)用 FXserial.println("# x ");
其中 x 被替換為軌道號(hào),因此對(duì)于軌道 0,x 為零,依此類推
#include
SoftwareSerial FXserial(7, 8); // RX | TX
void growl()
{
// Use software serial to tell Adafruit FX card
// to play a sound
FXserial.println("#03");
delay(500);
}
void fart()
{
// Use software serial to tell Adafruit FX card
// to play a sound
FXserial.println("#02");
delay(500);
}
void burp()
{
// Use software serial to tell Adafruit FX card
// to play a sound
FXserial.println("#04");
delay(500);
}
void laugh()
{
// Use software serial to tell Adafruit FX card
// to play a sound
FXserial.println("#00");
delay(500);
}
void setup() {
// Initialise Bobbs on start up// Serial communications with
// sound card
FXserial.begin(9600);
}
void loop(){
fart();
burp();
laugh();
growl();
}
第 5 步:替代聲音
作為 Adafruit 板的更便宜的替代品,帶有 SD 卡的 DFplayer mini MP3 是可能的。被警告 - 他們是一個(gè)痛苦。它可以播放 MP3 文件,而 FX 板不會(huì),而且您可以容納更多噪音。與 Adafruit 板一樣,它也可以在沒(méi)有微處理器的情況下運(yùn)行。
eBay 以大約 4 英鎊的價(jià)格出售它們,這比 FX 板的 20 英鎊和語(yǔ)音芯片的 60 英鎊要便宜得多。這里有更多關(guān)于它的內(nèi)容。
https://www.dfrobot.com/blog-277.html
我無(wú)法讓庫(kù)正常工作,除非我采取下面的步驟 1 和 2,否則它不會(huì)播放我想要的文件。忘記目錄。
我為使其工作所遵循的步驟是;
1) 從 Sound Bible 之類的網(wǎng)站下載聲音文件或制作一些聲音文件并根據(jù)需要使用 Audacity 進(jìn)行編輯。
1.5) 將它們傳輸?shù)?SD 卡。將文件命名為 0001.MP3、0002.MP3 等
2)找到一個(gè)胖32文件排序器并按名稱對(duì)文件進(jìn)行排序。每次添加聲音,清空 SD 卡,重復(fù) 1.5 和 2 點(diǎn)。
3) 如圖所示連接 DFplayer。
4)一些代碼的時(shí)間
/* New file order - clear SD, download new files, YAFS */
#include "SoftwareSerial.h"
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
SoftwareSerial MP3player(10, 9); // RX, TX
void setVolume(int volume)
{
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
delay(2000);
}
void play(int file)
{
int state = LOW;
while (state == LOW)
{
state = digitalRead(busy);
}
execute_CMD(0x03, 0, file);
delay(100);
}
void execute_CMD(byte CMD, byte Par1, byte Par2)
// Execute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte
};
//Send the command line to the module
for (byte k = 0; k < 10; k++)
{
MP3player.write( Command_line[k]);
}
delay(100);
}
void setup() {
MP3player.begin(9600);
setVolume(21);
play(34);
}
void loop() {
// play a random track between 1 and 49
track = random(1, 50;
}
是的,這很痛苦。如果您可以應(yīng)付一些聲音效果,請(qǐng)堅(jiān)持使用 Adafruit。
第 6 步:放大器和揚(yáng)聲器
我猜你可以連接放大器和揚(yáng)聲器。該放大器是 Adafruit 的另一款產(chǎn)品,但這只是因?yàn)樗鼈兺ǔ?梢院翢o(wú)問(wèn)題地工作。
如果你想要聲音和語(yǔ)音,你需要兩個(gè)通道,因?yàn)槟悴荒苡袃蓚€(gè)輸入進(jìn)入單聲道放大器。
第 7 步:語(yǔ)音合成器
這是好的一點(diǎn)。通過(guò)語(yǔ)音使您的玩具栩栩如生。我很驚訝沒(méi)有更多的愛(ài)好定價(jià)的語(yǔ)音芯片 - 一定有對(duì)它們的需求。也許是價(jià)格——它相對(duì)昂貴,大約 60 英鎊。
如果您能忍受痛苦,您可以將一些語(yǔ)音文件錄制到 MP3 上,然后使用前面提到的 DFplayer 進(jìn)行語(yǔ)音。
它有幾個(gè)聲音,聽(tīng)起來(lái)都像斯蒂芬霍金斯。我再次使用軟件序列號(hào)(我能聽(tīng)到磨牙的聲音)。同樣,我不會(huì)重復(fù)網(wǎng)絡(luò)上已有的內(nèi)容,只介紹我所做的。
安裝芯片很容易;將 RX(Arduino 上的引腳 2)連接到板上的 TX,將 Arduino(TX)上的引腳 3 連接到板上的 RX 引腳。輸出像往常一樣進(jìn)入放大器。代碼可能會(huì)涉及更多 - 有關(guān)更多詳細(xì)信息,請(qǐng)參閱網(wǎng)站。我下面的例子可能很簡(jiǎn)單。
#include
2 , 3); // RX | TX
void speak(String message)
{
// Send message to speech chip
emicserial.print("S");
emicserial.print(message);
emicserial.write("\n");
}
void setup() {
// Serial communications with speech chip
emicserial.begin(9600);
// Set volume for speech
emicserial.print('V16');
emicserial.print('\n');
void loop()
{
speak("Hello");
}
第 8 步:藍(lán)牙
使用藍(lán)牙通過(guò) Android 手機(jī)控制您的玩具,只需一次,從 eBay 獲得便宜的仿制品,令人驚訝的是,它確實(shí)有效!這次我們不僅將 C++ 與 Arduino 一起使用,而且還使用了 MIT AI2。
麻省理工學(xué)院 AI2 真是太棒了。您無(wú)需了解有關(guān) Andriod 操作系統(tǒng)的任何信息 - 只需拖動(dòng)組件以進(jìn)行屏幕布局,然后使用塊對(duì)其進(jìn)行編程。
您可以根據(jù)需要使 MIT AI2 位變得復(fù)雜。為簡(jiǎn)單起見(jiàn),我將解釋噪音和語(yǔ)音,但有些人會(huì)做各種瘋狂的事情。
這有點(diǎn)涉及,但為了保持這一點(diǎn)最簡(jiǎn)單,我們使用經(jīng)典藍(lán)牙而不是 BLE。我不確定HC06是否支持BLE。
讓我們先從 Andriod 方面開(kāi)始。
根據(jù)我關(guān)于不重復(fù)互聯(lián)網(wǎng)上所有內(nèi)容的政策,本教程很好地解釋了 Arduino / Andriod 交互。
第 9 步:藍(lán)牙安卓代碼
打開(kāi) MIT AI2 網(wǎng)站并創(chuàng)建一個(gè)新項(xiàng)目。窗口在設(shè)計(jì)器頁(yè)面上打開(kāi),在屏幕左側(cè),您應(yīng)該能夠在用戶界面下找到“按鈕”。將 2 個(gè)按鈕拖到空白屏幕上。
屏幕左側(cè)的連接下方還有一個(gè)名為藍(lán)牙客戶端的圖標(biāo)。將其拖到屏幕上。
在傳感器下方是加速傳感器。也將 拖到屏幕上。
屏幕右側(cè)允許自定義按鈕。
在屏幕的右上角是一個(gè)按鈕,上面寫著“塊”。單擊它,我們將開(kāi)始編程。我在上面的代碼上放了圖片。這并不理想,但教程編輯器不會(huì)讓我做任何其他事情。
首先要做的是創(chuàng)建藍(lán)牙連接,這是通過(guò)獲取列表選擇器并使元素等于 Andriod 設(shè)備中的藍(lán)牙連接列表來(lái)完成的。見(jiàn)圖1
用戶選擇連接后,我們調(diào)用藍(lán)牙實(shí)例來(lái)聯(lián)系 HC06 模塊 - 圖 2。
按鈕是事件驅(qū)動(dòng)的;在點(diǎn)擊之前,他們不會(huì)做任何事情。單擊時(shí),Andriod 設(shè)備會(huì)向藍(lán)牙實(shí)例發(fā)送一個(gè)字符,該實(shí)例將其發(fā)送到 HC06。忽略“設(shè)置全局重復(fù)”位。見(jiàn)圖表 3 和 4
我還添加了加速度計(jì),因?yàn)樗芸帷?/font>搖動(dòng)手機(jī)會(huì)激活這段代碼并將另一個(gè)字符發(fā)送給 Bobbs - 圖 5。
構(gòu)建代碼并將 apk 文件保存到您的計(jì)算機(jī)或使用 QR 碼。您的 Andriod 設(shè)備必須打開(kāi)開(kāi)發(fā)者選項(xiàng)。
轉(zhuǎn)到設(shè)置 > 關(guān)于手機(jī) > 內(nèi)部版本號(hào)。(三星可能會(huì)有所不同)
點(diǎn)擊內(nèi)部版本號(hào)七次。
返回設(shè)置,您將在菜單中找到開(kāi)發(fā)人員選項(xiàng)條目。
將文件傳輸?shù)?Andriod 設(shè)備后,安裝它,并將手機(jī)與 HC 06 配對(duì)。除非 HC06 被弄亂,否則 PIN 碼是 1234。
第 10 步:藍(lán)牙 Arduino 代碼
現(xiàn)在是阿杜諾時(shí)間。
下面的代碼并不完整,因?yàn)樗皇菫榱苏f(shuō)明正在發(fā)生的事情。您的項(xiàng)目很可能不會(huì)交給另一個(gè) Bobbs,我希望您無(wú)論如何都會(huì)根據(jù)自己的需要對(duì)其進(jìn)行修改。
Andriod 設(shè)備正在向 HC06 發(fā)送字符,但由于其自身的原因,Aduino 正在檢測(cè) ASCII 碼。這存儲(chǔ)在“命令”字符串中,然后轉(zhuǎn)換為整數(shù)以與 switch 函數(shù)一起使用。
#include
SoftwareSerial BTserial(14, 15); // RX | TX
void instruction()
{
// Decode instructions from BT device and
// take action
command = BTserial.read();
int commandvalue = command.toInt();
switch (commandvalue)
{
case 71: // G
growl();
break;
case 84: // T
getmessage();
break;
case 70: // F
fart();
break;
case 66: //B
burp();
delay(500);
speak("Better out than in");
break;
case 69: // E
speak("All the colours of the bow man");
rollseyes();
break;
case 83: // S
shake();
break;
case 76: // L
laugh();
break;
}
void setup() {
// Initialise Bobbs on start up
// Serial communications with BT device
BTserial.begin(9600);
}
void loop() {
// BT device instruction received?
if (BTserial.available())
{
instruction();
}
第 11 步:搖晃它
不只是泰勒斯威夫特可以擺脫它,鮑布斯也有動(dòng)作。Bobbs 的設(shè)置是當(dāng) Andriod 設(shè)備搖晃時(shí),或者當(dāng)與其他交互(如高五或癢腳)一起調(diào)用時(shí),他會(huì)搖晃。
電機(jī)使用大螺絲和木頭牢固地固定在盒子上。搖晃是由偏心的重量引起的。
#define motorpin 10
void motor(int turns)
{
// Active motor pin to turn on motor briefly
for (int i = 0; i < turns; i++)
{
digitalWrite(motorpin, HIGH);
delay(2);
digitalWrite(motorpin, LOW);
}
}
void setup() {
pinMode(motorpin, OUTPUT);
digitalWrite(motorpin, LOW);
}
void loop() {
motor(10);
}
第 12 步:傾斜傳感器
Bobbs 不喜歡被人翻倒——暗示壞話和咆哮。
硬件非常簡(jiǎn)單——一個(gè)傾斜開(kāi)關(guān)和一個(gè)電阻。如果 Bobbs 不直立,Arduino 引腳 21 會(huì)測(cè)量電壓并跳轉(zhuǎn)到傾斜動(dòng)作程序。我通過(guò)先數(shù) 500 來(lái)讓 Bobbs 脫敏,否則他會(huì)認(rèn)為自己經(jīng)常摔倒。
傾斜動(dòng)作例程隨機(jī)選擇一個(gè)短語(yǔ)并閃爍眼睛和喇叭。
#define tiltpin 21
void tiltactions()
{
// Randomly select an action when Bobbs in tilted
choice = random(6);
eyes(255, 0, 0);
growl();
delay(750);
switch (choice)
{
case 0:
speak("Whats happening");
delay(750);
break;
case 1:
speak("This is not cool");
delay(750);
break;
case 2:
speak("Human I need help");
delay(750);
break;
case 3:
speak("This sucks");
delay(750);
break;
case 4:
speak("I'm going to puke");
delay(750);
break;
case 5:
speak("Make it stop");
delay(750);
break;
}
horns(1, 10, 5); // colour, repeat, speed
}
void setup() {
pinMode(tiltpin, INPUT);
}
void loop() {
// Is Bobbs tilited?
if (tilt > 500)
{
tiltcount += 1;
if (tiltcount > 500)
{
tiltactions();
delay(1000);
timethen = timenow;
}
}
else
{
tiltcount = 0;
}
}
第 13 步:暗傳感器
天黑的時(shí)候,鮑布斯是個(gè)無(wú)賴。
我正在使用一個(gè)光電二極管,因?yàn)槲矣幸粋€(gè)備用的,但我希望 LDR 也能正常工作。就像高五和搔癢的腳例程一樣,這是另一個(gè)電壓變化檢測(cè)練習(xí)。當(dāng)它變暗時(shí),引腳 20 測(cè)量的值會(huì)發(fā)生變化,從而啟動(dòng)黑暗動(dòng)作例程。
#define lightpin 20
int light = 0;
void darkactions()
{
// Randomly select an action to perform when it's dark
choice = random(5);
eyes(0, 0, 255);
switch (choice)
{
case 0:
speak("Is that the moon");
delay(1500);
FXserial.println("#06");
break;
case 1:
sleepnoise();
sleepnoise();
break;
case 2:
speak("Who turned off the lights");
delay(1500);
break;
case 3:
speak("Ooh creepy");
delay(750);
break;
case 4:
speak("It's dark");
delay(750);
break;
}
horns(3, 10, 5); // colour, repeat, speed
}
void setup() {
pinMode(lightpin, INPUT);
}
void loop() {
light = analogRead(lightpin);
// Is it dark?
if (light > 900) // dark
{
darkactions();
delay(1000);
timethen = timenow;
}
}
第 14 步:Tickley 腳
Bobbs 笑了,當(dāng)他的腳被撓癢時(shí),眼睛和角都亮了。
連接一塊 Veroboard,以便連接備用條(如圖所示)。當(dāng)圖形在條帶上運(yùn)行時(shí),少量電流會(huì)導(dǎo)致引腳 19 記錄值的變化。Bobbs 的每只腳都有一個(gè)傳感器。
#define feetpin 19
void feet()
{
// Interactive feet
// Bobbs asks for his feet to be tickled
// user must respond within a set period of
// time to activate eyes, horns and make Bobbs laugh int feetnow = 0;
speak("Tickle my feet");
eyes (0, 0, 0); timethen = millis();
while ( millis() < timethen + 5000)
{
for (int i = 0; i < 200; i++)
{
feetnow = feetnow + analogRead(feetpin);
}
feetnow = feetnow / 200; if ( feetnow < 0)
{
FXserial.println("#00"); // play the laugh sound on the Adafruit board
eyes(255, 215, 0);
motor(100);
horns(1, 10, 5); // colour, repeat, speed
}
}
}
void setup(){
pinMode(feetpin, INPUT);
}
void loop(){
feet();
}
第15步:高五
是的,還有擊掌。
這是傾斜程序的發(fā)展,但在每只爪子上都有一個(gè)傾斜傳感器。在這個(gè)設(shè)置中,Bobbs 要求一個(gè)高五,如果他得到一個(gè)就開(kāi)始發(fā)出咕嚕聲。為了在 Arduino 板上保存引腳,我使用一個(gè)引腳來(lái)測(cè)量?jī)蓚€(gè)爪子傳感器。舉起常規(guī)的任一爪組。
#define pawpin 18
void pawthing()
{
// Interactive paws
// Bobbs asks for his hands to be shaken
// The user must respond in time to activate
// motor, eyes and horns
int paw = 0;
speak("Give me high five");
eyes (0, 0, 0);
timethen = millis();
while ( millis() < timethen + 5000)
{
paw = analogRead(pawpin);
if (paw < 650)
{
speak("Purrr");
horns(2, 5, 5);
}
eyes(255, 215, 0);
delay(500);
motor(100);
}
}
void setup() {
pinMode(pawpin, INPUT);
}
第16步:喇叭
Team Girl 的“Make-a-bear”龍有發(fā)光的角。Bobbs 可以打敗它,但我們需要一些電子設(shè)備。
我想在他的喇叭上安裝 6 個(gè)三色 LED,但這意味著需要 18 個(gè)引腳(加上 0v),而我在 Arduino 上只有兩個(gè)備用引腳。如果我們不反對(duì)同時(shí)在兩個(gè)喇叭中打開(kāi)相同顏色的 LED,我可以連接 LED,這樣我只需要 9 個(gè)狀態(tài)加上關(guān)閉。這聽(tīng)起來(lái)像是十年計(jì)數(shù)器的工作。
Arduino 從引腳 16 向 4017 上的時(shí)鐘引腳發(fā)送一個(gè)脈沖,以更改輸出引腳并打開(kāi)每個(gè)喇叭中的 LED。Arduino 引腳 4 連接到復(fù)位。發(fā)送 10 個(gè)脈沖將在顏色和位置之間循環(huán)。
4017 引腳 - LED 對(duì)
0 - 關(guān)閉
1 - 紅底
2 - 紅色中間
3 - 紅色上衣
4 - 綠底
5 - 綠色中間
6 - 綠色上衣
7 - 藍(lán)底
8 - 藍(lán)色中間
9 - 藍(lán)色上衣
假設(shè)我們想要一種特定的顏色,比如綠色。如果我們非常快地跳過(guò)紅色 LED,比如幾毫秒,用戶不會(huì)注意到它們打開(kāi),只會(huì)看到綠色 LED。然后我們重置 4017,這樣藍(lán)燈就不會(huì)激活。
這是執(zhí)行此操作的子程序。
#define hornpin 16
#define hornresetpin 4
void setup{
pinMode(hornpin, OUTPUT);
pinMode(hornresetpin, OUTPUT);
digitalWrite(hornresetpin, LOW);
}
void resethorns(){
// Reset decade counter chip to turn off horn lights
digitalWrite(hornresetpin, HIGH);
delay(10);
digitalWrite(hornresetpin, LOW);
}
void horns(int col, int repeat, int speed)
{
// Sets the colour of the horn lights by
// cycling through the decade counter pins
// really quickly and stopping at the
// chosen colour
// parameters are colour, number of times to
// repeat the sequence and speed int start;
int end;
int limit;
for (int i = 0; i < repeat; i++)
{
resethorns();
switch (col)
{
case 0:
limit = 10;
break;
case 1: //red
limit = 3;
break;
case 2: //green
limit = 3;
for (int k = 0; k < 3; k++) // skip red
{
digitalWrite(hornpin, LOW);
delay(1);
digitalWrite(hornpin, HIGH);
delay(1);
}
break;
case 3: // blue
limit = 3;
for (int k = 0; k < 7; k++) // skip red and green
{
digitalWrite(hornpin, LOW);
delay(1);
digitalWrite(hornpin, HIGH);
delay(1);
}
break;
}
for (int j = 0; j < limit; j++)
{
digitalWrite(hornpin, LOW);
delay(speed);
digitalWrite(hornpin, HIGH);
delay(speed);
}
}
resethorns();
}
第17步:結(jié)束?
Bobbs 是 8 位 Atari 的忠實(shí)粉絲 - 查看他的其他教程。
不幸的是,他的大腦相當(dāng)飽滿。我不能添加太多代碼,因?yàn)樽兞恐皇O律贁?shù)字節(jié)。他也用完了。
升級(jí)到 Arduino Mega 是一種選擇。它有大量的引腳和更多的內(nèi)存,但大小可能是個(gè)問(wèn)題。
還有另一種可能;我們可以使用藍(lán)牙連接將部分工作轉(zhuǎn)移到 Android 設(shè)備上。MIT AI2 是一個(gè)非常強(qiáng)大的工具,可以連接到互聯(lián)網(wǎng)。
RSS 提要閱讀器怎么樣?
全球定位系統(tǒng)?
Android 設(shè)備可以使用大量?jī)?nèi)容,具體取決于您的手機(jī)。
我正在看的是 Eliza 程序的現(xiàn)代版本。與玩具的對(duì)話可能不僅僅是想象的!
?
- Arduino簡(jiǎn)單的滑塊構(gòu)建電子設(shè)備
- 常用電子設(shè)備開(kāi)關(guān)電源檢修方法
- 電工電子設(shè)備機(jī)械結(jié)構(gòu)熱設(shè)計(jì)規(guī)范 6次下載
- 爆炸性環(huán)境下電子設(shè)備的通用要求 12次下載
- 電子設(shè)備可靠性預(yù)測(cè)程序 7次下載
- 道路車輛環(huán)境的條件和測(cè)試電氣和電子設(shè)備 5次下載
- 運(yùn)用新穎車用電子設(shè)備 7次下載
- 汽車裝備:電子設(shè)備越做越精 7次下載
- 電子設(shè)備防雷技術(shù)導(dǎo)則 32次下載
- 電子設(shè)備整體測(cè)試系統(tǒng)的研制
- 電力電子設(shè)備介紹
- 電力電子設(shè)備與電能質(zhì)量
- Icepak在電子設(shè)備熱設(shè)計(jì)中的應(yīng)用
- 電子設(shè)備接地裝置做法
- 電子設(shè)備的設(shè)計(jì)與結(jié)構(gòu)
- 電子設(shè)備為什么要進(jìn)行熱設(shè)計(jì) 948次閱讀
- 軍工電子設(shè)備EMC試驗(yàn)標(biāo)準(zhǔn)和實(shí)用技術(shù)分享 3081次閱讀
- 為什么以及如何控制冷卻電子設(shè)備的風(fēng)扇速度 879次閱讀
- 影響高溫電子設(shè)備的認(rèn)證方法和設(shè)計(jì)技術(shù) 3016次閱讀
- 基于FX1S-10MT型PLC和步進(jìn)電機(jī)驅(qū)動(dòng)裝置實(shí)現(xiàn)玩具燃燒測(cè)試系統(tǒng)的設(shè)計(jì) 1396次閱讀
- 物聯(lián)網(wǎng)設(shè)備內(nèi)部存在怎樣的威脅 543次閱讀
- 電子設(shè)備的各種電磁干擾問(wèn)題分析 6734次閱讀
- 電子設(shè)備對(duì)裝配技術(shù)有哪些基本要求 7764次閱讀
- 電子設(shè)備進(jìn)行電磁兼容性設(shè)計(jì)的目的是什么 3059次閱讀
- 電子設(shè)備中抑制和防止電磁干擾的各種措施方法介紹 1.2w次閱讀
- 如何提高電子設(shè)備的電磁兼容性 1954次閱讀
- 高溫的環(huán)境下 電子設(shè)備都是怎么工作的 6492次閱讀
- 如何做好電源電子設(shè)備的電磁兼容? 1727次閱讀
- 航空電子設(shè)備PCB組件的動(dòng)態(tài)分析 1827次閱讀
- 用于醫(yī)療電子設(shè)備的增強(qiáng)型技術(shù)突破 1341次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多