Python 繪製三角函數圖形

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

問題:「如何使用Python來繪製三角函數圖形呢?」

OK,在繪製圖形前,先來了解 Python 的數學程式庫(Mathematical functions)有哪些,從3.6.2的文件可看到如下:
math.cos(x)
Return the cosine of x radians.
math.sin(x)
Return the sine of x radians.
math.tan(x)
Return the tangent of x radians.

所以可以用這三個數學函數來繪製。但是Python有比上面函式還好用的程式庫,叫做NumPy。使用NumPy可以快速產生繪圖資料。接下來要處理繪圖的功能,在 Python 的程式庫中,有Matplotlib可用,就用此程式庫來繪圖囉。

範例程式:



輸出圖:

mBlock Scratch Extension for Otto Robot

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

Hello everyone, the mBlock extension for otto robot is introduced in this article.
大家好,本文會介紹 mBlock 的 otto 擴展積木。(Download: Otto )


Manage Extensions in mBlock, select Otto Extension.
在mBlock 的擴展管理器選擇 Otto。

The bluetooth code https://github.com/OttoDIY/PLUS/tree/master/Bluetooth%20codes/OTTO_BT is used in this extension.
要使用此擴展,須將Otto的程式更新為官方的 OTTO_BT 程式。

After uploading OTTO_BT code to otto, it can be interacted with this mBlock extension(in Scratch mode).
將 OTTO_BT 程式上傳到 OTTO 控制板上,就可以使用此擴展與mBlock互動。

The extension blocks:

Demo Video:

"What is Otto ? Otto is an interactive robot that anyone can make!"
Otto是什麼?Otto是自己可以製作的互動機器人!

For more information, please go to http://otto.strikingly.com/ .
詳細介紹請至官網 http://otto.strikingly.com/

PHP 教師研習筆記

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

上周三至周五(7/19~7/21)參加由雲林縣縣網所舉辦的教師研習:「 PHP 程式設計」。講師的教學網頁為:http://163.27.230.30/~kwc/PHP_MySQL/

講師的授課大綱如下:
Day 1
工欲善其事,必先利其器。先從如何建立好開發環境講起,講師特別推薦Visual Stduio Code來開發PHP程式,並搭配XAMPP來安裝WebServer、DB與PHP環境。接著講解PHP程式語言的基礎語法。

Day 2
  • PHP進階程式設計
  • MySQL資料庫
  • Adminer
  • phpMyAdmin
  • 資料庫新增、查詢、修改、刪除(Create, Read, Update, Delete)
  • PHP與MySQL資料庫
延續前一天的PHP語法講解,主要集中在PHP的類別與方法部分,接著說明如何使用PHP做檔案的上傳,再來就是MySQL資料庫的使用與CRUD的SQL語法。

註:在檔案上傳的部分,有同學遇到底下的問題:
Notice: Undefined variable...
原因是因為 enctype="multipart/form-data" 打成 enctype="multipart/form-daya"或是檔案的變數名稱不相同。

Day 3
  • BootStrap
  • git版本控制
  • 隨筆系統
介紹BootStrap,並使用BootStrap建立一個隨筆系統的首頁,搭配git版本控制來做程式碼的版本管理,最後以一個隨筆系統作為練習。

筆者最後一天的成果截圖:

mBlock Extension for Arduino Esplora mBlock的Esplora擴展

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

此擴展為筆者所製作的,可在 mBlock 的擴展管理器下載:

也可至 mBlock 的官網下載:http://www.mblock.cc/extensions/

在 Scratch 模式中,有幾個感測器需要在積木程式中做轉換(這是因為從積木程式得到的數值是未經過轉換的Raw Data),需要做轉換的有

  • 三軸加速計的X、Y、Z軸。
  • 溫度感測器。
  • 搖桿的X、Y軸。


而在 Arduino 模式中,就不用做這些轉換的,因為 Arduino IDE 的內建 Esplora Library 已有做轉換了。

mBlock範例程式下載:
Scratch Mode Example: ScratchMode
Arduino Mode Example: ArduinoMode

參考資料:
[1] http://www.mblock.cc/docs/create-extensions-for-mblock/
[2] 如何使用 mBlock 與 Arduino Esplora 互動

如何使用 mBlock 與 Arduino Esplora 互動

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

一、前言

在筆者文章一文:在 S4A 軟體上玩 Arduino Esplora有試過一些S4A的軟體,當初不知道怎麼用 mBlock 來與 Arduino Esplora 完整互動,就在最近在網路上找到了一些資訊,製作出可在 mBlock 的積木指令。

二、相關知識

因為 Esplora 上有多種感測器與硬體裝置(見下圖,圖取自Arduino官網)

於是 Esplora 在硬體設計上使用多工器(型號為74HC4067DB)來處理,所以只要能對這個多工器做高低電位的訊號輸入,就能得到對應感測器的數值(見下圖),例如要得到A-TEMP溫度的數值,就要對多工器輸入0110 (低高高低)的電位訊號,再從A4類比腳位讀取數值。


所幸在 Scratch 中,可以利用腳位 18 到腳位 21 分別來控制類比腳位A0到A3,那麼在mBlock中讀取Esplora上的溫度之積木程式要怎麼做呢?下圖為參考做法。

上圖中溫度的轉換公式適從Arduino IDE 中 Esplora程式庫查來的,轉換的結果單位為攝氏。

三、mBlock 積木程式

根據以上資訊我們就可以製作出給 mBlock 使用的積木程式指令了。

在使用之前,記得將控制板選 Arduino Leonardo,並且更新 Esplora 板子的韌體為 mBlock 所使用的版本。



參考資料:

Python 金字塔圖案 ( Pyramid Pattern in Python )

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

如何用 Python 畫出金字塔圖案呢?下圖是金字塔圖案之一

此圖形已有人寫出很棒的教學了 ==> Java For 迴圈範例。於是筆者打算將問題一般化,先看底下的圖形:
要怎麼用Python來畫出上面的菱形呢?學過直角坐標嗎?直角坐標系統又稱作笛卡兒坐標系統,此系統可以用來解決這些有規則的圖形,見下圖的提示。


於是我們可以寫個 Python 一次劃出上圖三種菱形的程式碼:

那讀者您知道怎麼畫出三角形了嗎?

自製Arduino藍牙遙控器 ( Arduino Project: Build a Customized Bluetooth Controller )

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

一、前言 (Preface)
在製作 Arduino 藍牙遙控器之前,我們先來了解藍牙的使用方式,以手機連接HC-06藍牙模組流程約有底下幾個步驟:
Before building a customized bluetooth controller, there are several steps we need to know about using bluetooth communication. For example, the following steps are for connecting HC-06 with a smart phone:
  1. 開啟手機藍牙。 (Turn on bluetooth on a smart phone)
  2. 尋找 HC-06 藍牙模組。(Scan for the nearby bluetooth devices)
  3. 與 HC-06 藍牙模組配對。(Paire HC-06 with the smart phone)
  4. 開啟手機藍牙App。(Open a BT application on the smart phone)
  5. 使用手機藍牙App與 HC-06 藍牙模組連線。(Use the BT application to connect with HC-06)
此外在上述流程中,手機藍牙是當主控端 (Master),HC-06藍牙模組當從端 (Slave)。而我們需要將以上的流程先建立好在主控端藍牙模組 HC-05內,讓可以當主控端的 HC-05 藍牙模組在上電後就可以自動連線到 HC-06 從端藍牙模組。本文會以 Arduino Nano 藍牙小夜燈 當 Slave 端 (HC-06)與 Arduino UNO 版的雙軸按鍵搖桿當 Master 端(HC-05)。
The role of smart phone is bluetooth master. The role of HC-06 is bluetooth slave. HC-05(master) have to store the bluetooth master configuration in itself. After saving the bluetooth master configuration in HC-05(master), it will connect to HC-06(slave) automatically.
For more details, go to "Connecting 2 Arduinos by Bluetooth using a HC-05 and a HC-06: Pair, Bind, and Link".

此外主控端與從端的速度(baudrate)要一樣,密碼(password)也要一樣。此文所用的 baudrate為 9600,password為 1234。
The baudrate and password must be the same in BT master/slave. In this tutorial, the baudrate is 9600 and the password is 1234.

二、硬體材料(Materials)
  1. Arduino Nano 板子 x 1
  2. Arduino UNO 板子 x 1
  3. Arduino Sensor Shield V5.0 感測器擴展板 x 1
  4. NFU Dream Maker 所設計的 PCB from NUF Dream Maker x 1
  5. RGB LED x 3
  6. 電阻 Resistor 220 ohm x 3
  7. HC-05 藍牙模組 x 1
  8. HC-06 藍牙模組 x 1
  9. 雙軸按鍵搖桿 Joystick  x 1
  10. 母隊母杜邦線 Female to Female Jumper x 8
設定藍牙模組的電路與AT指令請參考 HC-05與HC-06藍牙模組補充說明(二):連接電路
與 HC-05與HC-06藍牙模組補充說明(三):使用Arduino設定AT命令 兩篇文章。
三、藍牙模組的設定(Bluetooth Module Configuration)
HC-06的設定值 (For HC-06)
所需的指令如下(The AT Commands List):
  • AT
  • AT+PIN1234
  • AT+NAMEyour_name
  • AT+BAUD4
成功的結果會類似下圖(The below picture is the successful result)
紅色 1 OK 是 AT 檢查裝置指令回傳結果。(RED 1 OK is the return value of the AT command.)
藍色 2 OKsetPIN 是 AT+PIN1234 設定密碼指令回傳結果。(Blue 2 OKsetPIN is the return value of the AT+PIN1234 command.)
綠色 3 OKsetname 是 AT+NAMEPingLun 設定藍芽名稱指令回傳結果。(Green 3 OKsetname is the return value of the AT+NAMEPingLun command.)
紫色 4 OK9600 是 AT+BAUD4 設定傳輸速度指令回傳結果。(Purple 4 OK9600 is the return value of the AT+BAUD4 command.)

接著可用 Bluetooth Scanner 來找出 HC-06 模組的位址(Address)。
Use Bluetooth Scanner to figure out the MAC address of HC-06.

注:上圖中的位址需轉為 98D3,31,FB5396  的格式,才能給 AT 指令用,此部分可的說明請參考 藍牙模組補充說明(四):無線連結兩個Arduino控制板一文中的藍芽裝置位址一節。
PS: the MAC address must be the 98D3,31,FB5396 for AT command.

HC-05的設定值(For HC-05)
要用AT指令讓HC-05主控端連上HC-06從端時,需將HC-05切換到指令模式,這需要在上電前壓住按鈕(如下圖用夾子夾住),注意 HC-05在 指令模式下的速度為 38400
Hold the reset button on the HC-05 before power on. This will enable HC-05 in command mode. A plastic peg could hold the reset button for you.

所需的指令如下:(The AT Command List)
  • AT+RMAAD 清除已配對的藍牙模組 (Clear the paired BT devices)
  • AT+ROLE=1 設定為 Master (Set the role to Master)
  • AT+BIND=98D3,31,FB5396 (Binding with the MAC address: 98D3,31,FB5396)
有回應OK才算成功。下圖的 ERROR 就是沒成功的例子,此時再下指令直到出現 OK。
Execute every command until it succeeds, got a OK response. The ERROR:(0) response say: "the command need to execute again".

藍牙模組互聯連線成功影片(注意燈號閃爍的速度):
The successful connection video(notice the onboard LED blinking speed)

尚未連線前:HC-06 與 HC-05 的指示燈會快速閃爍。
Before connection: the HC-06 and HC-05 onboard LED blink fast.
連線成功後:HC-06 的指示燈會恆亮;HC-05 的指示燈每兩秒快速閃爍兩次。
After connection: the HC-06 onboard will turn on, not blinking; the HC-05 will blink twice every two seconds.

If you have any problem to pair HC-05 with HC-06, please refer to this tutorial: "How to Configure HC-05 Bluetooth Module As Master and Slave Via AT Command".

四、HC-06 從端藍牙小夜燈程式 (The Code for HC-06 and Nano)
此部分的程式和 Arduino Nano 藍牙小夜燈相同。The code for Arduino Nano with HC-06 is the same with Control a Lamp from Android Phone.

五、HC-05 主控端藍牙搖桿程式(The Code for HC-05 and UNO)
搖桿的控制方式如下圖,箭頭的方向代表增加該顏色的亮度,例如紅線為X軸方向,向右會增加紅色燈的亮度,向左會減少紅色燈的亮度。黑色線為控制三種顏色的亮度。
This diagram shows the mechanism of LED lightness. For example, the red line means the RED lightness will increase from left to right(X Coordinate); the blue line mean the BLUE lightness will increase from top to bottom(Y Coordinate).


將HC-06藍牙小夜燈 與 HC-05藍牙搖桿兩程式分別燒錄好後,就可以用搖桿來控制小夜燈了。
After uploading the Nano(HC-06) and UNO(HC-05), the bluetooth lamp could be controlled remotely by a bluetooth joystick.


參考資料:
[1] HC-05與HC-06藍牙模組補充說明(一)
[2] HC-05與HC-06藍牙模組補充說明(二):連接電路
[3] HC-05與HC-06藍牙模組補充說明(三):使用Arduino設定AT命令
[4] 藍牙模組補充說明(四):無線連結兩個Arduino控制板
[5] Connecting 2 Arduinos by Bluetooth using a HC-05 and a HC-06: Pair, Bind, and Link

與 Python 開發環境 anaconda 的初步接觸

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

最近在【Python初學特訓班】一書看到此軟體套件的介紹:
  • 完全開源與免費。
  • 支援Linux、Mac、Windows系統。
  • 可自由切換Python 2.x 與 Python 3.x。
  • 等....
看到這三點,筆者就下載來用用看。anaconda下載處:https://www.continuum.io/downloads
安裝完後(安裝部分可參考:建立用於科學計算的Python開發環境
),可在程式集看到下圖,

Anaconda Cloud
開啟後會連上Anaconda Cloud官網,此雲端服務需要註冊帳號才能使用,分為兩種方案:須付費的Private 與 免費的Public。

Anaconda Navigator

GUI的方式來導覽 Python 應用程式與套件。

Anaconda Prompt

Anaconda的命令列視窗,可用來下 anaconda 套件指令,上圖的 conda list 為顯示目前已安裝的套件之指令。

IPython

Python 互動式視窗,可直接輸入 Python 的程式碼,按下 Enter 鍵後立即顯示結果。

Jupyter Notebook

為 IPython 的網頁擴充套件,可在 Browser 上執行 Python 程式。

Jupyter QTConsole

與 Anaconda Prompt 類似,此版本用Qt視窗程式開發出來的。

Spyder

這個就是 anaconda 所提供的整合開發環境(IDE)!!!Spyder整合了底下功能:

  • 變數總覽。
  • 檔案總覽。
  • 簡易智慧輸入。
  • 程式除錯工具。