- 使用arduino IDE的範例程式Fade, 使用D13作為LED。
- arduino nano只會顯示亮暗, 沒有漸進變化過程
- arduino micro能以on-board LED顯示漸亮漸暗
- 原因分析:
nano 的 D13 不支援PWM
micro 的 D13支援PWM - arduino接上ubs電源時, on-board LED 一直快速閃爍, 線路連接的電子零件沒有通電運作
- 這是透過USB供電時, 短路防護的信號
- 但要留意, 若是透過RAW供電時, 則沒有短路防護。
- 使用Serial.printf("%4.2f", floatVar) 得到結果為 ?
- 原因分析:
arduino IDE只支援C語法, 但是不支援float的格式語法, 必須另外寫程式來格式化輸出 - 我的解決方法: (可以放在setup段來測試)
Serial.begin(9600);
//sprintf format test loop
float celsius=-55.25;
float fahrenheit;
while(celsius<=155){
fahrenheit = celsius * 1.8 + 32.0;
Serial.print(celsius);Serial.print(" ");
Serial.print(fahrenheit);Serial.print(" ");
char *numC=(char *)"000.00C ";
char *numF=(char *)"000.00F ";
//arduino的printf format不支援float, double的格式, ex: %4.2f , 輸出會出現?
//Serial.printf("%4.2fC %4.2fF", celsius, fahrenheit);
sprintf(numC, "%4i.%02i", int(celsius), int(abs(celsius-int(celsius))*100));
sprintf(numF, "%4i.%02i", int(fahrenheit), int(abs(fahrenheit-int(fahrenheit))*100));
Serial.print(numC);Serial.print(" ");Serial.print(numF);Serial.println(" ");
celsius+=3.97;
}
- 在LCD上, 以單一字元顯示 ℃ 或 ℉
- 定義℃ 或℉ 符號
- 在LCD上印出自定符號
- //在程式宣告段
byte degC[8] = {
B01000,
B10100,
B01000,
B00011,
B00100,
B00100,
B00011,
};
byte degF[8] = {
B01000,
B10100,
B01000,
B00111,
B00100,
B00111,
B00100,
};
//在setup()段,
lcd.createChar(0, degC);
lcd.createChar(1, degF);
//要印出字元時
lcd.write(byte(0)); //印出 ℃
lcd.write(byte(1)); //印出 ℉
2018年3月6日 星期二
關於及arduino的一些瑣碎小事
2017年6月13日 星期二
GPS以uart與樹莓派Raspberry Pi 3連接使用紀錄
使用材料:
樹莓派的作業系統, 我是以AiGO 2017 v1為架構, 再新增軟體套件
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install build-essential gpsd gpsd-clients python-gps joe
$ sudo reboot
其中joe是我個人在linux系統下慣用的文字編輯器, 作業系統內建有nano 或 vi可以使用。
針對GPS使用RasPi3的UART連線, 作業系統要新增設定/boot/config.txt,
$ sudo joe /boot/config.txt
在文件的最後一行加入
enable_uart=1
存檔後, 重新開機
$ sudo reboot
在RaspPi3的系統中, 是以/dev/ttyAMA0與 UART0連線的, 所以啟動gpsd時, 要指向這個裝置
$ sudo gpsd /dev/ttyAMA0 -n -F /var/run/gpsd.sock
$ cgps -s
參考網頁都是像上面寫的指令一樣, 但是我一直無法在cgps中看到gps傳資料進來, 因此我執行cgps時, 不加-s參數, 可以監視GPS模組的訊息是否傳入。
後來發來gpsd有一支程式gpscat, 也可以直接讀取gps模組傳入的訊息, 使用方式如下:
$ gpscat -s 57600 /dev/ttyAMA0
其中 -s 57600是傳輸速率(baud rate), 我試過57600 bps是這款gps模組的上限。
令我疑惑的是, 若我沒有執行 "gpscat -s 57600 /dev/ttyAMA0" 則 cgps 無法正常讀取GPS模組的訊息, 因此我推論是沒有設定 /dev/ttyAMA0 的傳輸速率所致。
最後在gpsd的faq網頁中, 查到可以使用 "stty speed 57600 < /dev/ttyAMA0" 來設定傳輸速率。其餘的執行程序如下:
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo killall gpsd
stty speed 57600 < /dev/ttyAMA0
sudo gpsd -n /dev/ttyAMA0 -F /var/run/gpsd.sock
cgps
終於可以從 cgps 讀到GPS模組的定位資訊。
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqklqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Time: 2017-06-12T15:52:14.000Z xxPRN: Elev: Azim: SNR: Used: x
x Latitude: 24.XXXXXX N xx 193 66 048 26 Y x
x Longitude: 120.XXXXXX E xx 15 63 277 00 N x
x Altitude: 167.7 ft xx 13 62 019 33 Y x
x Speed: 0.5 mph xx 129 54 138 26 N x
x Heading: 192.6 deg (true) xx 20 50 343 23 N x
x Climb: 0.0 ft/min xx 5 40 056 39 Y x
x Status: 3D FIX (266 secs) xx 2 39 141 24 Y x
x Longitude Err: +/- 46 ft xx 29 36 254 19 Y x
x Latitude Err: +/- 67 ft xx 24 27 182 00 N x
x Altitude Err: +/- 73 ft xx 21 17 320 15 N x
x Course Err: n/a xx 30 10 044 00 N x
x Speed Err: +/- 92 mph xx 18 03 290 00 N x
x Time offset: -872.718 xx x
x Grid Square: PL04gc xx x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
參考資料
- 樹莓派Raspberry Pi 3 (以下簡稱為RasPi3)
- GPS Receiver - LS20031 5Hz (66 Channel),
https://www.sparkfun.com/products/8975 - 預先焊接針腳, 使用4條雙母杜邦線與樹莓派連接
可參閱SparkFun網頁上的Connection Tutorial - 留意GPS模組使用電壓3.3V
- GPS模組的TX連接到RasPi3的GPIO Pin10(RXD)、
RX連接到RasPi3的GPIO Pin8(TXD)。
詳細的RasPi3 GPIO針腳定義請參閱: https://pinout.xyz/#
樹莓派的作業系統, 我是以AiGO 2017 v1為架構, 再新增軟體套件
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install build-essential gpsd gpsd-clients python-gps joe
$ sudo reboot
其中joe是我個人在linux系統下慣用的文字編輯器, 作業系統內建有nano 或 vi可以使用。
針對GPS使用RasPi3的UART連線, 作業系統要新增設定/boot/config.txt,
$ sudo joe /boot/config.txt
在文件的最後一行加入
enable_uart=1
存檔後, 重新開機
$ sudo reboot
在RaspPi3的系統中, 是以/dev/ttyAMA0與 UART0連線的, 所以啟動gpsd時, 要指向這個裝置
$ sudo gpsd /dev/ttyAMA0 -n -F /var/run/gpsd.sock
$ cgps -s
參考網頁都是像上面寫的指令一樣, 但是我一直無法在cgps中看到gps傳資料進來, 因此我執行cgps時, 不加-s參數, 可以監視GPS模組的訊息是否傳入。
後來發來gpsd有一支程式gpscat, 也可以直接讀取gps模組傳入的訊息, 使用方式如下:
$ gpscat -s 57600 /dev/ttyAMA0
其中 -s 57600是傳輸速率(baud rate), 我試過57600 bps是這款gps模組的上限。
令我疑惑的是, 若我沒有執行 "gpscat -s 57600 /dev/ttyAMA0" 則 cgps 無法正常讀取GPS模組的訊息, 因此我推論是沒有設定 /dev/ttyAMA0 的傳輸速率所致。
最後在gpsd的faq網頁中, 查到可以使用 "stty speed 57600 < /dev/ttyAMA0" 來設定傳輸速率。其餘的執行程序如下:
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo killall gpsd
stty speed 57600 < /dev/ttyAMA0
sudo gpsd -n /dev/ttyAMA0 -F /var/run/gpsd.sock
cgps
終於可以從 cgps 讀到GPS模組的定位資訊。
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqklqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Time: 2017-06-12T15:52:14.000Z xxPRN: Elev: Azim: SNR: Used: x
x Latitude: 24.XXXXXX N xx 193 66 048 26 Y x
x Longitude: 120.XXXXXX E xx 15 63 277 00 N x
x Altitude: 167.7 ft xx 13 62 019 33 Y x
x Speed: 0.5 mph xx 129 54 138 26 N x
x Heading: 192.6 deg (true) xx 20 50 343 23 N x
x Climb: 0.0 ft/min xx 5 40 056 39 Y x
x Status: 3D FIX (266 secs) xx 2 39 141 24 Y x
x Longitude Err: +/- 46 ft xx 29 36 254 19 Y x
x Latitude Err: +/- 67 ft xx 24 27 182 00 N x
x Altitude Err: +/- 73 ft xx 21 17 320 15 N x
x Course Err: n/a xx 30 10 044 00 N x
x Speed Err: +/- 92 mph xx 18 03 290 00 N x
x Time offset: -872.718 xx x
x Grid Square: PL04gc xx x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
參考資料
- https://medium.com/@phutidus/%E7%94%A8-raspberry-pi-gps-%E6%A8%A1%E7%B5%84%E5%BB%BA%E7%AB%8B-stratum-1-%E7%9A%84-ntp-server-cb1b501a5f91
- http://www.catb.org/gpsd/faq.html
- http://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3
- https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi/using-uart-instead-of-usb
2015年11月13日 星期五
幫Time Capsule (Apple)更換新硬碟
幫Time Capsule (Apple)更換新硬碟
上一回幫自己的Time Capsule更換新硬碟, 好像沒留下任何記錄, 昨天第2次更換Time Capsule的硬碟, 把過程紀下來。以下步驟只是個人的過程紀錄, 僅供網友們參考, 實際更換步驟, 請自行斟酌, 恕不負任何責任。
上一回幫自己的Time Capsule更換新硬碟, 好像沒留下任何記錄, 昨天第2次更換Time Capsule的硬碟, 把過程紀下來。以下步驟只是個人的過程紀錄, 僅供網友們參考, 實際更換步驟, 請自行斟酌, 恕不負任何責任。
- 先將Time Capsule的設定備份到電腦端, 以免更換後設定被清除掉...
- 關閉所有電腦端的Time Machine的還原機制。
- 關閉Time Capsule電源, 其實就只是移除電源線和網路線。
- 拆開Time Capsule, 取出舊硬碟, 更換新硬碟。(請自行參閱:Apple Time Capsule Model A1302 Hard Drive Replacement- https://www.ifixit.com/Guide/Apple+Time+Capsule+Model+A1302+Hard+Drive+Replacement/2750)
- Time Capsule重新開機, 由AirPort工具程式進入Time Capsule系統, 將新硬碟清除(重新格式化), 設定好磁碟名稱和檔案共享。
- Time Capsule會將硬碟分割成3個磁區: APconfig、APswap(前2個為系統內部用的, 不用理會)和資料分割區(名稱是在Time Capsule磁碟中設定的)。我們只需要將資料分割區, 由舊硬碟複製到新硬碟。
- 將舊硬碟複製到新硬碟中, 有兩種方法:
- 將舊硬碟以外接盒與電腦連接, 透過網路(會很慢), 將檔案複製到Time Capsule的新硬碟中。我這次是因為手上沒有可以讀取4TB硬碟的外接盒或外接線, 因此用這個方法, 將近2TB的資料透過Giga bits網路傳輸花了1天多的時間複製資料。
- 我想還有另外一個更快的方法: 關閉Time Capsule電源, 取出新硬碟, 將這兩顆硬碟分別接上外接盒。舊硬碟有3個分割區, 我們只需要將資料分割區的所有檔案, 由舊硬碟複製到新硬碟。
- 但上述的2個方法, 無論是那一種, 若硬碟中有Time Machine的電腦備份檔案, 則須留意複製的方法, 請參閱:ime Machine:如何將備份檔從目前的備份磁碟傳送到新的備份磁碟- https://support.apple.com/zh-tw/HT202380
2015年8月23日 星期日
Openoffice.org Writer 如何整批壓縮文件內的圖檔解析度
身為Openoffice.org Writer愛用者,一直以來被這個問題困擾:文件要插入大量的圖片時,總是要先縮小解析度,再來插入文件內。萬一忘記了,就麻煩了。
今天請出google大神,找到另外一篇介紹如何將Impress簡報圖片壓縮的文章,步驟為:
今天請出google大神,找到另外一篇介紹如何將Impress簡報圖片壓縮的文章,步驟為:
- 開啟 Impress/工具/擴充軟體管理程式
- 以線上方式取得更多擴充軟體,開啟網頁找Oracle Presentation Minimizer,下載。
- 在擴充軟體管理程式中,增加/將下載的.oxt檔案新增/為所有使用者/溜覽全部合約/接受。
- 重啟 Impress 。會在工具中出現/最小化工具。
- 但是這是給Impress用的,那Writer呢?
方法有了,再來就是找合用的擴充軟體,來壓縮Writer文件中的圖片囉~
- 在http://extensions.services.openoffice.org/en/search網站中,找到PixCompress,下載[Download extension]。
- 在Openoffice.org Writer/工具/擴充軟體管理程式
- 在擴充軟體管理程式中,增加/將下載的.pixcompress.1.x.x.oxt檔案新增/為所有使用者/溜覽全部合約/接受。
- 重啟 Writer 。會在工具中出現/Minimize pictures。
- 執行 工具/Minimize pictures,出現PixCompress對話框/按一下[All pictures],將所有圖片最小化。
- 存檔前請三思,一旦存檔後,所有圖片就無法恢復原來的尺寸。
- 若是反悔的話,要按很多次的Ctrl+Z,回復到圖片縮小前的狀態;或者直接關閉檔案不要存檔。
2015年8月22日 星期六
Windty 數值模擬預報
沒想到資料開放,網頁技術神速的進步,現在也有數值天氣預報的網站可以使用。
https://www.windyty.com
而且還很大放的給你使用鑲嵌網頁的功能:https://embed.windyty.com/embedmake.html。
https://www.windyty.com
而且還很大放的給你使用鑲嵌網頁的功能:https://embed.windyty.com/embedmake.html。
可以鑲嵌在網頁中,呈現某區某固定時間的預報資料,例如2015/08/25 00:00台灣附近海拔1500公尺:
訂閱:
文章 (Atom)