• COSPLAY 3D 建模
  • 3D列印服務
  • #maker+t=market
  • 1
  • 2
  • 3

Maker + T = Market 造訪社團 » 資源

原文網址 Charlie Ting
2016-04-26 20:14:57

[自製時速表 - Part 2]

1. 加入了紅外線控制功能,用來解決機車上的風吹日曬,造成一般按鍵的壽命和誤動作問題。

2. 加入了選單介面,讓關鍵參數的設定可以透過遙控器直接設定。

3. 將關鍵參數寫入 EEPROM ,避免斷電後的資料歸零。

準備上路實測了,完成之後就要先移植到電路板上,再裝到機車上,以後若要加其他功能就直接燒程式即可。

心得:

1. 程式不複雜,但有不同的中斷在處理資訊,硬體層的運作,要轉到軟體層的顯示時,如何巧妙切換是重點,除了要兼顧邏輯,也要留意顯示時的畫面閃動和更新率。

2. 程式不大,但捉幾個函示庫進來之後,資源也用掉將近八成。這顯然會有一定的侷限性,尤其是在快速開發為主的應用中,優化和精簡的時間成本頗高。

李穆
2016-04-26 21:16:50

用高階一點的板子會更有彈性吧?

鄭鈞庭
2016-04-26 22:19:31

可以請問用哪些模組嗎?

Charlie Ting
2016-04-27 16:28:28

實測效果不佳,關鍵原因在於原本參考的程式是腳踏車,車輪半徑大,訊號相對單純。但機車的半徑小,以磁力方式運作時,它的影響範圍就相對大,進而造成訊息判斷上不夠精準。

因此,合理的作法最好改為光學式,然後中斷改為上緣或下緣觸發即可,整個邏輯會再簡化許多,也更穩定。


原文網址 Charlie Ting
2016-04-18 22:45:24

[Arduino memo]

盡信書不如無書,愛爬文只能在地上爬。

為了幫目前作的電路加上紅外線遙控,但 PIN 腳已經快不夠用了。所以用到了 PIN 0,然後就開始出現燒錄上的問題。例如:

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync

或者

avrdude stk500_recv() programmer is not responding

或者

avrdude stk500_getsync() not in sync resp=0x00

我也去爬了一些文,大多都是講要 reset, 要重新插 USB,我也真的試了一下,不是很穩定。

最後,我發現一件事,只要把 PIN 0 的線拔掉再燒錄就一切正常。

而這事可能的原因在那裡?或許是 arduino 把 PIN 0 跟 PIN 1 當作 RX 跟 TX 使用,而讓一開始的訊號對它的程式運作產生干擾,造成燒錄程式誤判。

總之,這事的關鍵應該在這裡,是資源有限的情況下常見的 side effects。

寫在這裡提醒自己一下....

彭帟絃
2016-04-18 22:48:23

pin0在燒錄時要當auto reset用,所以pin0如果沒拔掉,就不能拉(low or high)有一段時間沒玩了。

彭帟絃
2016-04-18 22:50:00

如果是IC的控制或是資料的傳輸可以用I2C來做,只要用掉2pin就可以串接多個裝置,沒支援I2C的也可以用軟體模擬。

Keisuke Lin
2016-04-18 23:21:18

1602換成I2C的就可以省很多腳了

Robin Hsu
2016-04-18 23:37:05

這個我之前在玩常遇到說, 尤其是拿 pin 13 led 來玩 閃動的太快的時候, 常常會造成 下一次的上傳出現這樣的問題.
通常是在 reset 之後, 有個瞬間能更新成功 XD


 

全不選 發文排行