痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 23473|回復: 72

[實做與討論] 喬喬林愛說笑之Arduino初上手(一)

  [複製鏈接]
發表於 2018-1-3 03:08:40 | 顯示全部樓層 |閱讀模式
本文章最後由 jojoling 於 2018-1-3 03:26 AM 編輯

大家好~~

最近呢,剛好有些痞友想摸 arduino 但又不知怎麼摸起。那喬喬林就寫些很重要但又不常出現在一般 arduino 教學裏面的文章好了。就當喬喬林在說笑話。哈哈。以上就以問答方式來呈現給大家了。

問:學 Arduino 真的是無痛嗎?一般人真的就能玩的嚇嚇叫嗎?
答:
* 是也不是,如果你是外果(國)人又是英語系國家,答案就是 Yes,因為程式嘛就是英文,英語系人用英文來寫邏輯當然無痛。
* 另外邏輯好的人也是容易學會程式,電子類組的也容易學會硬幫幫的電子程式寫法。
* 不要相信它無痛,但最少它讓你更容易更簡單就開始學程式。且又容易使用別人寫好的"庫"((library)。


問:Arduino UNO 有好多種外面的版本,有便宜有貴,有什麼差別呢?到底如何選呢?
答:
* 標準的 Uno R3 是有一顆 atmega16u2(mcu, 16 kbytes flash)來當一個 USB RS232 bridge,再加上一個DIP包裝的 ATMEGA328(含IC座)。
* 所以如果有人不小心用 ISP 燒錯 Fuse 值的時後,還能直接拆下,另外別塊的 Uno 都能有簡單教學回復 Fuse值。
* 便宜版的 Uno R3 一般都是 大陸製的 RS323 晶片加上 ATMEGA328p SMD 版,所以能便宜,沒事不要用 ISP 更改 fuse 值就不會搞成磚。
* mini/pro/micro 的最大差別就是好不好燒與體績。
*** Uno R3 DIP 版
相片 2018-1-3 上午1 34 04.jpg

問:我好想學 Arduino ,應該怎麼學?
答:
* 買書喔,這是最簡單的方法,找個圖文並茂的書,拿那些現有的程式玩玩,小改會比較有信心。
* 玩Arduino 的話,基本程式語法學一學,多學一些怎麼使用別人寫好的"庫"比較重要。網路無國界。
* 使用別人寫好的庫不是因為你不會寫程式,會寫程式的人都超會用別人寫好的。
* 真正想學程式還是去買本學校的程式設計的教科書吧,從基礎變數啊,判斷式,流程一步一步進階。課本習題好好做。
* 想寫好程式,沒捷徑,多看,多寫,多思考。累。


問:買了 Uno R3 與打開 Arduino IDE 後,該怎麼下手?

答   
* 首先,就是先學會用 Arduino IDE 編譯一些範例程式,並讓它能正常上傳到版子上喔。
* File->Examples-> 01.Basics->Blink 是個好選擇
* 不要小看 Blink這個程式,雖然只是簡簡單單的閃爍 LED,然後1秒暗1秒亮的詢環。但它可是很常被拿來測證硬體用的。
* 用 Blink 確認軟體開發環境是否正確與編譯。
* 用 Blink 確認 MCU (fuse)的工作頻率是否正確。(是否為1暗1秒亮)
* 用 Blink 確認是否能上傳到 Uno R3
2018-01-02_235610.png

*** 此錯誤訊息為我電腦NB的 usb port 被我插到有點問題,需要重新插入讓系統抓正確。
2018-01-02_235819.png


問:有時後我們需要 isp 來燒自製 Uno R3 bootloader,如何確定Usbasp環境正確?
答:
* Usbasp 是一個可以用來燒寫 atmel 程式的東東,且它又是 open source ,建議可以使用  proisp 1.72 來一步一步確定是否正確。
* 將硬體接正確說,選擇正確的燒寫型號,點選"RD"來檢查 chip ID 是否讀寫正確,如正確就表示通道是打通的,如不能燒一定是其它問題。
* 通道要能正確打通,要確定驅動正確,連接線不能過長(或可以調整 progisp 1.72降速試試)。
* 當 progisp 1.72 可以正確用 usbasp 讀到 chip id 後,我們可以假設 arduino IDE 應該也能用它內建的 avrdude 去讀取成功。
2018-01-03_030029.png


問:Arduino 如何得知編譯與上傳問題出現在那?
答:
* 我個人習慣會讓編譯訊息與上傳訊息都完整的顯示,這樣才容易看到那裏出了問題,也容易用這些訊息請教別人。
*** File->Preference


*** 顯示編譯與上傳的訊息
2018-01-02_235701.png

*** 正確上傳完敝
2018-01-03_000405.png





評分

40

查看全部評分

發表於 2018-1-3 08:04:39 | 顯示全部樓層
本文章最後由 cremaker 於 2018-1-3 08:28 AM 編輯

arduino 有在用, 常用來做一些簡單實驗,我的學習方法是

1. 一定要了解你的 Arduino 硬体架構, 像類比輸入,數位輸出入的控制方法, 這些都是基礎
2. Arduino 的常用指令及寫程式的基本方式, 這在 ARduino 官方網站有很詳細介紹, 在網路上也有很多熱心者提供的中文教學
3. 這些搞熟了,再來了解其它的應用,像是 INT 中斷, 一些特殊的傳輸方式,像是 isp i2C
4. 和廣大感應器及電子零件的結合,這是 Arduino 的強大擴充功能,小小一塊板子不可能什麼功能都加進去, 像是好玩的 LCD 顯示、溫度 濕度, 距離感應, 各式馬達控制。
5. 多看這類的文章, 像網路上有很多專案及一些簡單測試儀器的製作專案, 都可參考一下
6. 這些基礎打穩了,把你的想法、概念變為實品, 是收穫的時刻了

有人會認為, 啊要學這麼多, 傷腦筋,其實你自己去做就成功了一半, 不去做, 永遠不了解自己問題在哪, 學任何東西,底子是很重要的!

我玩不深,一般基礎控制沒問題,馬達控制及用搖桿控制電路, 像馬達轉速(PWM 控制), 大家可一起經驗分享,來做同學!

評分

8

查看全部評分

發表於 2018-1-3 08:22:23 | 顯示全部樓層
好久沒用都快忘記怎麼用了,還好有這篇與這系列教學的出現,複習ㄧ下後應該就會很快進入狀況。

拍拍手!
發表於 2018-1-3 12:14:47 | 顯示全部樓層
編譯時有錯誤訊息google都可以查 英文要會一些就是了
 樓主| 發表於 2018-1-3 12:44:23 | 顯示全部樓層
本文章最後由 jojoling 於 2018-1-3 12:45 PM 編輯

這篇的重點其實就是~~~~
先要花時間把開發環境一步一步卡關的地方打通成功。不然一切都是猜想。
這個是任何開發韌體的工程師一定要做的事。用現在以知/好的軟體,去測試基本功能。
基本功能:
* 可燒錄。
* 程式會跑(弄個簡單的blink程式,沒 led 的話用示波器,沒示波器的話....就拿電表吧)
* 測試環境硬體信號量測確定(如 vcc, gnd ,reset 以及 gpio 的設定之類)
* 如寫個程式設定輸出並輸出"1"而強制停下~
  1. pinMode(OUTPUT_CONTROL,OUTPUT);
  2. digitalWrite(OUTPUT_CONTROL,HIGH);
  3. while(1); // dead loop (infinite loop)
複製代碼

有問題時都要一步一步的去釐清軟硬之間。


ps: 自從來痞酷後買了示波器,天空現在是藍色的。
發表於 2018-1-3 13:12:07 | 顯示全部樓層
JOE 改天北上找你教我~~~~
發表於 2018-1-3 17:32:50 | 顯示全部樓層
jojoling 發表於 2018-1-3 12:44 PM
這篇的重點其實就是~~~~
先要花時間把開發環境一步一步卡關的地方打通成功。不然一切都是猜想。
這個是任何 ...

想學的人如果在家自學,往往在
基本功能  * 可燒錄。* 程式會跑  * 測試環境硬體信號量測確定  這幾個階段遇到問題弄不好就打退堂鼓了

學MCU 最重要的就是 師傅帶入行,修行看個人

是不是可以請jojoling 師傅就在此開個課 帶有學習意願的人 來入門!!

評分

3

查看全部評分

發表於 2018-1-3 22:15:12 | 顯示全部樓層
以前是看jojoling 拉別人跳坑,不知道今年jojoling 有沒有意願跳下來當版主呢?
 樓主| 發表於 2018-1-3 22:45:54 | 顯示全部樓層
wish 發表於 2018-1-3 10:15 PM
以前是看jojoling 拉別人跳坑,不知道今年jojoling 有沒有意願跳下來當版主呢?
...

哈哈哈哈,我當路人甲比較好~
發表於 2018-1-3 23:09:04 | 顯示全部樓層
jojoling 發表於 2018-1-3 10:45 PM
哈哈哈哈,我當路人甲比較好~

這種事勉強不得,不過有空的話歡迎多提供你的大作

評分

1

查看全部評分

發表於 2018-1-4 00:45:34 | 顯示全部樓層
有人說學電腦語言不要學 ARDUINO ,他的理由是 學起來太容易,資料庫太齊全, 這又為何? 理由是 不經一翻寒澈骨怎能得來撲鼻香!! 我當初買了書來學習可能是以前有 8951  STM8S 和基本C 的知識所以用起來覺得容易,以前要把資料寫到 SD卡不但難如登天甚至老鼠抓龜"無從著手"但是ARDUINO的資料庫都有還有範例,只是,用起來太順了成就感就少了!! 要深入了解程式內容卻又覺得"太深澳"!! 我的結論是 這給"速成班"的需求的人很適合!!

評分

1

查看全部評分

發表於 2018-1-4 05:04:53 | 顯示全部樓層
wish 發表於 2018-1-3 11:09 PM
這種事勉強不得,不過有空的話歡迎多提供你的大作

同意不要勉強, 否則就失了原意!

我也推 康兄一票,另外阿個 阿干大,老大怎忘了!我推他一票!

其實痞酷人才真的很多, 一定可找到適合的人選!
發表於 2018-1-4 09:18:50 | 顯示全部樓層
如果用的Arduino是左岸的相容版
記得要再安裝一個驅動軟體
因為相容版用的USB介面是 CH340

https://www.youtube.com/watch?v=F5rsO3R45xU

評分

3

查看全部評分

發表於 2018-1-4 09:24:59 | 顯示全部樓層
如果想引發小朋友學習程式設計的話
可以試試 S2A 或是 S4A (都是用Arduino板)
這兩個是"積木程式"
可以在桌面以積木組合的方式
完成指定的動作
或是上傳到Arduino上做其他功能
教育部也有針對國中小學作推廣教學
Arduino & S4A 在FACE BOOK 都有社群可加入

評分

4

查看全部評分

發表於 2018-1-4 09:54:59 | 顯示全部樓層
本文章最後由 cremaker 於 2018-1-4 10:26 AM 編輯

不是原汁原味, 不好玩,不建議!
純高業!, 連個站都不肯設!沒誠意!n_102|
發表於 2018-1-7 17:20:18 | 顯示全部樓層
本文章最後由 all666 於 2018-1-7 05:23 PM 編輯

請問JOJO 老師 及其他會arduino 設計程式的前輩

有一個變數,在執行程式時可以依照使用者設定而改變,在設定好變數值後,機器關機時能否保存所設定的數值,以便重新開機時可用? 不須每次開機都要重新設定


比如說 我要設定一個頻率上下限的變數,然後讀取輸入端頻率,當頻率低於下限 或頻率高於上限就輸出警報信號,但是 如果每次開機都要重新設定就太麻煩了,請問如何才能保存所設定的數值
發表於 2018-1-7 18:20:56 | 顯示全部樓層
這顆 MCU, 內有 eeprom, 直接寫進去就可以了。

補充內容 (2018-1-7 07:26 PM):
在 IDE 中例懨,另外也可讀寫外部的eeprom, 網路上有很多參考資料!, 請自行找一下!

這個問題剛好自己玩過, 故代為 JOJO  大回答,請勿介意!

補充內容 (2018-1-7 07:27 PM):
更正一下錯字:

在 IDE 中範例,另外也可讀寫外部的eeprom, 網路上有很多參考資料!, 請自行找一下!

評分

1

查看全部評分

發表於 2018-1-7 18:53:18 | 顯示全部樓層
請問老師:我用arduino1.8.5版ide,無法(手動或更新)載入attinycore開發版管理員選attiny,可來個教學嗎?謝謝!
發表於 2018-1-7 19:17:08 | 顯示全部樓層
本文章最後由 cremaker 於 2018-1-7 07:22 PM 編輯
康品穎 發表於 2018-1-7 06:53 PM
請問老師:我用arduino1.8.5版ide,無法(手動或更新)載入attinycore開發版管理員選attiny,可來個教學嗎?謝 ...


個人一點小建議:

1. 學習、實作時, 最好使用標準版, 即 UNO 版, 待有了一定基礎或有專門目的, 再使用專門版本!
2. 最新 IDE版,不一定是最穩的版本, 1.8.5 版還是一  BETA 版
2. 這類問題, 最好另起文發問, 方不致 造成原創者困擾

純建議, 勿介意!
 樓主| 發表於 2018-1-7 23:27:25 | 顯示全部樓層
康品穎 發表於 2018-1-7 06:53 PM
請問老師:我用arduino1.8.5版ide,無法(手動或更新)載入attinycore開發版管理員選attiny,可來個教學嗎?謝 ...

最近很懶~
需要先加上一個路徑在 arduino 設定裏面,紅色的框框 http://drazzy.com/package_drazzy.com_index.json
2018-01-07_232207.png

你用 chrome 的網頁直接翻譯一下
https://github.com/SpenceKonde/A ... ter/Installation.md

評分

1

查看全部評分

發表於 2018-1-8 00:39:45 | 顯示全部樓層
jojoling 發表於 2018-1-7 11:27 PM
最近很懶~
需要先加上一個路徑在 arduino 設定裏面,紅色的框框 http://drazzy.com/package_drazzy.com_i ...

多花時間跟女兒玩玩比較重要,小孩子長得很快,等她讀小學有了同伴,哈哈,那個爸比就變陸人甲了 ...
發表於 2018-1-8 05:47:04 | 顯示全部樓層
好棒喔
有一段時間沒用都快忘記怎麼用了,正想要再來玩玩剛好有這教學,就來複習一下。
發表於 2018-1-8 13:35:11 | 顯示全部樓層
Arduino 我在玩的時候有發現新版的編輯程式有時無法開啟舊版程序~

不過那是arduino-1.0.6及arduino-1.6.7跟arduino-1.8.5 板 不太通用!
發表於 2018-1-9 17:56:43 | 顯示全部樓層
1.File\preferences
1.jpg

2.Tools\Board:"Arduino/Gnuino Uno"\Board Manager...
出現一視窗 下拉右邊捲軸至AttinyCore by SpenceKonde
再安按install


3.關閉Arduino IDE,然後再重新開啟,此時再按Toos\Board
就可以看到ATtiny已加入
abc.jpg
attiny.jpg

評分

4

查看全部評分

發表於 2018-1-11 19:55:13 | 顯示全部樓層
本文章最後由 康品穎 於 2018-1-11 08:38 PM 編輯

請問老師上傳bink至uno r3,出現下列錯誤
arduino錯誤.pdf (123.99 KB, 下載次數: 11)
原因為何?謝謝!
不會貼圖片,貼成pdf,
直接照相:
P_20180111_203411 (複製).jpg
發表於 2018-1-11 20:47:51 | 顯示全部樓層
本文章最後由 康品穎 於 2018-1-11 08:48 PM 編輯


請教tom4318大,我用usbasp燒attiny44a,工具這樣選對嗎?
P_20180111_204209 (複製).jpg
 樓主| 發表於 2018-1-12 02:52:25 | 顯示全部樓層
康品穎 發表於 2018-1-11 08:47 PM
請教tom4318大,我用usbasp燒attiny44a,工具這樣選對嗎?

你這選法應該是對~

你把uno 版本不能燒的問題打開"顯示編譯與上傳的訊息"~
uno  那,你的檢查順序為:
1.確認我的電腦->內容->裝置管理員->底面的 com port 需出現。且裝上 driver
2.確認 uno 版上有燒 bootloader (你的版子應該有)
3.確認 arduino IDE 裏的 Tool 的 Board 與 Port 需正確被選擇好~

如不行,把 1 與 3 拍個圖片來看一下,並把顯示編譯與上傳的訊息貼來看看

評分

1

查看全部評分

發表於 2018-1-12 10:15:47 | 顯示全部樓層
發表於 2018-1-12 11:14:50 | 顯示全部樓層
jojoling 發表於 2018-1-12 02:52 AM
你這選法應該是對~

你把uno 版本不能燒的問題打開"顯示編譯與上傳的訊息"~

有顯示連接com7。
P_20180112_083333 (複製).jpg
P_20180112_083730 (複製).jpg
 樓主| 發表於 2018-1-12 11:17:27 | 顯示全部樓層
康品穎 發表於 2018-1-11 08:47 PM
請教tom4318大,我用usbasp燒attiny44a,工具這樣選對嗎?

你的組態設定是OK的~
不過要千萬記得,當你的組態設定,有些欄位更改後需要重新燒錄fuse值。
此 fuse 值是透過你圖上的"燒錄Bootloader"這個選項去更新的。
與 fuse 值有關的為:
B.O.D 此為過低電壓cpu會停止。
Clock 選擇內逼工作頻率與 fuse有關

底下這與 fuse 無關,如有發生奇怪問題,請先關閉:
LTO ( link time optimization )編譯器會在最後連結時做全域的最佳化。是降低執行程式大小的利器。
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-4-20 10:09 PM , Processed in 0.125485 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.