這題雖然是easy, 但是還是卡了一下,一開始雖然想到大致上O(n)的做法,但是沒有想得很透徹,寫了一堆例外處理卻一直有處理不完的case
後來重新整理一下思緒,終於將架構改得比較完整
2019年2月28日 星期四
[leetcode] 分享leetcode 的解法
最近剛好有一段空閒,想說刷一下leetcode
也順便把有跑過的code放到github上,成績較好或是想法比較有趣的部份就在blog做一下紀錄
以前寫過的部分題目當初皆用C 寫,
現在新刷的部分由於想要快速驗證想法,皆使用python3來做,有空才會再用C 寫一遍
也順便把有跑過的code放到github上,成績較好或是想法比較有趣的部份就在blog做一下紀錄
以前寫過的部分題目當初皆用C 寫,
現在新刷的部分由於想要快速驗證想法,皆使用python3來做,有空才會再用C 寫一遍
2019年2月25日 星期一
[leetcode][python] 46. Permutations
[leetcode][C] 50. Pow(x, n)
2018年8月7日 星期二
LED 旋轉顯示器
demo 影片
source code: https://github.com/cy-arduino/led_spin_display
source code: https://github.com/cy-arduino/led_spin_display
載具(開發用):
馬達: 無刷( 2212, 980KV)
電變: 30A
PWM轉速控制: arduino nano
本體
LED:
單色16顆
供電:
電池
傳輸:
無線(BT HS-05, SPP)
轉速偵測:
光遮斷器
開發版:
arduino nano
設定方法:
透過BT SPP,下command控制LED 顯示內容
範例:
好棒棒.txt
gogogo.txt
2016年9月5日 星期一
[研究中]naze32(rev5) + FrSky X8R + MinimOSD + Bluetooth
Naze32 rev5
user manual
http://www.abusemark.com/downloads/naze32_rev3.pdf
MinimOSD 設定
https://oscarliang.com/minimosd-micro-setup-naze32-pid-rssi/
Bluetooth 設定 - done
- 可以使用這個 http://ddddiy.blogspot.com/2014/02/hc-05-bt-module.html
- baudrate 設定有對應即可正常運作
- 直接接到版子中央的TX/RX pin(這邊應該就是轉USB port的hardware UART1)
- 這邊實際使用時發現Naze32 TX RX 是倒過來的,所以跟BT module 是TX-TX, RX-RX,跟一版接法不同
FrSky X8R
- 控制訊號
- PWM - done
- 直接接channel 1-8
- 這樣由於pin被佔據,無法使用uart2/softserial/telemetry....
- https://github.com/cleanflight/cleanflight/blob/master/docs/Blackbox.md
- Pin RC3 on the side of the board is UART2's Tx pin. If Blackbox is configured on UART2, MSP can still be used on UART1 when the board is armed, which means that the Configurator will continue to work simultaneously with Blackbox logging. Note that in
PARALLEL_PWMmode this leaves the board with 6 input channels as RC3 and RC4 pins are used by UART2 as Tx and Rx. Cleanflight automatically shifts logical channel mapping for you when UART2 is enabled inPortstab so you'll have to shift receiver pins that are connected to Naze32 pins 3 to 6 by two. - SBUS - 研究中
- Naze32 rev5 + FrSky X8R 需要SBUS 反向器,參考
- https://oscarliang.com/sbus-smartport-telemetry-naze32/
- 使用電晶體 http://skory.gylcomp.hu/alkatresz/bc547b.pdf
- 或是直接使用inverter http://www.ti.com/lit/ds/symlink/sn74lvc1g04.pdf
- telemetry - 研究中
- 需注意要使用SBUS, PWM gpio 被占據無法使用
- 參考 https://oscarliang.com/sbus-smartport-telemetry-naze32/
- RSSI- 研究中
2016年8月19日 星期五
Android - Nexus 刷官方image
https://developers.google.com/android/nexus/images
Nexus4: occam
目前最新image 為5.1.1 (LMY48T)
- 進入fastboot
- adb reboot bootloader
- unlock bootloader
- fastboot flashing unlock
- fastboot oem unlock <==舊裝置用這個
- 燒image
- 執行flash-all script
- lock bootloader
- fastboot flashing lock
- fastboot oem lock <==舊裝置用這個
Nexus4: occam
目前最新image 為5.1.1 (LMY48T)
2016年8月18日 星期四
2016年8月11日 星期四
2016年8月8日 星期一
DIY LAMA 直升機倒飛
這個部分跟一般六動直升機倒飛不同,而是直接將葉片反裝,再修改遙控系各動的正反性來達到(所以沒辦法降落XD)
https://goo.gl/photos/yEcdytLwuHQacgma9
https://goo.gl/photos/yEcdytLwuHQacgma9
自製四軸直升機飛控板
基本上這個架構是自己陸續看一些東西後整理出來的一個大致的架構
目前input 跟output 部分都有經驗了,會等姿態的部分研究差不多後,就可以全部都整合都起來...
目前input 跟output 部分都有經驗了,會等姿態的部分研究差不多後,就可以全部都整合都起來...
- input
- 直接接到接收機輸出的PPM 訊號
- 好處是可以只使用一個pin來接收多動訊號
- 之前使用nrf24l01時已經有實際解析ppm訊號
- 核心運算
- 姿態取得
- gyro + g-sensor
- http://ddddiy.blogspot.tw/2014/02/blog-post.html
- https://zh.wikipedia.org/zh-tw/%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2
- 如要加入無頭模式,需額外得取得一個絕對的方位做參考
- e-compass
- http://ddddiy.blogspot.tw/2014/04/gy-273-hmc5883-e-compass.html
- 須想辦法避免飛機上大電流產生的磁場做干擾
- 金屬的干擾
- hard iron
- 可靜態校正
- soft iron
- 須在想辦法在設計上遠離,不過實際由於無法向公司的專案一樣找廠商用儀器去掃,可能只能手動try 一個好一點的位置
- 馬達控制
- 根據目前輸入的控制資訊,搭配實際量測到的姿態做自我修正
- PID控制之前有看了一下,概念蠻簡單的不難實現
- output
- 4*PWM 控制四顆電子變速器
- 直接使用arduino的PWM 輸出
- https://www.arduino.cc/en/Reference/AnalogWrite
- 須注意output PWM使用的timer 不要跟input PPM 解析的timer衝到
考慮到成本與實際上飛行時的載重,應該會採用這台450來當作載具測試
用普通的2212馬達/電變加上紅白機架兩千塊即可打發,撞壞比較不傷荷包
使用gyro + g-sensor 達到姿態控制
這篇文章用來紀錄一下使用sensor取得物體姿態(yaw/row/pitch)的部分
- g-sensor
- 在物體靜止不動時,加速度只有固定的地心引力,故可透過此加速度在三軸上的分量來計算姿態
- 但在物體動作時,除了重力,物體本身改變姿態的加速度會混進去造成失真,以前做的的專題就是只使用g-sensor, 在快速動作時,可看到螢幕上顯示的動作與實際物體動作有一點點落差
- 以前做的專案,也有研究過android 內使用g-sensor 偵測螢幕旋轉的原理
- gyro
- 輸出單位時間內在某個軸上旋轉的角度(很精確)
- 時間長會有積分誤差
- 簡單的使用一軸來舉例
- 瞬間旋轉10度,此時由於精確度很高,可能量出來誤差只有0.001度,所以此時取得的姿態仍很正確
- 但隨著時間增加,物體一直動作,每次轉動的誤差會一直累加,造成一段時間後物體的角度跟程式內上看到的角度誤差會越來越大
- gyro+g-sensor
- 結合兩種sensor的優點,去算出一個接近真實姿態的輸出,既可精確表達姿態,又能避免誤差累積
- 卡爾曼濾波
- http://ddddiy.blogspot.tw/2014/02/blog-post.html
2016年8月7日 星期日
使用手機實做飛機黑盒子
這是2008年念研究所時跟同學寫的其中一個專題
當初會做這個專案,最主要目的是我為了想個好理由光明正大的來玩遙控飛機,不過做出來似乎效果不錯,出乎意料的在課程上拿了高分...
最近看到照片突然好懷念以前研究所的時光,寫出來紀念一下
整體主要分幾個部分
- 手機端(openmoko)
- 儲存GPS資料(經緯度與高度)
- 讀取g-sensor值
- 偵測碰撞後傳簡訊回報GPS坐標<==墜機時可以找到飛機
- 透過bluetooth(SPP)及時送出g-sensor的值 <==很炫,但距離短不實用
- NB端
- 透過bluetooth接收g-sensor 的值
- 即時計算姿態
- 使用opengl即時顯姿態
- offline
- 將手機儲存的GPS 紀錄使用google earth reply, 在PC上replay 整個飛行的軌跡
訂閱:
意見 (Atom)




