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 part4(隨機、計時器)

Python_Junior_4A_Random隨機

Step 1:

隨機函數

在 CoDrone Mini 的程式中使用返回函數的方法之一是隨機數。這幾乎就是它聽起來的樣子:在匯入隨機庫之後,您可以建立一個將儲存隨機數的變數。以下是它會長成的樣子:

random_number = randint(1, 10)

在這種情況下,變數將稱為 random_number 並且它們將在程式稍後呼叫(call)或使用 1 到 10 之間的數字。

from random import randint

random_number = randint(1, 10)

print(random_number)

請您嘗試看吧! 請使在隨機庫中打印出一個從 1 到 10 的隨機整數。當您看到後,請調整括號內的範圍以獲得不同的隨機數。

 

Step 2:

隨機LED

能讓 CoDrone Mini 查看返回值的方法之一是通過其 LED 和數字隨機化。

LED 課程的快速回顧:LED 可產生紅、綠和藍組合的顏色。

所有這些值的範圍都從 0 到 255,對應於顏色的強度,其中 255 是最高的。

對於該程式,請匯入 CoDrone Mini資料庫、時間庫和隨機庫,然後再建立無人機對象並與 CoDrone Mini 配對。 接著,請建立一個將運行 3 次的迴圈。

在迴圈中,請建立變數,當獲取 0 到 255 之間的隨機數時,會呈現紅、藍和綠。這三個數字組合在一起可改變 LED 的顏色。舉例來說,如果您的程式返回 RGB 值 13,246 和 197,則CoDrone Mini的LED會變成淺綠色。

接著,請讓CoDrone 起飛,再稍等片刻,然後請返回亮度為 100 的紅、綠和藍的隨機數。這應該會改變無人機 LED 的顏色。 之後,請讓無人機降落。

請試試這個程式吧,一旦您看到變化,您就可以在起飛和降落之間添加更多的飛行動作!

import CoDrone_mini

import time

from random import randint


drone = CoDrone_mini.CoDrone()

drone.pair()


for i in range(3):

    red = randint(0,255)

    blue = randint(0,255)

    green = randint(0,255)


    drone.takeoff()

    time.sleep(0.05)

    drone.LED_color(red,blue,green, 100)

    drone.land()

 

Step 3:

猜數程式

您知道那個“我在想一個數字……”為開頭的遊戲嗎?您必須猜測這個人在想哪個數字的遊戲。你之後將會與無人機玩這個遊戲!

在匯入資料庫(CoDrone、方向、時間和隨機)後,請建立無人機對象並配對後,讓您的無人機起飛。 接著,請建立一個名為 throttle 的變數並將其值設置為 20。

請建立一個名為 number 的變數,它將儲存並返回 1 到 10 之間的數字。
接著,請建立一個 while 迴圈。

請建立一個名為 guess 的變數,它會提示用戶輸入 1 到 10 之間的數字,然後儲存該值。

在 while 迴圈中,請設置條件。

如果他們的猜測太低,無人機會減速。

如果他們的猜測太高,無人機會加速。

如果他們的猜測是正確的,無人機會做一個翻轉。

該程式還會包括一個打印(print)statement,用於當用戶猜測一個不在 1-10 之間的數字時,如果他們想退出程式,則可中斷遊戲。

最後,無人機會降落。

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

import CoDrone_mini

from CoDrone_mini import Direction

import time

from random import randint


drone = CoDrone_mini.CoDrone()

drone.pair()

drone.takeoff()


throttle = 20

number = randint(1, 10)  # randomly choose a number between 1-10


while True:

    guess = int(input("Guess a number from 1 - 10... or enter 0 to quit: "))  # get input from user

    if guess == 0:

        break

    elif guess > 10 or guess < 0:

        print("Number is not between 1-10. Try again.")

    elif guess == number:

        print("Perfect!")

        time.sleep(0.05)

        drone.flip(Direction.FORWARD)

        break

    elif guess < number:

        print("Too low!")

        drone.set_throttle(-throttle)

        drone.move(1)

    elif guess > number:

        print("Too High!")

        drone.set_throttle(throttle)

        drone.move(1)

drone.land()

 

Step 4:

挑戰

挑戰:神奇8號球

如果您不完全確定什麼是神奇8號球,它是一個當您問是或否問題時,可以預測您未來的玩具。回應可以是正面的、負面的或不確定的。

請將 CDM 變成神奇8號球! 請為以下每個問題想出 4 個答案:是的答案,也許是答案,或者沒有答案。然後請使用 input() 函數向用戶提問。程式將隨機選擇其中一個答案,並將 LED 變為綠、黃或紅,並伴隨飛行動作。

 

Python_Junior_4B_Timers計時器

Step 1:

計時器是如何運作的?

計時器無處不在,因此它們可能看起來沒什麼大不了的。但是,能在您的程式中使用的計時器,是一項非常有用且強大的技能!這可以幫助您更好地追蹤您的無人機及其中的運作。

在使用 CoDrone Mini,時間將儲存在變數中。 在本課程中,您將會把開始時間儲存在一個變數中,結束時間儲存在另一個變數中,然後將兩者相減以獲得總經過時間。

 

Step 2:

總飛行計時器

對於此項活動,您將編程一個計時器來觀察您的 CoDrone Mini 的總飛行時間,從起飛開始到降落結束。

在匯入 CoDrone Mini 和時間庫後,請建立無人機對象並配對,再建立一個變數來儲存無人機的開始時間(我們稱為 start_time)。請讓你的無人機起飛和降落,然後建立另一個變數來儲存無人機的結束時間(我們稱之為 end_time)。

為了要獲得無人機飛行的總時間,請建立一個變數,從 end_time 中減去 start_time。我們稱之為持續時間 (elapsed_time)。最後,請使用打印(print)指令讓您的程式以秒為單位打印(print)經過的時間。

一旦您試過了,請在您的程式中添加懸停和一些飛行動作。 請問你有注意到那些變化嗎?

你的編碼應該是這樣的:

import CoDrone_mini

import time


drone = CoDrone_mini.CoDrone()

drone.pair()

start_time = time.time()

drone.takeoff()

drone.land()

end_time = time.time()


elapsed_time = end_time - start_time

 

Step 3:

移動計時器

如果您想檢查你在程序中的一個部分花了多長時間,舉個例來說,就像無人機在一個正方形內飛行需要多長時間,或者向前俯仰 2 秒實際上需要 2 秒。這裏有一種方法可以做到這一點,它只需要在您的程式中移動一些計時器!

在匯入CoDrone Mini資料庫和時間庫後,請建立無人機對象並配對,再讓您的無人機起飛,然後將俯仰設置為 40。

接著,請建立一個變數來儲存無人機的啟動時間,然後請讓無人機移動 2 秒。

在這個位置啟動計時器非常重要!

在設置音高之前啟動它會增加額外的時間,而在無人機移動之後啟動它會跳過你想要計時的時間。

在無人機的移動指令之後,請建立另一個變數來儲存無人機的結束時間,然後讓無人機降落。

請建立另一個變數,從 end_time 中減去 start_time,並使用打印指令讓您的程式以秒為單位打印經過的時間。

在試用後,請使用計時器,看看移動指令是否有佔用了您輸入參數的時間?

如果有額外的時間,你認為它從哪裡來呢?請移動計時器,再增加更多的飛行動作。請看看有發生什麼事嗎?

你的編碼應該是這樣的:

import CoDrone_mini

import time


drone = CoDrone_mini.CoDrone()

drone.pair()


drone.takeoff()

drone.set_pitch(40)

start_time = time.time()

drone.move(2)

end_time = time.time()

drone.land()


elapsed_time = end_time - start_time

print(elapsed_time)

 

Step 4:

在函數中使用定時器

為一件事建立多個變量的時間可能是一個很大的挑戰。 

如果您想為一個動作計時,您可以建立一個函數!

這將為 move()功能運行一個計時器,無論您在參數中輸入多少秒。

在匯入 CoDrone Mini 和時間庫、建立無人機對象並進行配對後,請定義一個函數(我們稱其為 fly() )並將秒數放入參數中。

接著,請建立一個變數來儲存無人機的開始時間。

請建立一個while迴圈,假設時間減去開始時間小於參數中的秒數,則無人機會移動。

接著,請讓無人機起飛並將俯仰設置為30。請把飛行功能包含在內並將參數設置為2秒,然後讓無人機降落。

請玩弄參數中時間吧,再觀察有什麼事情發生嗎? 請問增加或減少俯仰對時間有影響嗎?

您的編碼應該會長這樣:

import CoDrone_mini

import time


drone = CoDrone_mini.CoDrone()

drone.pair()


# -------- function definition ---------

def fly(seconds):

   start_time = time.time()

   while time.time() - start_time < seconds:

       drone.move()

# --------------------------------------


drone.takeoff()

drone.set_pitch(30)

fly(2)

drone.land()

 

Step 5:

挑戰

挑戰:一分鐘計時賽跑

請在一分鐘內盡可能多地執行飛行運動。(根據 elapsed_time 程式中的變數)!

規則如下:

  • 您必須至少要包括一個俯仰、一個油門、一個偏航和一個橫滾。
  • 任何飛行動作,包括懸停或延遲,這些都只能持續 3 秒。
  • 同一個動作不能連續使用,無論是一個接一個還是一個迴圈(所以不要迴圈向前俯仰3秒20次)。
  • 請在一分鐘內起飛和降落。