Lego 2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

LEGO 講義 2 PowerPoint PPT Presentation


  • 149 Views
  • Uploaded on
  • Presentation posted in: General

LEGO 講義 2. 1. 光感 sensor 範例 2. 聲感 sensor 範例 3. 觸碰 sensor 範例 4. 超音波 sensor 範例 5. Multithreading 與 #define 範例. 1. 光感 SENSOR 範例. 光感 sensor 範例. 直接以內建程式測試: 開機後選擇 View > Reflected light ,將光感 sensor 接到對應的 port(1~4) ,選擇後會亮紅光。 將 sensor 靠近欲判斷之處,螢幕上會顯示讀數,可做為寫程式時所需數值的參考依據。

Download Presentation

LEGO 講義 2

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Lego 2

LEGO 講義2

1. 光感sensor範例

2. 聲感sensor範例

3. 觸碰sensor範例

4. 超音波sensor範例

5. Multithreading 與 #define範例


1 sensor

1. 光感SENSOR範例


Sensor

光感sensor範例

  • 直接以內建程式測試:

    • 開機後選擇View > Reflected light,將光感sensor接到對應的port(1~4),選擇後會亮紅光。

    • 將sensor靠近欲判斷之處,螢幕上會顯示讀數,可做為寫程式時所需數值的參考依據。

    • 程式讀取到的單位為百分比,不需加%。


Sensor1

光感sensor範例

#include "NXCDefs.h"

#define THRESHOLD 40// 定義常數

task main() {

SetSensorLight(IN_1);// 先宣告光感在第一個port

while (true) {

if (Sensor(IN_1) > THRESHOLD)// 若光感讀值大於40%

OnFwd(OUT_A, 30);// 以30% power正轉

else

Off(OUT_A);// 關閉接在port A 的馬達。

Wait(20);

}

}

範例程式:


2 sensor

2. 聲感SENSOR範例


Sensor2

聲感sensor範例

  • 直接以內建程式測試:

    • 開機後選擇View > Sound dB,將聲感sensor接到對應的port(1~4) 。

    • 將sensor靠近欲判斷之聲源,螢幕上會顯示讀數,可做為寫程式時所需數值的參考依據。

    • 程式讀取到的單位為百分比,不需加%。


Sensor3

聲感sensor範例

#include "NXCDefs.h"

#define THRESHOLD 80// 定義常數

task main() {

SetSensorSound(IN_1);// 先宣告聲感在第一個port

while (true) {

if (Sensor(IN_1) > THRESHOLD)// 若聲感讀值大於80%

OnFwd(OUT_A, 30);// 以30% power正轉

else

Off(OUT_A);// 關閉接在port A 的馬達。

Wait(20);

}

}

範例程式:


3 sensor

3. 觸碰SENSOR範例


Sensor4

觸碰sensor範例

  • 直接以內建程式測試:

    • 開機後選擇View> Touch,將觸碰感測器接到對應的port(1~4) 。

    • 用手試著按壓,螢幕上會顯示讀數,1表示按住,0表示放開。可做為寫程式時所需數值的參考依據。

    • 注意,實作中有時可能因為由側面按壓,沒按到底而無法成功感應觸碰。


Sensor5

觸碰sensor範例

#include "NXCDefs.h"

task main() {

SetSensor(IN_1,SENSOR_TOUCH);// 先宣告觸碰感測器在第一個port

while (true) {

if (Sensor(IN_1) == 1)// 若按下觸碰感測器

OnFwd(OUT_A, 30);// 以30% power正轉

else

Off(OUT_A);// 關閉接在port A 的馬達。

Wait(20);

}

}

範例程式:


4 sensor

4. 超音波SENSOR範例


Sensor6

超音波sensor範例

  • 直接以內建程式測試:

    • 開機後選擇View> Ultrasonic cm,將超音波sensor接到對應的port(1~4) 。

    • 螢幕上會顯示超音波讀數,sensor藉由超音波反射測量距離。單位可選擇公分或英吋,範圍約0~255 cm,精準度不高。

    • 超音波會受反射方向與介面特性影響,因此可能會讀入非預期之數值。超音波在各物體間的多次反射也有可能造成誤判。


Sensor7

超音波sensor範例

#include "NXCDefs.h"

#define NEAR 20// 預設為 cm

task main() {

SetSensorLowspeed(IN_1);// 先宣告超音波在第一個port

while (true) {

if (SensorUS(IN_1) > NEAR)// 若距離大於20 cm

OnFwd(OUT_A, 30);// 以30% power正轉

else

Off(OUT_A);// 關閉接在port A 的馬達。

Wait(20);

}

}

範例程式:


5 multithreading define

5. MULTITHREADING 與 #DEFINE範例


Multithreading define

Multithreading & #define 範例

  • 利用#define定義函數的方法,是在每一行後面加上「\」,最後面的大括號「}」後面不用加「\」。

  • 利用函數Precedes(task1_name, task2_name, …, taskN_name); 可以達到的類似平行處理的效果。

  • 下面範例程式的功能為A、B兩顆馬達朝不同方向轉動。


Multithreading define1

Multithreading & #define 範例

#include "NXCDefs.h"

#define OnFwdNew(int port, int power) {\

while(true) { \

if (Sensor(IN_1) == 1) {\

OnFwd(port, power); \

Wait(4000); \

break; \

} \

} \

}

task A() { OnFwdNew(OUT_A, 30); }

task B() { OnFwdNew(OUT_B, -30); }

task main() {

SetSensor(IN_1,SENSOR_TOUCH);

Precedes(A,B);

}

範例程式:


Lego 2

實驗練習

請同學以事先組好的輪型機器人,加上光感sensor,做出可沿著桌面黑線移動的機器人。

Bonus:另外加上聲音sensor,以拍掌聲控制機器人開始運作、暫停的功能。例如機器人一開始是靜止,拍一下手掌便開始沿著黑線走,再拍一下暫停動作,再拍一下又繼續行走這樣。


  • Login