本文將按章節,列舉《超圖解Arduino互動設計入門》書籍的內容勘誤與補充說明,技術文件資料與相關軟體下載說明,請參閱另一篇文章。
第二章 認識電子零件與工具
2-3頁,第二段最後的單位”mA”,正確中譯為「毫安培」。
第三章 Arduino互動程式入門
3-18頁,表3-1,類型boolean佔用記憶體大小寫著「1位元」,實際是佔用8位元。
第四章 開關電路與LED跑馬燈效果
4-16頁,程式碼當中的"++"運算子語法補充說明:
“++”代表「加1」;另外有個”–”(兩個連續減號),代表「減1」。因此,底下這兩行敘述的意思是一樣的:
click ++; click = click + 1;
此外,”+=”代表「加上某數」,假如要替click的值加1,寫法如下(其用意和上面兩行相同):
click += 1;
除了”+=”,還有”-=”, “*=”和”/=”這樣的寫法,相當於:
// 變數值減2,等同:click = click – 2; click -= 2; // 變數值乘3,等同:click = click * 3; click *= 3; // 變數值除4,等同:click = click / 4; click /= 4;
以上這些運算子統稱為指定運算子(assignment operator)。
4-20頁,倒數第三段第二行,「源流(Source Sink)」正確是「源流(Source Current)」。
第五章 序列埠通信
5-4頁,第一行「序列埠通訊視窗」,正確是「序列埠監控視窗」。
5-10頁,中間的圖說「封包(package)」,正確是「封包(packet)」。
第七章 LED七段顯示器
7-3頁,儲存七段顯示器數字代號的陣列,更正為底下紅色字體部分:
補充說明:使用shiftOut()函數傳輸序列資料
Arduino程式開發工具提供一個shiftOut()序列資料輸出函數(應該說「資料位移輸出」比較妥當),能一次傳送一個位元組(8個位元)資料傳給74HC595,而我們只需負責打開和關閉74HC595的並列資料輸出閘門,不用理會其他細節。
shiftOut()函數的語法如下:
其中的「位元順序」代表資料位元的傳送順序,以傳遞虛構的ledData變數值為例,這兩者的差異請參閱下圖。至於要用哪一種方式傳送,取決於74HC595資料輸出端的電路接法(參閱下文說明)。
根據本單元的七段顯示器資料設定,應該以"LSBFIRST"(最低位元先傳送):
7-6頁,中間的圖解,"abcdefg"的順序有誤,更正如下:
第八章 LED矩陣與SPI介面控制
8-10頁,MAX7219的要點補充說明:需要搭配「共陰極」LED;在MAX7219的規格書「一般說明」(第一段文字)寫著:”common-cathode display drivers”(共陰極)驅動器。
8-16頁與8-17頁的MAX7219矩陣LED麵包板的第7腳,接線有誤,正確是:
8-35頁,「動手做8-6」的LED矩陣逐字捲動效果程式,並無法顯示文字,請在此下載更新後的diy8_6程式,程式修訂說明請參閱此留言。
補充說明:使用MemoryFree.h程式庫檢查剩餘的主記憶體空間
Arduino有個MemoryFree.h程式庫,可檢查目前可用的記憶體量。下載並存入libraries資料夾之後,可在程式中透過MemoryFree.h的freeMemory()函數,傳回可用的主記憶體位元組(byte)數。如範例程式所示:
#include <MemoryFree.h> // 引用程式庫 // 佔用14位元組的字串資料(含結尾的null字元) char str[] = "Hello, world!"; void setup() { Serial.begin(9600); } void loop() { Serial.println(str); Serial.println(freeMemory()); // 顯示剩餘的記憶體量 delay(1000); }
用類似的方式,執行舊的diy8_6程式,序列監控視窗將顯示負值,代表記憶體空間不足:
在更新後的程式上測試,則得到如下的結果:
第九章 LCD顯示器+溫濕度感測器+超音波感測器
9-25頁:第二段,600µs (毫秒…,正確的單位名稱是微秒。
並接式LCD中,初始化LCD程式庫,設定接腳的程式有誤,9-5頁的接線圖是正確的。9-6頁的程式碼有誤:
正確的LCD資料腳位設定敘述如下:
影響的內文(頁數):9-6, 9-7, 9-12, 9-18和9-23。
9-10頁,設定日文片假名文字的程式碼,要加上NULL結尾(請參閱5-14頁說明):
9-16頁的串列連接LCD顯示模組,最好在74LS164 IC的電源和接地端,加上一個100nF (104)的電容,以便濾除雜訊干擾。
9-18頁,串接式LCD模組的程式宣告當中的接腳設定,需改成底下的紅色字體:
第十章 變頻控制LED燈光和馬達
10-9頁,timer 2 對應的腳位是數位3和11腳,其PWM頻率設定語法為:
TCCR2B=TCCR2B & 0b11111000 | 0×02;
10-22頁,NPN型的電晶體將負載接在C腳(集極),PNP型電晶體…,應改成「NPN型的負載接在電源端;PNP型的負載接在接地端。」
10-24頁,倒數第二段最後一行,「反電動式損害電晶體」,正確是「反電動勢…」。
10-31頁,第一段第一行中的「表 10-4 」,正確是「表 10-5」。
第十三章 製作光電子琴與MIDI電子鼓
13-4頁:表13-1上方的說明文字,「對照表(單位.png) Hz)」,當中的 ".png)" 是多餘的。
第十四章 手機藍牙遙控機器人製作
14-10頁,實驗說明裡的「序列埠通訊視窗」,正確是「序列埠監控視窗」。
14-12頁:內文提到的AccessPort軟體,並未收錄在書本DVD光碟,請讀者到AccessPort的官網(sudt.com)下載。
光碟裡的diy14_1.ino程式內容誤植成diy15_2,diy_14_1.ino的程式碼如下(請參閱14-12頁):
#include <SoftwareSerial.h> SoftwareSerial BT(10, 9); // 接收, 傳送 const byte ledPin = 13; char val; // 儲存接收資料的變數 void setup() { pinMode(ledPin, OUTPUT); BT.begin(9600); // 藍牙連線成功後,發佈「準備好了」訊息。 BT.println("BT is ready!"); } void loop() { if (BT.available() ){ val = BT.read(); switch (val) { case '0': // 若接收到0... digitalWrite(ledPin, LOW); // 關閉LED break; case '1': // 若接收到1... digitalWrite(ledPin, HIGH); // 點亮LED break; } } }
第十五章 網路與HTML網頁基礎+嵌入式網站伺服器製作
15-27頁:底下的程式片段:
正確是:
第十七章 Arduino +Flash整合互動應用
17-34頁:書本裡的程式是正確的,但是光碟的”接接樂Firmata.fla”程式有誤(main場景的34~38行):
function receiveData(e):void // 接收Arduino的資料 { var n:Number = Number(e.data); bian.moveX(n * 0.54); }
請將上面的敘述改成書本17-34頁的敘述:
function readAnalog(e:ArduinoEvent):void // 接收Arduino的資料 { var n:Number = Number(e.value); bian.moveX(n * 0.54); }
然後,在25行的這一行敘述:
var a:Arduino = new Arduino("127.0.0.1", 5331);
後面新增底下的敘述(請參閱17-33頁說明):
a.addEventListener(ArduinoEvent.ANALOG_DATA, readAnalog);
第十八章 RFID無線識別裝置與問答遊戲製作
18-10頁,RFID麵包板電路組裝圖中的蜂鳴器元件是多餘的。
附錄B 燒錄ATmega微處理器的開機啟動程式(boot loader)
B-4頁補充說明,使用UNO板燒錄Bootloader(開機啟動程式),在插上10uF電容之前,請先上傳B-13頁說明的ISP程式。上傳ISP之後,執行燒錄之前,請從Arduino軟體的「工具→板子」選單,選擇要燒錄的bootloader版本,以B-2的範例而言,請選擇Arduino Duemilanove w/ATmega328。
B-7頁:第一段倒數第二行,「參閱動手做 B-2」,正確是「動手做 B-1」。
B-9頁,電路圖的正確接法如下:
B-12頁,圖片中的”DTS”標示,正確是”DTR”。
附錄D 中斷處理與交流電調光器製作
D-12到D-14頁的動手做D-1單元,所採用的「零交越檢測元件」,正確的編號是H11AA1(書本內文多寫了一個1),接MOC3020M第1腳的電阻是它內部LED的限流電阻,電路圖上畫的是180Ω,但我實際在板子上焊接的是1KΩ電阻(如下圖)。其實跟外部的LED一樣用470Ω電阻或330Ω就好了,180Ω也可以。
更新後的調光器電路圖:
D-13頁:4N25電路圖底下的「接TRIAC的T1腳」,正確是「接TRIAC的A1腳」。有些廠商的TRIAC元件用A1和A2來標示陽極腳位,有些則標示成T1和T2(代表Terminal 1, 終端腳1)。
D-13頁,4N25的橋式整流電路正確是:
為了避免橋式整流器部分接錯,同時減少接線,可以採用現成的「橋式整流器」,如下:
橋式整流器有多種耐電壓和安培規格,選購時,至少選用400V/1A。它的外觀有圓有扁,上面有交流和+, -符號。
D-13頁,修正交流電調光器,燈泡閃爍的問題,請參閱「使用TimerOne程式庫改寫Arduino交流電調光器程式」說明。
附錄E 使用App Inventor開發Android App
"BTRobotControl.apk"(藍牙遙控機器人APP)無法送出「左轉」訊息,請參閱這篇文章,下載修正之後的APP和原始檔。
老師您好:
在第十六中提到了使用繼電器開關,所以我在網路上不同的商家買了一路及二路的繼電器,
使用時確發現,不同繼電器開關時機相反.
實驗中我想要當我按下銨鈕後,繼電器啟動外部燈源10秒後又自動關閉,外部廻路我是接在NO的方式.
只有一個商家買到的繼電器是如同我想的方式在運作,
換上另一商家的一路或二路繼電器,確是一開始繼電器就啟動,當我按下按鈕時,外部電源滅了10秒後又再度亮燈,
想請問老師這是那裡須要調整呢?
hi gogo:
我需要看過繼電器模組的電路圖才能確認,請提供購買的連結讓我看看。
thanks,
jeffrey
這個是我想要的正常工作Relay:
http://www.pcstore.com.tw/sshome/M19065521.htm
這是相反的工作的Relay:
http://goods.ruten.com.tw/item/show?21209142792234
我看了兩個繼電器模組的介紹,其中一個是低電位觸發,一個是高電位或低電位觸發(可透過跳帽調整)。所以,如果你的程式碼原本是用高電位(HIGH)代表「開」,就改成低電位(LOW)即可。
thanks,
jeffrey
謝謝老師我知道了~
請敎老師:
我想要在同一片Mega 2560板子上,搖控多個裝置(如電視,冷器,投影機),但這些裝置都位於家中的不同角落.
而發射器和接收器在發射接收時,角度徧差如果過大時,收到的訊號也常常無法啟動設備.
PS : 最後Mega 2560會放在家中另一機櫃裡.
問題:
1.須在Mega 2560上裝幾個紅外線發射器?目前我只查到只能在同一板子上裝一個發射器.
2.因設備(如電視,冷器,投影機)位於不同位置,我該如何正確安裝紅外線發射器才可正確搖控它們呢?
3.還須注意那些?
若以我家的電器用品分散程度來看,我應該會用數個DIY的Arduino板,分別裝在被控制的家電附近,因為它們分散的距離不小(類似子、母機的概念)。
不過,紅外線跟可見光一樣,都可被折射,所以如果輸出功率夠大,加上環境許可,發射角度應該可以克服。實際的紅外線LED數量和安裝方式,我想每個環境都不同,沒有標準答案。
have fun!
jeffrey
知道了~謝謝您的回答.
老師您好
我參照您的 交流電調光器製作 遇到一個問題 ,在未接負載時的兩端電壓會隨著我的程式的設定值而變化,但我加上負載後,電壓便會hold在120v左右,請教一下,為什麼會這樣?
請問你的負載是白熾燈泡嗎?
thanks,
jeffrey
我用的燈泡是滷素燈泡!!
鹵素燈泡可以調光,但因為你提到未接負載時,調光器電壓可以調整,所以調光電路應該沒問題。你方便用一般燈泡測試看看嗎?
thanks,
jeffrey
我試過了 結果都一樣
那問題應該是在TRIAC電路,請再仔細檢查看看。
thanks,
jeffrey
如果我 H11AA1 那組線路沒加,只接MOC3020M及BTA12-600C 這兩組電路,是否能正常動作?
不行,請參閱D-10頁「交流電調光器運作原理」一節說明。
thanks,
jeffrey
作者,你好
有一個問題想請教:
第二版的10-30頁的表10-5, 這個表是否是指明馬達A的控制方式?
表中第3行的輸入1B, 是否應該是輸入2A?? 煩請說明, Thanks.
hi duke:
表10-5代表一組輸入端(EN, 1A和1B)的狀態,所以是1A沒錯,謝謝!
thanks,
jeffrey
老師您好,
P8-15上方的MAX7219和LED矩陣電路圖中,在SEG D那裡顯示23腳,但MAX7219只有22腳,我查了Datasheet,發現MAX7219跟MAX7221一起介紹,而MAX7221有24腳,不知SEG D在23腳是否因此而來?
初學看不太懂Datasheet,它的圖左標明僅MAX7221第12腳用來做LOAD(CS),而圖右13-24腳不知兩者是否相同,怕焊下去會出現問題。
請協助,謝謝!
hi leo:
MAX7219和MAX7221功能相同,主要是MAX7221可減少電磁干擾,並具備完整的SPI介面,它們都有24個接腳。書上的電路圖是正確的,謝謝!
thanks,
jeffrey
請問moc3023m 可以代替 moc3020m 嗎??
hi houng:
我查了一下MOC3020M系列規格書,這兩者的差別在於3020M的順向電流容許30mA,3023M只容許5mA。
所以,為了保險起見,連接此IC第一腳的限流電阻要大一點。
thanks,
jeffrey
https://drive.google.com/file/d/0BwAJwohIStdLTHBEc0JsSFU1Ukk/view?pref=2&pli=1
老師您好 :
請問上面這張電路圖可以控制10顆燈泡調光嗎??
看起來可以。
另外,我白天有其他工作,通常無法即時回覆訊息(若是外出旅遊,可能會有數天無法回信),我一有空就會處理,所以你不需要重複多次留言。不便之處請見諒!
thanks,
jeffrey
您好 在勘誤表中// D-13頁,4N25的橋式整流電路正確是:// 其二極體橋式整流電路圖還是錯的,依照圖中二極體方向交流電路不構成回路,正確應該是將4顆二極體方向接為圖中的相反方向就可以正確整流。
感謝告知!二極體圖片上下畫反了,已經在去年刷次的第二版書籍還有第三版D-15頁修正了。
thanks,
jeffrey