Paragraphs are comprised of sentences, but not random sentences. A paragraph is a group of sentences organized around a central topic.

codrone mini_Python_Junior part3(LED、清單、函式)

Python_Junior_3A_LED

Step 1:

什麼是LED?

LED是發光二極體(Light Emitting Dioded, LED)的簡稱。二極管是一種電子元件,它將只允許電流由單一方向流過。LED 漸漸開始取代傳統燈泡,因為它有較高的效能。

CoDrone Mini的主體上有 1 個 RGB LED。 RGB 分別代表紅色、綠色和藍色。僅使用這三種顏色,您其實幾乎可以創造出所有可以想像的顏色!除了讓您的無人機看起來很酷之外,LED 還提供了另一種形式的反饋。

LED 恆亮即表示無人機已連接,而 LED 閃爍則表示電量低或 CDM 與遙控器的沒連接。

 

Step 2:

LED_color

您可以使用的最基本 LED 函數為LED_color。 它將使用 RGB 色彩空間將CoDrone Mini 的 LED 設置為彩色空間。請別擔心——我們很快就會談到這一點。

以下是函數該長成的樣子:

LED_color(red, green, blue, brightness)

以下是每個參數的含義:

 

 

  • 紅、綠、藍:

LED 所產生的顏色是由紅、綠和藍的組合,簡稱為 RGB。 

所有這些值的範圍都從 0 到 255,對應於顏色的強度,其中 255 是最高的。
舉例來說,紅色的 RGB 值對應於 (255,0,0)。
那麼藍色和綠色的 RGB 值是多少呢? 紫色呢? 請使用像這樣的 RGB 顏色選擇工具(color picker)找出答案吧! 一旦您知道您想要的LED 顏色是什麼,您就可以在括號中的相應空格中輸入 RGB 值。

  • 亮度:LED 的亮度,1 表示關閉,100 表示最大亮度。 亮度值永遠不會為負!

 

Step 3:

編程恆光LED

請嘗試用這個程式來觀察穩恆亮的 LED。 我們對程式進行了編程以顯示紅色、綠色和藍色,但您也可以使用任何您喜歡的顏色。

import CoDrone_mini

import time



drone = CoDrone_mini.CoDrone()

drone.pair()



drone.LED_color(255, 0, 0, 100)   # Red     

time.sleep(1) 

drone.LED_color(0, 255, 0, 100). # Green

time.sleep(1)

drone.LED_color(0, 0, 255, 100). # Blue

time.sleep(1)

time.sleep()的作用是在進入下一行代碼前,將每個LED顯示1秒。
請更改 sleep() 參數,使每種顏色顯示的時間更長或更短。

 

Step 4:

LED_pattern()

如果您認為恆亮LED的功能過於基礎,沒關係我懂,接下來試點不一樣的。
圖案 LED 的功能可幫您將CoDrone Mini的LED設置為既有一種顏色又有三種圖案中。 以下為它該長成的樣子:

LED_pattern(red, green, blue, mode, speed)

以下是每個參數的含義:

  • 紅、綠、藍:它們跟恆亮LED的功能一樣,您可以在此處使用 RGB 色彩空間設置 LED 的顏色。
  • 模式:也稱為圖案(patterns)。 您有以下三種選擇:
    • BLINK :LED燈閃爍表示開和關 
    • DOUBLE BLINK LED :LED燈在關閉前閃爍兩次
    • PULSE :LED燈緩慢開和關
    • FADE_IN :將 LED 的亮度增加,由低到高
    • FADE_OUT” 將 LED 的亮度減弱,從高降低
  • 速度:這是 LED 圖案(patterns)的速度。 1 是最慢,而10 是最快。
    這個值將永遠不會是負數! 如果您把參數包含在內,您的程式將使用默認值,即 5。

 

Step 5:

對圖案化 LED 進行編程

請嘗試觀察不同的LED程式有什麼不一樣。 同樣的,我們都使用了紅、綠和藍,但您可以使用任何您喜歡的顏色!

import CoDrone_mini

from CoDrone_mini import Mode

import time



drone = CoDrone_mini.CoDrone()

drone.pair()



drone.LED_pattern(255, 0, 0, Mode.BLINK, 10)

time.sleep(1)

drone.LED_pattern(0, 255, 0, Mode.DOUBLE_BLINK, 10)

time.sleep(1)

drone.LED_pattern(0, 0, 255, Mode.PULSE, 10)

time.sleep(1)

drone.close()

 

Step 6:

其他LED功能

如果您已完成 設定LED或想要將其設置回預設值,以下有兩個功能:

  • turn_off_LED() :關閉 LED。 如果您想要隱蔽,這很適合您。
  • reset LED :將 LED 重置為其預設值,即恆亮紅色。

請試著在您其中一個程式末端使用它們!

 

Step 7:

增加飛行動作

為了將LED添加到飛行程式中,請將LED功能加入到您希望在程式中看到的位置。
唯一要注意的是如果您在起飛前設置 LED, 如果您有這樣做,您需要在起飛指令之前插入 time.sleep(1),這樣起飛指令才不會被省略。

import CoDrone_mini

import time


drone = CoDrone_mini.CoDrone()

drone.pair()


drone.LED_color(255, 0, 0, 100)

time.sleep(1)       # Add a time.sleep(1) before takeoff if you're planning to set the LED cover before takeoff, otherwise the takeoff might get missed

drone.takeoff()


drone.set_throttle(50)

drone.move(1)


drone.LED_color(0, 255, 0, 100)

drone.set_yaw(50)

drone.move(2)

drone.LED_color(0, 0, 255, 100)

drone.set_yaw(50)

drone.move(2)


drone.land()

drone.close()

 

Step 8:

挑戰

我看到彩虹

请用CoDrone Mini 在空中畫一道彩虹! 彩虹有 6 種顏色(如果算上靛藍,則為 7 種)。 以下有幾種方法可以畫一道彩虹:

  • 請繪製 6 或 7 個不同顏色的弧線
  • 請為每個部分繪製一個帶有顏色的長弧

 

Python_Junior_3B_Lists清單

Step 1:

什麼是清單?

在 Python 中,清單儲存和組織相同類型的數據,而您無需額外建立很多變數。
舉例來說,以下的清單可以代表您的類別(classes):

subjects = ['algebra', 'english',  'computer science', 'history', 'biology']

重要提示:這些清單是按照順序的。這意味著每個項目在清單中都有一個稱為索引(index)的位置,而它是一個整數,並指它在清單中從 0 開始的位置。清單中的第一個元素在索引 0 處,因為它距離開頭清單 0步。 別忘了,在任何涉及計數的情況下,您將從 0 開始。

擁有索引就像擁有您的所在地址的訊息。 您可以通過清單名稱及其索引訪問特定值:

listName[index]

因此,如果您想獲得以上的課程清單,它將會這樣顯示:

subjects[index]

 

Step 2:

彈出一個音符

為了解釋清單,我們將使用 CoDrone Mini 遙控器上的蜂鳴器!由於音符是由不同的部分組成的可稱為音階(scales),您之後將能夠聽到您的清單在運行。

您需要做的第一件事是彈奏一個音符。 請匯入 CoDrone Mini 資料庫和筆記庫,再建立無人機對象,然後配對 CoDrone Mini 。 接著,播放音符! 第一個參數是音符本身,第二個參數是它將播放的秒數。 我們在程式中會使用了中央C,但您可以使用任何您喜歡的音符。

請試試看這音符聽起來像什麼吧!

import CoDrone_mini

from CoDrone_mini import Note

drone = CoDrone_mini.CoDrone()

drone.pair()


drone.play_note(Note.C4, 0.5)

 

Step 3:

有頻率地彈奏音符

除非您非常了解音樂,否則您很有可能不確定您所需要使用的音符名稱。 相反的,您可以使用頻率! 在音樂和一般的聲音中,頻率是每秒脈衝或振動的數量,以赫茲為單位。 頻率越高,音調或聲音就越高。

要嘗試此操作,請使用您在上一步驟中建立的程式吧。 不過,請記得把 Note.C4 換成 261 再試試。 請問您得到同樣的東西嗎?

您的程式應該是這樣的:

import CoDrone_mini

from CoDrone_mini import Note

drone = CoDrone_mini.CoDrone()

drone.pair()


drone.play_note(261, 0.5) #261 Hz is Note.C4

使用像這樣的頻率表來查找更多音符的頻率,然後在您的程式中試驗它們!
溫馨警告,小數點在頻率參數中不起作用,因此您需要四捨五入到最接近的整數。

 

Step 4:

自制音樂

請使用音符或頻率創作您自己的歌曲吧! 為了給你的歌曲一些節奏,在音符或音符組之間,請使用 time.sleep() 函數。 請試用我們的程式,然後編寫您的程式!

import CoDrone_mini

from CoDrone_mini import Note

Import time

drone = CoDrone_mini.CoDrone()

drone.pair()


drone.play_note(Note.C4, 0.5)

drone.play_note(Note.D4, 0.5)

time.sleep(0.25)

drone.play_note(Note.E4, 0.5)

drone.play_note(Note.F4, 0.5)

time.sleep(0.5)

drone.play_note(Note.G4, 0.5)

 

Step 5:

製作清單

現在您已經用遙控器製作了一些音樂,讓我們繼續回到清單。

在音樂中,音階是由八個音符組成的一組,它們的音高(pitch)會增加或減少,它們通常以 C 音符開頭。 您將在此活動中做的是製作 C 大調音階的音符清單,然後使用該清單演奏特定的音符。

在匯入 CoDrone Mini 資料庫和筆記庫後,請建立無人機對象並與 CoDrone Mini 配對,再建立一個名為 notes 的清單。 接著,請為您的音階添加註釋。 您的音階可以從 C3、C4、C5、C6 或 C7 開始,然後一直往上或往下到下一個八度音階,或距離第一個音符 8 步之遠的音符。

notes = [Note.C3, Note.D3, Note.E3, Note.F3, Note.G3, Note.A3, Note.B3, Note.C4]

一旦您完成清單後,您可以練習彈奏清單中的特定音符。 以下是這行代碼的樣子:

drone.play_note(notes[0], 0.5) # change the index to change notes

請記住,計數從 0 開始,因此 notes[0] 將播放第一個音符,notes[1] 將播放第二個音符,依此類推。

以下是你的程式應該長成的樣子:

import CoDrone_mini

from CoDrone_mini import Note

drone = CoDrone_mini.CoDrone()

drone.pair()


notes = [Note.C3, Note.D3, Note.E3, Note.F3, Note.G3, Note.A3, Note.B3, Note.C4]


drone.play_note(notes[0], 0.5) # change the index to change notes

 

Step 6:

獲取清單的長度

清單可能很長,但有時您可能會忘記清單中有多少項! 為了幫助解決這個問題,您可以使用 len() 函數。 它將打印出清單中的項目數。

在上一個程式中的清單之後,請使用 print(len(notes) 來嘗試一下。請問您的清單中的項目數量是否正確?

您的程式應該是這樣的:

import CoDrone_mini

from CoDrone_mini import Note

drone = CoDrone_mini.CoDrone()

drone.pair()


notes = [Note.C3, Note.D3, Note.E3, Note.F3, Note.G3, Note.A3, Note.B3, Note.C4]


print(len(notes))

 

Step 7:

清單與迴圈

您可以使用迴圈將清單中的每個音符播放一次,持續 0.5 秒。 為此,請使用上一步驟中的代碼,但請取出打印(print)指令。

請使用 for 迴圈獲取音符清單的長度,然後每 0.5 秒播放一次。 由於 for 迴圈的範圍是清單的長度,因此每個音符只會播放一次。

您的程式應該是這樣的:

import CoDrone_mini

from CoDrone_mini import Note

drone = CoDrone_mini.CoDrone()

drone.pair()


notes = [Note.C3, Note.D3, Note.E3, Note.F3, Note.G3, Note.A3, Note.B3, Note.C4]


for i in range(len(notes)):

   drone.play_note(notes[i], 0.5)

 

Step 8:

附加清單

就像變數一樣,您的程式中可以有多個清單! 如果您有不同的數據類型或想要對您的項目進行分類,那麼這些非常有用。 對於此步驟,您可添加到另一個音符持續時間清單。

請使用上一步驟中的程式,然後請建立一個名為 duration 的清單。 此清單應與音符清單大小相同,因此包括八個音符持續時間。 雖然它們可以全都不同,也可以有些相同。 但別忘了這些持續時間以秒為單位。

接著,請插入一個 for 迴圈來播放音符和它們的持續時間,然後再執行您的程式以查看它的聲音! 您其實可以從清單中添加或減去項目。 只需確保證兩者中的物品數量相同即可。

您的程式應該是這樣的:

import CoDrone_mini

from CoDrone_mini import Note

drone = CoDrone_mini.CoDrone()

drone.pair()


notes = [Note.C3, Note.D3, Note.E3, Note.F3, Note.G3, Note.A3, Note.B3, Note.C4]

duration = [0.1, 0.1, 0.25, 0.25, 0.25, 0.1, 0.1, 0.5]


for i in range(len(notes)):

   drone.play_note(notes[i], duration[i])

 

Step 9:

挑戰

挑戰:譜出CoDrone樂章

現在您知道如何使用音符和持續時間清單,那我們來看看,您是否可以對無人機的遙控器進行編程以播放流行歌曲! 這可以是短的或長的古典交響曲。 如果您知道如何閱讀樂譜,您可以配合樂譜特性來譜曲,但也可以使用反覆聆聽來找出音符編排!

 

Python_Junior_3C_Functions函式

Step 1:

什麼是函數?

函數是一種通過將常用代碼行儲存到一個命名集中來節省時間和精力的方法。 舉例來說,【發訊息給朋友】,您可以編寫多行代碼來完成這件事情:

Take out phone

Unlock phone

Open messaging app

Have I texted this friend before?

If yes, go to last text message with friend

If no, compose new message and add friend’s name

Write text message

Hit send

或者您可以在每個新程式的開頭使用一個名為friend.text() 的函數!

 

Step 2:

定義和調用函數

步驟一:編寫自己的函數的是術語為def。 您正在告訴 Python 你在“定義一個函數”。

接著是您的函數名稱,緊接著括號和冒號。 您的函數名稱可以是多個單詞,但您需要在每個單詞之間添加一個下劃線。

在這一步驟中,您將建立您自己的函數,讓CoDrone Mini 呈正方形飛行!
您的函數名稱將如下所示:

def square():

請為函數體添加一個新的縮排進行,然後在下面編寫您的方形代碼。 如果您保存了它,您可以使用舊的方形程式之一!

為了執行您的函數,請在函數定義下方寫入函數名稱。 如果您不呼叫(call)這個函數,它就不會執行!

def square():

    drone.takeoff()

    for i in range(1):

        drone.set_yaw(0)

        drone.set_pitch(30)

        drone.move(1)

        drone.set_pitch(0)

        drone.set_yaw(20)

        drone.move(2)

    drone.land()

square()

請匯入 CoDrone Mini 資料庫和時間庫,再建立無人機對象並配對它。 接著,請嘗試執行您的代碼吧。看看究竟會發生什麼變化?

 

Step 3:

函數中的參數

每個函數後面都有括號,這就是參數的位置。 參數是函數需要使用的變數,但並不是所有的函數都有參數! 在之前的範例中,您可能已經註意到該函數有一組空括號。

請嘗試把功能視為大型工廠的流程部分。某些流程可以按原樣運行。 但是,有些流程需要更多訊息才能運行,例如一個會以姓名親自問候您的程式!

對於此活動,請返回到您剛剛製作的方形程式並在括號中添加兩個參數:功率和持續時間。

def square(power, duration)

然後您可以更改程式中的一些參數:

def square(power, duration):

    drone.takeoff()

    for i in range(1):

        drone.set_yaw(0)

        drone.set_pitch(power)

        drone.move(duration)

        drone.set_pitch(0)

        drone.set_yaw(20)

        drone.move(2)

    drone.land()

square()

當函數被呼叫(call)時,功率和時間將被設置。舉例來說,如果您希望將功率設置為 30,並且每個指令的時間設置為 1 秒,那麼您可以在主程式中調用您的函數,如下所示:

square(30, 1)

請嘗試執行您的程式吧。 您是否注意到在沒有參數時的函數中有什麼不同呢?

 

Step 4:

返回函數

返回函數與您剛剛看到的函數略有不同。 返回函數返回一個值或一組值。 返回的值稱為返回值。 很有創意吧,我們知道。

返回函數的一個真實例子為計算器。 您輸入一個方程式,一旦您點擊等號,計算器就會返回一個答案! 在本活動中, CoDrone Mini 將模擬計算器。在返回函數中將兩個數字相加後,它會根據答案的值上下調節。

在匯入 CoDrone Mini 資料庫和時間庫及建立無人機對象並配對它後,請定義一個名為 add 的函數,帶有 x 和 y的參數。 在下面,有函數返回 x+y。

import CoDrone_mini

import time

drone = CoDrone_mini.CoDrone()

drone.pair()


def add(x,y):

    return x+y

請建立一個名為 answer 的變數,它用於儲存返回函數。接著,請包括一個打印(ptint)指令,該指令將與答案一起顯示“The answer is”。

answer = add(2, 3)

print(“The answer is “, answer)

請編程無人機起飛,然後建立一個以 answer 作為參數的 for 迴圈。在迴圈中,讓無人機以 30% 的功率油門加速半秒,然後以相同的時間和功率降低油門。最後,再讓無人機降落。

answer = add(2, 3)

print(“The answer is “, answer)

 

Step 5:

最終編碼

您的程式應該是這樣的:

import CoDrone_mini

import time

drone = CoDrone_mini.CoDrone()

drone.pair()


def add(x,y):

    return x+y


answer = add(2, 3)

print(“The answer is “, answer)

drone.takeoff()

for i in range(answer):

    drone.set_throttle(30)

    drone.move(0.5)

    drone.set_throttle(-30)

    drone.move(0.5)

drone.land()

請用不同的數字試試吧!請問當您的無人機達到較大的數字時會發生什麼事?

 

Step 6:

使用用戶輸入返回函數

在這一步驟中,您將通過讓用戶輸入把數字相加起來,以進一步模擬計算器!

請保持程式的第一部分相同:

import CoDrone_mini

import time

drone = CoDrone_mini.CoDrone()

drone.pair()


def add(x,y):

  return x+y

請設置一個 while 迴圈,以便 while 為真,這樣程式才會執行。 在迴圈內,請建立一個名為 num1 的變數並將其值設置為 input()。 在輸入參數中,寫上“Input first number (or q to quit):”。接著,請編寫一個 if 敘述式,以便如果輸入“q”,程式將退出迴圈。請建立另一個名為 num2 的變數並將其值設置為 input()。 請在參數中寫入“Input second number:”

while True:

    num1 = input("Input first number (or q to quit): ")

    if num1 == "q":

        break

    num2 = input("Input second number: ")

在 while 迴圈中,請建立一個名為 answer 的變數,該變數將使用 add(x,y) 函數返回 num1 和 num2 的總和。 接著,請把打印(print)指令將打印答案包括在內。

answer = add(int(num1), int(num2))

    print("The answer is ", answer)

您其餘的程式部分將是相同的!

drone.takeoff()

    for i in range(answer):

        drone.set_throttle(30)

        drone.move(0.5)

        drone.set_throttle(-30)

        drone.move(0.5)

    drone.land()

 

Step 7:

最終代碼

您的最終程式應如下所示:

import CoDrone_mini

import time

drone = CoDrone_mini.CoDrone()

drone.pair()


def add(x,y):

    return x+y


while True:

    num1 = input("Input first number (or q to quit): ")

    if num1 == "q":

        break

    num2 = input("Input second number: ")

 
    answer = add(int(num1), int(num2))

    print("The answer is ", answer)

    drone.takeoff()

    for i in range(answer):

        drone.set_throttle(30)

        drone.move(0.5)

        drone.set_throttle(-30)

        drone.move(0.5)

    drone.land()

 

Step 8:

挑戰

挑戰:請原諒我親愛的莎莉阿姨 (運算次序)

現在您已經知道如何使用加法,那請嘗試製作減法、乘法和除法的函數吧!
一旦您搞清楚後,請嘗試添加圓括號和方括號,來觀察CoDrone Mini 是否可以使用運算順序來求解方程。

提示:

  • 減法符號:- 
  • 乘法符號:* 
  • 除法符號:/ 
  • 指數符號:^