發表文章

目前顯示的是 6月, 2018的文章

Arduino 自走車 & 機械手臂

微算機實驗課程期末專題有些人接線做 8051 喇叭,但因為器材不太夠,就有幾個人可以玩 Arduino 自走車,剛好 MOLi 實驗室有舉辦 機械手臂相關活動 也是使用 Arduino 去弄,就順便將這兩樣東西兜起來當作期末報告。 使用器材 Arduino UNO Arduino Sensor Shield V5.0 感測器擴展板 自走車相關零組件 PS2 副廠搖桿 組裝教學 自走車 基本上可以參考 這篇 ,其中我拿到的零件比較不同的是馬達驅動模組,但一樣接上 IN1~IN4 當作訊號即可,因為另一邊有通電了。聽同學說有個跳線的地方,蓋子拔掉就不會通電了,這樣就得自己接電接地。對於擴充版不熟悉的話可以參考 這篇 。 搖桿 網路上很多接線圖,大部分都一樣, 這邊 就貼個我看的順眼的。 遇到的坑 馬達 一開始測試馬達,code 寫進去要他怎麼轉就怎麼轉,可是之後重接重寫就發現不會動了。先檢查程式,發現是忘了在最前面寫上 pinMode 指定 OUTPUT。後來還是不會動,從馬達開始接電測試,不管正轉逆轉都沒問題,再來是馬達驅動模組,螺絲重新鎖、接電測試也都沒問題,那該不會是我的腦袋有問題吧!?最後終於發現是杜邦線太鬆、或是模組的針腳太細,總之就是接觸不良,因為這批線是當天助教拿新的給我,沒想到就有這個問題。後來詢問老師,說可能是針腳太短,且杜邦線價格差異很大,品質可能也有差。 PS2 搖桿 沒想到這搖桿也能拿來接 Arduino,上網找來找去好像就 PS2X 這個 Library 最好用,基本上就是範例 code 貼上去就要會動,可是我怎麼測試就是不會動,弄了約 3.4 小時聽到同學早就成功了,跟他借線測試後才知道可能有些訊號線斷掉了,之前還有請老師幫忙找問題,可惜沒找到,老師表示原來杜邦線品質這麼差。之後弄弄手臂再回來弄搖桿發現又不會動了。。。換線過後又正常,Arduino 這東西怎麼那麼難搞阿,光是接線測試就花了 8 小時,雖然很倒楣線材總是出包,但也只能怪自己沒玩過多少硬體,對於 debug 不熟悉。 IDE 問題 在 Mac 上如果輸入法是在內建的注音模式,複製貼上或是快捷鍵註解等操錯可能會有問題,建議切換到英文模式操作。 如果 Arduino 同時接電又接 USB,傳輸時可能會出

半年後從 Ubuntu 再轉回 Windows

去年 12 月因為一場講座,講師 Tim Hsu 說想要學好 Linux 就轉到 Linux 系統去每天使用,剛好我也想再次試看看 Ubuntu,距離上次以 Ubuntu 當作主系統大概是兩三年前了吧,因為買了 Macbook air 之後就越來越習慣 Unix-like 環境。持續約半年,我又跳回到 Windows 了,這是為甚麼呢? Ubuntu 優點 Linux 環境對於開發者友善 (指令、套件) 不太會中毒 (測試軟體或是網站時不太需要擔心) Docker 原生支援 很多工具都很強大,介面當然另當別論 缺點 輸入法 (嘗試過新酷音、Rime,選字都沒有到很滿意) 文書處理軟體都會跑版 (就算是開源文件在 LibreOffice 顯示有時也會有問題) 支援遊戲少 支援軟體少 (Line,Jandi) 套件有時衝突 轉捩點 其實上述缺點都還好,習慣就好,最主要的轉捩點應該就是手癢搶在第一波 Bionic 釋出後馬上升級,Ubuntu 一直以來對於跨版本升級都很容易出問題。升級後首先當然是開不了機,修了幾小時後發現是顯卡問題,將套件衝突處理完後重裝驅動即可正常開機。 16.04 升級到 18.04 後是一連串的問題,程式執行到一半容易異常終止,圖形化介面經常無回應後自動重啟,開機常常要開好幾分鐘,音訊時常有雜音或是沒聲音,得重啟系統,重啟 ALSA 沒用。。。基於這些原因就又跳回 Windows 了,黑蘋果畢竟驅動與升級問題也不少也就不考慮。 Windows 當初 2015 年首天升級 Win10 時我就更新了,還記得那天是 7/29,升級完一切順利安好,就這樣過去了一年多,有時桌面會死當,也遇過幾次內建的解壓縮程式解壓不完全,後來下載 7zip 解決,Defender 好像也有點問題,記不太得了,總之後來又灌回 win7,相信大家應該都明白 win10 剛出來沒有到太穩定,強制更新更是很惱人。在我使用 Ubuntu 這段時間偶爾也會開 Win7 打打遊戲,不曉得為甚麼 Ubuntu 顯卡驅動就是沒有黑蘋果的 WebDrive 驅動好,打 CSGO 黑蘋果底下比 Ubuntu 順暢呢! 優點 軟體支援多安裝方便 有世界最強 IDE 打遊戲方便 缺點 沒有 Unix Command 沒有 Unix Command 沒有 Unix Command 字體預設新細明體 B

SQL COUNT 裡面加入 WHERE 過濾

最近在開發 Laravel 專案需要做些統計,eloquent 不太熟悉且效率很差,因此講求效率的查詢仍使用 Raw SQL 前情提要 需要過濾出所有使用者的答對數量、答題總數 期待輸出: UserID CORRECT TOTAL 1 27 45 2 18 61 嘗試過的方式 (SELECT BH.UserID as UID, COUNT(AH.choice = Q.ans) AS correct FROM ans_histories AH, battle_histories BH, questions Q WHERE BH.BHID = AH.battleID AND AH.questionID = Q.QID AND AH.choice = Q.ans GROUP BY BH.UserID) UNION (SELECT BH.UserID, COUNT(*) FROM ans_histories AH, battle_histories BH, questions Q WHERE BH.BHID = AH.battleID AND AH.questionID = Q.QID AND AH.choice IS NOT NULL GROUP BY BH.UserID) 行不通原因:下面那個會被當作獨立的,不會以相同 UserID 跟上面的敘述結合 UserID CORRECT 1 27 2 18 1 45 2 61 解法 SELECT UserID, COUNT(CASE AH.choice WHEN Q.ans THEN 1 ELSE NULL END) AS correct, COUNT(*) FROM ans_histories AH, battle_histories BH, questions Q WHERE BH.BHID = AH.battleID AND AH.questionID = Q.QID AND AH.choice IS NOT NULL GROUP BY BH.UserID; 其中 COUNT(CASE AH.choice WHEN Q.ans THEN 1 ELSE NULL END) 可以替換成 SUM(CASE AH.choice WHEN Q.