電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用簡(jiǎn)單的電子設(shè)備來(lái)增強(qiáng)毛絨玩具

使用簡(jiǎn)單的電子設(shè)備來(lái)增強(qiáng)毛絨玩具

2022-10-27 | zip | 0.18 MB | 次下載 | 免費(fèi)

資料介紹

描述

概述

教程使用相當(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ī)使用大螺絲和木頭牢固地固定在盒子上。搖晃是由偏心的重量引起的。

晶體管用于處理電流并避免損壞 Arduino。

#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 提要閱讀器怎么樣?

語(yǔ)音識(shí)別?

全球定位系統(tǒng)?

Android 設(shè)備可以使用大量?jī)?nèi)容,具體取決于您的手機(jī)。

我正在看的是 Eliza 程序的現(xiàn)代版本。與玩具的對(duì)話可能不僅僅是想象的!

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)