資料介紹
描述
概述
本教程使用相當(dāng)簡單的電子設(shè)備來增強毛絨玩具,但可能用于任何項目。
這不是一篇關(guān)于縫紉的文章,只是關(guān)于 C++ 和 MIT AI2 中的電子學(xué)和編碼。
介紹
前段時間,我拜訪了一家知名的商業(yè)街零售商,為一個項目購買了音效。他們拒絕了,并制作了“名單”。我不會使用零售商的名稱,但我們稱他們?yōu)椤癕ake-a-Bear”,這樣沒人會猜到他們的真名。
如果沒有挫折,你就不會對電子產(chǎn)品感興趣,所以我并沒有被嚇倒,我開始尋找替代品,并開始制定計劃。我意識到我需要一個身體,而“Team Girl”不愿意從她大量的“Make-a-Bears”中提供一名志愿者。
從另一個挫折中恢復(fù)過來,證明必要性是發(fā)明的引擎,我找到了一只舊怪物拖鞋、一件舊睡袍、一件舊衣服和一條領(lǐng)結(jié)。Bobbs 是由所有這些零碎組成的,但他需要生命,所以我給他塞了一個 Arduino 風(fēng)格的處理器、FX 音板和用于眼睛的三色 LED。
然后事情就失控了(而且價格昂貴)。
他需要一個聲音
一些發(fā)光的喇叭怎么樣?
Tickley 腳?是的
傾斜傳感器?是的
暗傳感器?是的
通過 HC06 藍牙模塊由 Andriod 手機控制?真他媽的對
只有一個 Bobbs,但沒有理由不能在您自己的項目中使用某些想法。我發(fā)現(xiàn)同時使用他的一種或多種能力可以獲得最好的結(jié)果。例如,如果 Bobbs 被撞倒,傾斜傳感器會將他的眼睛變成紅色,喇叭會閃爍紅色,他會咆哮并說“抱我起來”。
為糟糕的布局道歉。這里有更好的版本
補給品
我盡可能使用 Adafruit、SparkFun 和 Arduino 產(chǎn)品。我嘗試過 Ebay 的廉價仿冒組件;從我的錯誤中吸取教訓(xùn)并購買合適的組件。他們可能會多花幾英鎊/美元,但你會省下很多麻煩。網(wǎng)站上的支持非常好。
SparkFun Pro Micro(或任何 Arduino 風(fēng)格的微處理器)
5v 電池 - Bobbs 使用老式的無線電遙控汽車電源組,因為它們可以提供大量安培,但他將使用 4 節(jié) AA 電池運行
Adafruit FX 板
Emic 2語音芯片
2通道D類3W放大器
6v電機
3 個傾斜傳感器
三色 LED
4017 十進制計數(shù)器
HC-06藍牙模塊
Vero 板
電線 - 我使用的是杜邦連接器,因為它們很好地安裝在插頭引腳上,但它們總是分開。
接頭引腳和連接器
功率晶體管
太陽能板
二極管
一個可以把所有東西都放進去的盒子
安卓設(shè)備
第 1 步:大腦
Bobbs 的大腦(可能擴展了定義)是一個 SparkFun 處理器,這些可以在 eBay 上以幾英鎊/美元的價格買到。
我假設(shè)您知道如何對 Arduino 進行編程。如果沒有,請學(xué)習(xí)!這是一個很棒的微處理器,你的生活會好很多。
具體參考在這里;
這是一個很好的緊湊板,有足夠的引腳讓我們現(xiàn)在很開心。它有 32k 的內(nèi)存,所以我們在那里有點受限,但對于合理數(shù)量的代碼仍然足夠,因為 C++ 相當(dāng)高效。
如果您使用的是 Arduino Create,SparkFun Pro Micro 喜歡認為它是 Arduino Leonardo。
第 2 步:電源
滿載的 Bobbs 使用了大量的果汁,所以我們需要相當(dāng)大的東西來提供放大器。我使用了一個舊的 Nimh RC 汽車電池,該電池已被削減為 4.8v。
為了環(huán)保,Bobbs 在他的背上安裝了一塊 6 伏的太陽能電池板。Bobbs 電池通過太陽能充電一點。二極管可防止電池在夜間通過太陽能電池板放電。
在這種配置中,他運行了大約一天。
第三步:眼睛
讓我們從簡單的事情開始。我們使用 2 個三色 LED、微處理器、50 歐姆電阻和一些電線。
紅色腿連接到引腳 5,綠色連接到引腳 6,藍色連接到引腳 9。負腿通過 50 歐姆電阻接地。亮度由 Arduino 使用脈沖寬度調(diào)制控制。擁有單獨的引腳意味著可以創(chuàng)建多種顏色。
這是對代碼的一些評論。
void eye 例程使用analogWrite 根據(jù)整數(shù)r、g 和b 的值向LED 發(fā)送脈沖(脈沖寬度調(diào)制)。反過來,LED 會打開。
void rollseye 使用三個 for 循環(huán)來改變 r、g 和 b 的值以產(chǎn)生一系列顏色
void setup 將引腳 5、6 和 9 定義為輸出
void 循環(huán)是重復(fù)調(diào)用 rollseyes 例程的主要代碼
他的眼睛在現(xiàn)實生活中比在視頻中看起來更好。
// 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 是個好東西,但相對昂貴,大約 20 英鎊,而且它們只能容納大約 10 個聲音。檢查下面的鏈接以獲取有關(guān)它的大量信息。
如果您不采用滿載的 Bobbs 路線,則該板將在沒有微處理器的情況下工作,但您必須使用觸發(fā)引腳播放聲音。不管怎樣,是時候拆開放大器和揚聲器了。
您可以通過設(shè)置最多 10 個觸發(fā)器或通過與軟件串行庫的串行通信(解決仇恨者)來運行此操作。我將在下面描述軟件串行 (UART) 方法。我接受它存在問題,但沒有什么會影響我們這里。
我不會重復(fù) Adafruit 網(wǎng)站上的詳細說明,而是簡要說明;
首先,找一些聲音復(fù)制到板上。Soundbible 是一個很好的起點
下載它們并在必要時轉(zhuǎn)換為 OGG 或 WAV。該板不使用 MP3 格式,但轉(zhuǎn)換文件很容易。我喜歡 Audacity 應(yīng)用程序,因為您可以編輯文件以獲得您想要的噪音。
這些文件需要命名為 T00、T01 等
接下來使用 USB 線將它們傳輸?shù)桨迳稀?/font>這就是設(shè)置完成
安裝。引腳 7 (RX) 和 8 (TX) 連接到 Adafruit FX 板上的 TX 和 RX。將 UG 引腳接地以啟用 UART 模式。還要連接放大器、揚聲器和電源。
Bobbs 的揚聲器就在他嘴的后面。
編碼。Adafruit 有自己的庫,我沒有使用過,但希望它們很好。我為 Bobbs 寫了我自己的
關(guān)于代碼的一些注釋;
包括軟件串行庫并使用引腳 7 和 8 以及 TX 和 TX 創(chuàng)建一個名為 FXserial 的實例。
在 void setup() 中使用 FXserial.begin 啟動串行通信
播放聲音是通過調(diào)用 FXserial.println("# x ");
其中 x 被替換為軌道號,因此對于軌道 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 是可能的。被警告 - 他們是一個痛苦。它可以播放 MP3 文件,而 FX 板不會,而且您可以容納更多噪音。與 Adafruit 板一樣,它也可以在沒有微處理器的情況下運行。
eBay 以大約 4 英鎊的價格出售它們,這比 FX 板的 20 英鎊和語音芯片的 60 英鎊要便宜得多。這里有更多關(guān)于它的內(nèi)容。
https://www.dfrobot.com/blog-277.html
我無法讓庫正常工作,除非我采取下面的步驟 1 和 2,否則它不會播放我想要的文件。忘記目錄。
我為使其工作所遵循的步驟是;
1) 從 Sound Bible 之類的網(wǎng)站下載聲音文件或制作一些聲音文件并根據(jù)需要使用 Audacity 進行編輯。
1.5) 將它們傳輸?shù)?SD 卡。將文件命名為 0001.MP3、0002.MP3 等
2)找到一個胖32文件排序器并按名稱對文件進行排序。每次添加聲音,清空 SD 卡,重復(fù) 1.5 和 2 點。
3) 如圖所示連接 DFplayer。
4)一些代碼的時間
/*  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)付一些聲音效果,請堅持使用 Adafruit。
第 6 步:放大器和揚聲器
我猜你可以連接放大器和揚聲器。該放大器是 Adafruit 的另一款產(chǎn)品,但這只是因為它們通常可以毫無問題地工作。
如果你想要聲音和語音,你需要兩個通道,因為你不能有兩個輸入進入單聲道放大器。
第 7 步:語音合成器
這是好的一點。通過語音使您的玩具栩栩如生。我很驚訝沒有更多的愛好定價的語音芯片 - 一定有對它們的需求。也許是價格——它相對昂貴,大約 60 英鎊。
如果您能忍受痛苦,您可以將一些語音文件錄制到 MP3 上,然后使用前面提到的 DFplayer 進行語音。
它有幾個聲音,聽起來都像斯蒂芬霍金斯。我再次使用軟件序列號(我能聽到磨牙的聲音)。同樣,我不會重復(fù)網(wǎng)絡(luò)上已有的內(nèi)容,只介紹我所做的。
安裝芯片很容易;將 RX(Arduino 上的引腳 2)連接到板上的 TX,將 Arduino(TX)上的引腳 3 連接到板上的 RX 引腳。輸出像往常一樣進入放大器。代碼可能會涉及更多 - 有關(guān)更多詳細信息,請參閱網(wǎng)站。我下面的例子可能很簡單。
#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 步:藍牙
使用藍牙通過 Android 手機控制您的玩具,只需一次,從 eBay 獲得便宜的仿制品,令人驚訝的是,它確實有效!這次我們不僅將 C++ 與 Arduino 一起使用,而且還使用了 MIT AI2。
麻省理工學(xué)院 AI2 真是太棒了。您無需了解有關(guān) Andriod 操作系統(tǒng)的任何信息 - 只需拖動組件以進行屏幕布局,然后使用塊對其進行編程。
您可以根據(jù)需要使 MIT AI2 位變得復(fù)雜。為簡單起見,我將解釋噪音和語音,但有些人會做各種瘋狂的事情。
這有點涉及,但為了保持這一點最簡單,我們使用經(jīng)典藍牙而不是 BLE。我不確定HC06是否支持BLE。
讓我們先從 Andriod 方面開始。
根據(jù)我關(guān)于不重復(fù)互聯(lián)網(wǎng)上所有內(nèi)容的政策,本教程很好地解釋了 Arduino / Andriod 交互。
第 9 步:藍牙安卓代碼
打開 MIT AI2 網(wǎng)站并創(chuàng)建一個新項目。窗口在設(shè)計器頁面上打開,在屏幕左側(cè),您應(yīng)該能夠在用戶界面下找到“按鈕”。將 2 個按鈕拖到空白屏幕上。
屏幕左側(cè)的連接下方還有一個名為藍牙客戶端的圖標(biāo)。將其拖到屏幕上。
在傳感器下方是加速傳感器。也將 拖到屏幕上。
屏幕右側(cè)允許自定義按鈕。
在屏幕的右上角是一個按鈕,上面寫著“塊”。單擊它,我們將開始編程。我在上面的代碼上放了圖片。這并不理想,但教程編輯器不會讓我做任何其他事情。
首先要做的是創(chuàng)建藍牙連接,這是通過獲取列表選擇器并使元素等于 Andriod 設(shè)備中的藍牙連接列表來完成的。見圖1
用戶選擇連接后,我們調(diào)用藍牙實例來聯(lián)系 HC06 模塊 - 圖 2。
按鈕是事件驅(qū)動的;在點擊之前,他們不會做任何事情。單擊時,Andriod 設(shè)備會向藍牙實例發(fā)送一個字符,該實例將其發(fā)送到 HC06。忽略“設(shè)置全局重復(fù)”位。見圖表 3 和 4
我還添加了加速度計,因為它很酷。搖動手機會激活這段代碼并將另一個字符發(fā)送給 Bobbs - 圖 5。
構(gòu)建代碼并將 apk 文件保存到您的計算機或使用 QR 碼。您的 Andriod 設(shè)備必須打開開發(fā)者選項。
轉(zhuǎn)到設(shè)置 > 關(guān)于手機 > 內(nèi)部版本號。(三星可能會有所不同)
點擊內(nèi)部版本號七次。
返回設(shè)置,您將在菜單中找到開發(fā)人員選項條目。
將文件傳輸?shù)?Andriod 設(shè)備后,安裝它,并將手機與 HC 06 配對。除非 HC06 被弄亂,否則 PIN 碼是 1234。
第 10 步:藍牙 Arduino 代碼
現(xiàn)在是阿杜諾時間。
下面的代碼并不完整,因為它只是為了說明正在發(fā)生的事情。您的項目很可能不會交給另一個 Bobbs,我希望您無論如何都會根據(jù)自己的需要對其進行修改。
Andriod 設(shè)備正在向 HC06 發(fā)送字符,但由于其自身的原因,Aduino 正在檢測 ASCII 碼。這存儲在“命令”字符串中,然后轉(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 步:搖晃它
不只是泰勒斯威夫特可以擺脫它,鮑布斯也有動作。Bobbs 的設(shè)置是當(dāng) Andriod 設(shè)備搖晃時,或者當(dāng)與其他交互(如高五或癢腳)一起調(diào)用時,他會搖晃。
電機使用大螺絲和木頭牢固地固定在盒子上。搖晃是由偏心的重量引起的。
#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 不喜歡被人翻倒——暗示壞話和咆哮。
硬件非常簡單——一個傾斜開關(guān)和一個電阻。如果 Bobbs 不直立,Arduino 引腳 21 會測量電壓并跳轉(zhuǎn)到傾斜動作程序。我通過先數(shù) 500 來讓 Bobbs 脫敏,否則他會認為自己經(jīng)常摔倒。
傾斜動作例程隨機選擇一個短語并閃爍眼睛和喇叭。
#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 步:暗傳感器
天黑的時候,鮑布斯是個無賴。
我正在使用一個光電二極管,因為我有一個備用的,但我希望 LDR 也能正常工作。就像高五和搔癢的腳例程一樣,這是另一個電壓變化檢測練習(xí)。當(dāng)它變暗時,引腳 20 測量的值會發(fā)生變化,從而啟動黑暗動作例程。
#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)他的腳被撓癢時,眼睛和角都亮了。
連接一塊 Veroboard,以便連接備用條(如圖所示)。當(dāng)圖形在條帶上運行時,少量電流會導(dǎo)致引腳 19 記錄值的變化。Bobbs 的每只腳都有一個傳感器。
#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ā)展,但在每只爪子上都有一個傾斜傳感器。在這個設(shè)置中,Bobbs 要求一個高五,如果他得到一個就開始發(fā)出咕嚕聲。為了在 Arduino 板上保存引腳,我使用一個引腳來測量兩個爪子傳感器。舉起常規(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 個三色 LED,但這意味著需要 18 個引腳(加上 0v),而我在 Arduino 上只有兩個備用引腳。如果我們不反對同時在兩個喇叭中打開相同顏色的 LED,我可以連接 LED,這樣我只需要 9 個狀態(tài)加上關(guān)閉。這聽起來像是十年計數(shù)器的工作。
Arduino 從引腳 16 向 4017 上的時鐘引腳發(fā)送一個脈沖,以更改輸出引腳并打開每個喇叭中的 LED。Arduino 引腳 4 連接到復(fù)位。發(fā)送 10 個脈沖將在顏色和位置之間循環(huán)。
4017 引腳 - LED 對
0 - 關(guān)閉
1 - 紅底
2 - 紅色中間
3 - 紅色上衣
4 - 綠底
5 - 綠色中間
6 - 綠色上衣
7 - 藍底
8 - 藍色中間
9 - 藍色上衣
假設(shè)我們想要一種特定的顏色,比如綠色。如果我們非常快地跳過紅色 LED,比如幾毫秒,用戶不會注意到它們打開,只會看到綠色 LED。然后我們重置 4017,這樣藍燈就不會激活。
這是執(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 的忠實粉絲 - 查看他的其他教程。
不幸的是,他的大腦相當(dāng)飽滿。我不能添加太多代碼,因為變量只剩下少數(shù)字節(jié)。他也用完了。
升級到 Arduino Mega 是一種選擇。它有大量的引腳和更多的內(nèi)存,但大小可能是個問題。
還有另一種可能;我們可以使用藍牙連接將部分工作轉(zhuǎn)移到 Android 設(shè)備上。MIT AI2 是一個非常強大的工具,可以連接到互聯(lián)網(wǎng)。
RSS 提要閱讀器怎么樣?
語音識別?
全球定位系統(tǒng)?
Android 設(shè)備可以使用大量內(nèi)容,具體取決于您的手機。
我正在看的是 Eliza 程序的現(xiàn)代版本。與玩具的對話可能不僅僅是想象的!
?
- Arduino簡單的滑塊構(gòu)建電子設(shè)備
 - 常用電子設(shè)備開關(guān)電源檢修方法
 - 電工電子設(shè)備機械結(jié)構(gòu)熱設(shè)計規(guī)范 6次下載
 - 爆炸性環(huán)境下電子設(shè)備的通用要求 12次下載
 - 電子設(shè)備可靠性預(yù)測程序 7次下載
 - 道路車輛環(huán)境的條件和測試電氣和電子設(shè)備 5次下載
 - 運用新穎車用電子設(shè)備 7次下載
 - 汽車裝備:電子設(shè)備越做越精 7次下載
 - 電子設(shè)備防雷技術(shù)導(dǎo)則 32次下載
 - 電子設(shè)備整體測試系統(tǒng)的研制
 - 電力電子設(shè)備介紹
 - 電力電子設(shè)備與電能質(zhì)量
 - Icepak在電子設(shè)備熱設(shè)計中的應(yīng)用
 - 電子設(shè)備接地裝置做法
 - 電子設(shè)備的設(shè)計與結(jié)構(gòu)
 
- 歐姆定律對電子設(shè)備的影響 353次閱讀
 - 電子設(shè)備為什么要進行熱設(shè)計 1371次閱讀
 - 軍工電子設(shè)備EMC試驗標(biāo)準(zhǔn)和實用技術(shù)分享 3643次閱讀
 - 影響高溫電子設(shè)備的認證方法和設(shè)計技術(shù) 3201次閱讀
 - 基于FX1S-10MT型PLC和步進電機驅(qū)動裝置實現(xiàn)玩具燃燒測試系統(tǒng)的設(shè)計 1501次閱讀
 - 物聯(lián)網(wǎng)設(shè)備內(nèi)部存在怎樣的威脅 590次閱讀
 - 電子設(shè)備的各種電磁干擾問題分析 7265次閱讀
 - 電子設(shè)備對裝配技術(shù)有哪些基本要求 8164次閱讀
 - 電子設(shè)備進行電磁兼容性設(shè)計的目的是什么 3211次閱讀
 - 電子設(shè)備中抑制和防止電磁干擾的各種措施方法介紹 1.2w次閱讀
 - 如何提高電子設(shè)備的電磁兼容性 2172次閱讀
 - 高溫的環(huán)境下 電子設(shè)備都是怎么工作的 6632次閱讀
 - 如何做好電源電子設(shè)備的電磁兼容? 1795次閱讀
 - 航空電子設(shè)備PCB組件的動態(tài)分析 1902次閱讀
 - 用于醫(yī)療電子設(shè)備的增強型技術(shù)突破 1456次閱讀
 
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
 - 1.06 MB | 532次下載 | 免費
 - 2RK3399完整板原理圖(支持平板,盒子VR)
 - 3.28 MB | 339次下載 | 免費
 - 3TC358743XBG評估板參考手冊
 - 1.36 MB | 330次下載 | 免費
 - 4DFM軟件使用教程
 - 0.84 MB | 295次下載 | 免費
 - 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
 - 6.40 MB | 227次下載 | 免費
 - 6迪文DGUS開發(fā)指南
 - 31.67 MB | 194次下載 | 免費
 - 7元宇宙底層硬件系列報告
 - 13.42 MB | 182次下載 | 免費
 - 8FP5207XR-G1中文應(yīng)用手冊
 - 1.09 MB | 178次下載 | 免費
 
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
 - 0.00 MB | 234315次下載 | 免費
 - 2555集成電路應(yīng)用800例(新編版)
 - 0.00 MB | 33566次下載 | 免費
 - 3接口電路圖大全
 - 未知 | 30323次下載 | 免費
 - 4開關(guān)電源設(shè)計實例指南
 - 未知 | 21549次下載 | 免費
 - 5電氣工程師手冊免費下載(新編第二版pdf電子書)
 - 0.00 MB | 15349次下載 | 免費
 - 6數(shù)字電路基礎(chǔ)pdf(下載)
 - 未知 | 13750次下載 | 免費
 - 7電子制作實例集錦 下載
 - 未知 | 8113次下載 | 免費
 - 8《LED驅(qū)動電路設(shè)計》 溫德爾著
 - 0.00 MB | 6656次下載 | 免費
 
總榜
- 1matlab軟件下載入口
 - 未知 | 935054次下載 | 免費
 - 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
 - 78.1 MB | 537798次下載 | 免費
 - 3MATLAB 7.1 下載 (含軟件介紹)
 - 未知 | 420027次下載 | 免費
 - 4OrCAD10.5下載OrCAD10.5中文版軟件
 - 0.00 MB | 234315次下載 | 免費
 - 5Altium DXP2002下載入口
 - 未知 | 233046次下載 | 免費
 - 6電路仿真軟件multisim 10.0免費下載
 - 340992 | 191187次下載 | 免費
 - 7十天學(xué)會AVR單片機與C語言視頻教程 下載
 - 158M | 183279次下載 | 免費
 - 8proe5.0野火版下載(中文版免費下載)
 - 未知 | 138040次下載 | 免費
 
	                電子發(fā)燒友App
	            
	        
	        
          
        
        
	                    
                        
                        
                        
                        
                        


創(chuàng)作
發(fā)文章
發(fā)帖  
提問  
發(fā)資料
發(fā)視頻
上傳資料賺積分
           
            
            
                
            
評論