發表文章

Python 找質數 ( Python: Prime Numbers Finding )

圖片
維基百科上 質數 的定義為: 「指在大於1的自然數中,除了1和該數自身外,無法被其他自然數整除的數(也可定義為只有1與該數本身兩個因數的數)」 一個著名且有效率的方法: Sieve of Eratosthenes 用 Python 來實現 Sieve of Eratosthenes: 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

Python 排序演算法範例 ( Sorting Algorithms in Python )

圖片
前陣子看到真人上演 Sorting Algorithms 的影片: There are a tutorial video about sorting algorithms: 影片中介紹了Insertion Sort, Selection Sort, Merge Sort, Bubble Sort。筆者就用蟒蛇(Python)來示範這四個排序演算法吧! The video introduces four sorting algorithms: Insertion Sort, Selection Sort, Merge Sort, Bubble Sort. Let me show you how to implement these algorithms in Python. 插入排序 Insertion Sort: 選擇排序 Selection Sort: 合併排序 Merge Sort: 泡沫排序 Bubble Sort: 參考資料: [1] 插入排序 [2] 選擇排序 [3]  氣泡排序 [4]  合併排序 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

雷射切割四足機器人mePed v1.0

圖片
延續 【 3D 列印四足獸 Mini Quadruped 】一文, 此次到手的是雷射切割的四足機器人 mePed v1.0 , 與Arduino Nano的數位腳位接線為從右上開始 逆時針方向一圈 : 臀部的角度如下圖: 每一隻腳的角度如下:朝上為0度、朝下為180度。 首先用Android手機藍牙控制八個關節的程式( 程式下載處 ): 接著用官方給的  mePed Starter Program , 影片中的程式為筆者修改過的程式 。 筆者將 Alexey's Program 與  mePed v2 Start Program 合併後,做出如下影片的功能( 程式下載處 ): 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

Otto 組裝 ( Assemble Your Own Otto )

圖片
此次組裝的 Otto 機器人腳不一樣了,組裝完成後的圖如下: 有看出和 原版Otto 的差異嗎? 一、在組裝前,需要先檢查硬體是否有問題,準備好材料後,記得將四顆伺服馬達的槳給裝上去如下圖: 注意 Buzzer 有 + 號的那一頭為正極 二、根據官方的電路圖先將線路接好(依照下圖接線), 三、接著用官方提供的  Otto_avoid  程式來測試: 在上電後,先確定 Buzzer 有沒有聲音,再檢查四個伺服馬達有沒有動作,也要檢查伺服馬達是否有抖動的情況,接著用手擋住超音波看看 Buzzer 會不會發出聲音。 將四個伺服馬達給拆下, 拆的時候用雙指捏住黑色的地方比較不會讓線受損 ,如下圖: 身體的部分有 三角形 的地方為前方, 四、要先將身體裡的伺服馬達先裝上去,拿伺服馬達內的螺絲,一長與一短,先放置在伺服馬達上 將伺服馬達鎖在身體,伺服馬達的線先任意放 五、接著要來調整腳的伺服馬達的角度,目標如下圖: 可使用 Otto_avoid 程式來作調整,Otto_avoid 程式在 Buzzer 開始發出聲音前,會將四個伺服馬達調到 90 度, Buzzer 發出聲音後,所有伺服馬達就會開始動作,所以可以配合 Nano 上的重置按鈕來調整伺服馬達。 六、調整好馬達後,將腿裝上身體,注意 腳有兩個孔是朝身體前方 的 此時可鎖兩根 長螺絲 在腿上,記得不要鎖太深 七、將腳裝上,在鎖上螺絲之前,可觀察腿的孔是否有對槳,以利鎖螺絲 鎖好兩個螺絲後,會類似像下圖 八、頭的部分要先裝上超音波模組 將線調整好,且接到 Arduino Nano 控制板上,就可以把 Nano 控制板裝到頭上了 將頭蓋上身體,就完成組裝。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

3D 列印四足獸 Mini Quadruped

圖片
最近拿到 Mini Quadruped - optimized for 9G servos 這隻 3D 列印的四足獸,不過筆者的接線腳位如下圖: 與Arduino Nano的數位腳位接線為從右上開始 逆時針方向一圈 : 腳的伺服馬達角度如下圖: 臀部的伺服馬達角度如下圖: 一開始用原作者給的程式,發現伺服馬達的角度跟我手上的這一隻不一樣,修改程式讓牠可以動起來: 注:原作的程式很多在筆者手上的動作都不如預期的,於是不保留此版本的程式碼,筆者改用  QuadBot  的程式。 再來改了一個可以用Android手機藍牙控制八個關節的程式( 程式下載處 ): 使用 QuadBot  的程式來修改,目前成果如下影片( 程式下載處 ): 參考資料: [1]  Mini Quadruped - optimized for 9G servos [2]  QuadBot 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

NodeMcu 球形機器人試做 Part 1

圖片
在網路上看到此篇文章:【 以Arduino 打造球形機器人 】,雙手開始癢癢的,於是用了 Arduino Nano 照著文章做了一個版本,程式也重新寫過,完成的圖如下:   可以動耶,只不過和原作者內文一樣,看起來像紙箱,而且筆者還用了許多膠帶來固定壓克力球以防求爆開,接著筆者又用 NodeMcu 加上一個Servo Motor SG90 來做一個: 完了一下子後,想改幾個地方: 1. 換成直流馬達。 2. 電源開關。 3. 外型變成 3D建模的方式,就可以用 3D 列印出來。 待續~~~~ 參考資料: [1]  以Arduino 打造球形機器人 [2] NodeMCU/ESP8266 implement WebSocketsServer to control RGB LED 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

Data Structures in Python (Python 的資料結構)

圖片
在說明  Python 的資料結構前,先來了解什麼是資料結構,底下節錄維基百科上的解釋: 『 在電腦科學中, 資料結構 (英語:data structure)是電腦中儲存、組織 資料 的方式。 資料結構 意味著介面或封裝:一個 資料結構 可被視為兩個函式之間的介面,或者是由 資料 類型聯合組成的儲存內容的存取方法封裝。 大多數 資料結構 都由數列、記錄、可辨識聯合、參照等基本類型構成。』 舉例來說,生活上我們常常在 排隊 等結帳,先到的先結帳(先進先出),這個就是資料結構中的 佇列 。常見的資料結構可分為兩種:「線性(Linear)」與「非線性(Non-linear)」。線性資料結構有: 陣列(Array) 、 鏈結串列(Linked List) 、 堆疊(Stack) 、 佇列(Queue) 、 矩陣(Matrix) ;非線性資料結構有: 堆積(Heap) 、 二元樹(Binary Tree) 、 圖(Graph) 、 雜湊表(Hash Table) 。 而每種程式語言都有一些資料結構可以用,Python也不例外,從 Python的官方文件 可看到底下幾種: 1. Lists 下圖為 Lists 的示意圖     2. Tuples 與 Sequences 下圖為 Sequences 的示意圖 而 Tuples 就是可以含有很多的 Sequences,如下圖 3. Sets 下圖為 Sets 的示意圖,有交集、聯集、差集等關係。 4. Dictionaries 下圖為 Dictionareis 的示意圖:     能判斷什麼時候要用哪一種資料結構是程式設計時需要考慮的事情,考慮的觀點通常有: 效能。 彈性。 實作。 以上三點沒有絕對的順序,例如當需要先進先出的動作時,選用已有支援 Queue 的程式語言(如Java、C#等)就可以不自己重新打造 Queue 的程式庫了,若講究效能時,用C\C++語言會是選擇之一。 參考資料: [1]  https://www.tutorialspoint.com/python/python_data_structure.htm 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If ...