🤖
LinkIt 7697 BlocklyDuino 使用指南
  • LinkIt 7697 BlocklyDuino 使用指南
    • 認識 LinkIt 7697
    • 認識 BlocklyDuino
    • BlocklyDuino v2 & v3 比較
    • 安裝開發環境 (v2)
      • 安裝 Arduino 編輯器
      • 安裝驅動並連接開發板
      • 安裝 BlocklyDuino 編輯器
      • 連結兩個編輯器並上傳程式
    • 安裝開發環境 (v3)
    • BlocklyDuino 基礎操作
    • 實作範例教學
      • A01. 內建 LED 閃爍
      • A02. 外接 LED 閃爍
      • A03. 外接 LED 呼吸燈
      • A04. RGB LED 顏色變化
      • A05. 外部按鈕控制開關
      • A06. 蜂鳴器播放聲音
      • A07 .可變電阻控制電壓輸出
      • A08. 伺服馬達控制
      • A21. DHT: 溫濕度感應器
      • A22. HTU21D: 溫溼度感應器
      • A23. PMSX003: PM2.5 感測器
      • A24. HC-SR04P: 超音波測距
      • A25. ADXL345: 加速規(動態)
      • A26. ADXL345: 加速規(手勢)
      • A27. 1602/2004: 液晶顯示模組
      • A28. WS2812: RGB 彩色燈條
      • A29. MFRC522: RFID
      • B00. Grove 相關基礎知識
      • B01. Grove 光感應器
      • B02. Grove 超音波測距感應器
      • B03. Grove 溫溼度感應器
      • B04. Grove 繼電器
      • B05. Grove LED 燈條
      • B06. Grove OLED 顯示器
      • C01. 雲端控制 LED 開關
      • C02. 上傳溫溼度到雲端
      • D01. 手機透過 BLE 讀寫裝置資料
      • E01. 遙控器: 按鈕控制 LED
    • 資源鏈結
  • LinkIt 7697 - Arduino IDE 開發指南
    • 環境設定
      • 設定 Arduino IDE
      • 將 LinkIt 7697 連接到電腦
        • 在 Windows 上安裝 CP2102N 驅動程式
        • 在 macOS 上安裝 CP2102N 驅動程式
      • 執行第一個程式
    • 開發指南
      • GPIO
      • UART
      • ADC
      • EINT (外部中斷 / External Interrupt)
      • I2C
      • SPI
      • EEPROM
      • Timer
      • Flash (索引式儲存空間)
      • RTC (Real-Time Clock)
      • Software Serial
      • 使用 Wi-Fi 函式庫
      • 使用 MCS 函式庫
        • 連接到 MCS
        • 連接到 MCSLite
          • 建立可透過 MCS Lite 控制的 Beacon
        • MCS 函式庫 API 使用手冊
          • MCSDevice
          • MCSLiteDeviceMCSLiteDevice
          • MCSDataChannel 相關類別
      • 使用 BLE 低功耗藍牙
        • 藍牙信標
        • 主控裝置
        • 周邊裝置
        • 已知限制
        • LBLE API 指南
          • LBLE
          • LBLECentral
          • LBLEPeripheral
          • LBLEAdvertisementData
          • LBLEService
          • LBLECharacteristic
          • LBLEAddress
          • LBLEUuid
          • LBLEClient
      • 使用 LinkIt Remote
        • LRemote API
        • LRemote 控制元件 API
      • LinkIt 7697 腳位的初始狀態
      • LinkIt 7697 供電說明
      • 更新 Bootloader 與韌體
      • Flash 燒錄工具
      • FOTA 更新
      • LinkIt 7697 的功能限制
      • 自行編譯 Arduino Package
      • 回報問題
    • 週邊元件連接教學
      • SMD 按鈕
      • RGB 三色 LED
      • 可變電阻
      • 九軸感應器 (MPU-9250)
      • 溫度與濕度感應器 (AM2302)
      • 超音波距離感應器
      • 光感應器 (LM358)
      • 0.96 吋 OLED 顯示模組 (SSD1308Z)
      • 長條型 LED 顯示模組 (MY9221)
      • 繼電器
      • 伺服馬達 (EMAX 9g ES08A Servo)
      • 使用 74HC595 驅動七段顯示器
      • 使用 MAX7219 驅動七段顯示器
      • 使用 MAX7219 驅動 8x8 矩陣式顯示器
      • 使用 OLED 模組 (如 SH1106 / SSD1306... 等模組)
      • 使用 PCF8574 / PCF8574A 驅動 1602 LCD
    • 開發套件與擴充板
      • Grove Starter Kit
      • Robot Shield
        • OTTO97
    • 下載
    • 資源連結
    • BSP 版本更新資訊
  • LinkIt 7697 - Development Guide for Arduino IDE
    • Environment Setup
      • Setup Arduino IDE
      • Connecting LinkIt 7697 to Computer
        • Install CP2102N Driver on Windows
        • Install CP2102N Driver on macOS
      • Run Your First Sketch
    • Developer Guide
      • GPIO
      • UART
      • ADC
      • External Interrupt
      • I2C
      • SPI
      • EEPROM
      • Timer
      • Flash (Key-Pair Storage)
      • RTC (Real-Time Clock)
      • Software Serial
      • Using the Wi-Fi Library
      • Using MCS Library
        • Connecting to MCS
        • Connecting to MCSLite
          • Build a Beacon controlled by MCS Lite
        • MCS Library API Reference
          • MCSDevice
          • MCSLiteDevice
          • MCSDataChannel Classes
      • Using Bluetooth
        • Beacons
        • Central Devices
        • Peripheral Devices
        • Limitations of LBLE library
        • LBLE Library API Guide
          • LBLE
          • LBLECentral
          • LBLEPeripheral
          • LBLEAdvertisementData
          • LBLEService
          • LBLECharacteristic
          • LBLEAddress
          • LBLEUuid
          • LBLEClient
      • Using LinkIt Remote
        • LRemote
        • LRemote Control Classes
      • Initial Pin State of LinkIt 7697
      • Powering the LinkIt 7697
      • Update Bootloader and Firmware
      • Flash Uploading Tool
      • FOTA Update
      • Limitations of LinkIt 7697
      • Source Code of Arduino Package
      • Issue Report
    • Tutorial
      • SMD Buttons
      • RGB LED
      • Potentiometer
      • IMU 9DOF v2.0 (MPU-9250)
      • Temperature and Humidity Sensor Pro (AM2302)
      • Grove Ultrasonic Ranger
      • Light Sensor (LM358)
      • Grove OLED Display 0.96" (SSD1308Z)
      • LED Bar v2.0 (MY9221)
      • Relay
      • Mini Servo (EMAX 9g ES08A Servo)
      • Driving 7-segment Displays with 74HC595
      • Driving 7-segment Displays with MAX7219
      • Driving 8x8 Dot Matrices with MAX7219
      • Using OLED module (SH1106 / SSD1306... etc.)
      • Driving 1602 LCD with PCF8574 / PCF8574A
    • Kits and Shields
      • Grove Starter Kit
      • Robot Shield
        • OTTO97
    • Download
    • Resources
    • BSP Release Notes
Powered by GitBook
On this page
  • MCSDataChannel 函式
  • 顯示器通道函式
  • 控制器通道函式
  • MCSControllerPWM 控制器通道函式
  • GPS 通道函式
  • Gamepad 控制器通道函式
  1. LinkIt 7697 - Arduino IDE 開發指南
  2. 開發指南
  3. 使用 MCS 函式庫
  4. MCS 函式庫 API 使用手冊

MCSDataChannel 相關類別

PreviousMCSLiteDeviceMCSLiteDeviceNext使用 BLE 低功耗藍牙

Last updated 3 years ago

藉由繼承自 MCSDataChannel 類別的資料通道實體,可用來與 MCS 伺服器上對應的資料通道進行傳送與接收資料點的操作。 例如下例的開/關控制器通道:

該通道可被表示為一個 MCSControllerOnOff 類別的實體:

MCSControllerOnOff channelOnOff("channel_id_1");
device.addChannel(channelOnOff);	// device is an instance of MCSDevice or MCSLiteDevice.
 
device.connect();
bool controllerValue = channel.value();

雖然隨著種類不同而有不一樣的資料格式,但每種資料通道都提供了 set() 與 value() 這兩個函式用來存取資料數值。下面章節將列出在 Arduino sketch 中所有可用的資料通道類別。

資料通道有兩個主要的子類別:控制器通道類別與顯示器通道類別。例如 MCSControllerOnOff 和 MCSControllerInteger 的控制器通道用來表示 MCS 上的控制器通道;而 MCSDisplayFloat 和 MCSDisplayString 顯示器通道則對應到 MCS 上的顯示器通道。

建構函式

> MCSDataChannel()

產生一個可加進 MCSDevice 或 MCSLiteDevice 裝置實體的資料通道。

Syntax

MCSControllerOnOff dataChannel(data_channel_ID)

MCSDisplayOnOff dataChannel(data_channel_ID)

MCSControllerCategory dataChannel(data_channel_ID)

MCSDisplayCategory dataChannel(data_channel_ID)

MCSControllerInteger dataChannel(data_channel_ID)

MCSDisplayInteger dataChannel(data_channel_ID)

MCSControllerFloat dataChannel(data_channel_ID)

MCSDisplayFloat dataChannel(data_channel_ID)

MCSControllerHex dataChannel(data_channel_ID)

MCSDisplayHex dataChannel(data_channel_ID)

MCSControllerString dataChannel(data_channel_ID)

MCSDisplayString dataChannel(data_channel_ID)

MCSControllerGPS dataChannel(data_channel_ID)

MCSDisplayGPS dataChannel(data_channel_ID)

MCSControllerGPIO dataChannel(data_channel_ID)

MCSDisplayGPIO dataChannel(data_channel_ID)

MCSControllerPWM dataChannel(data_channel_ID)

MCSDisplayPWM dataChannel(data_channel_ID)

MCSControllerAnalog dataChannel(data_channel_ID)

Parameters

data_channel_ID:在 MCS 伺服器上建立的資料通道 channel id。

Returns

dataChannel 即為繼承自 MCSDataChannel 類別的子類別實體。

MCSDataChannel 函式

所有的資料通道種類皆支援下列函式:

> updated()

> valid()

> value()

檢查資料通道是否有接收到新的資訊點。在進行檢查之前,開發者需要先呼叫 device.process() 函式處理來自 MCS 伺服器的指令。若該資料通道有多次更新,則只有最後 (即最新的) 一筆資料會被保留下來。

Syntax

dataChannel.updated()

Parameters

無

Returns

若此資料通道有新的資料點更新,則回傳布林值 true;反之則回傳 false。

檢查該資料通道欲接收 / 傳送的值是否為有效值。

Syntax

dataChannel.valid()

Parameters

無

Returns

若此資料通道的值為有效值,則回傳布林值 true;反之則回傳 false。

取得此資料通道的數值 (MCSControllerGPS 與 MCSDisplayGPS 類別除外)。

Syntax

dataChannel.value()

Parameters

無

Returns

該資料通道的值。其資料類型依各資料通道而定,例如整數、浮點數、字串等。

顯示器通道函式

> set()

設定此顯示器通道的數值。

Syntax

dataChannel.set(value)

MCSDisplayPWM.set(value, period)

MCSDisplayGPS.set(latitude, longitude, altitude)

Parameters

dataChannel:繼承自 MCSDataChannel 類別的實體,如 MCSDisplayOnOff 和 MCSDisplayCategory...。

MCSDisplayPWM:MCSDisplayPWM 類別的實體。

MCSDisplayGPS:MCSDisplayGPS 類別的實體。

value:欲設定至該資料通道的值。其資料類型依各資料通道而定,例如整數、浮點數、字串等。

period:指定給 PWM 資料通道的整數週期值,其值為 PWM 頻率的倒數。

latitude、longitude、altitude:GPS 資料通道的座標值,其資料類型為浮點數。

Returns

若該資料通道的數值被成功更新至 MCS 伺服器,則回傳布林值 true;反之則回傳 false。

控制器通道函式

> setServerValue()

設定此控制器通道的數值。

Syntax

controllerChannel.setServerValue(value)

MCSControllerGPS.setServerValue(latitude, longitude, altitude)

Parameters

controllerChannel:繼承自 MCSDataChannel 類別的實體,如 MCSControllerOnOff 和 MCSControllerCategory...。

MCSControllerGPS:MCSControllerGPS 類別的實體。

value:欲設定至該資料通道的值。其資料類型依各資料通道而定,例如整數、浮點數、字串等。

通道類別
資料類型

MCSControllerOnOff

bool

MCSControllerFloat

float

MCSControllerInteger

int

MCSControllerAnalog

int

MCSControllerGPIO

int

MCSControllerHex

long

MCSControllerCategory

String

MCSControllerString

String

MCSControllerPWM

MCSPWMValue

MCSControllerGPS

MCSGPSValue

latitude、longitude、altitude:GPS 資料通道的座標值,其資料類型為浮點數。

Returns

若該資料通道的數值被成功更新至 MCS 伺服器,則回傳布林值 true;反之則回傳 false。

MCSControllerPWM 控制器通道函式

針對 PWM 控制器資料通道,提供了:

> dutyCycle()

> period()

取得此 PWM 控制器通道的 duty cycle 值。

Syntax

MCSControllerPWM.dutyCycle()

Parameters

MCSControllerPWM:MCSControllerPWM 類別的實體。

Returns

該 PWM 控制器通道的 duty cycle 設定值 (在 MCS 控制介面顯示為 value),其資料類型為整數。

取得此 PWM 控制器通道的週期值。

Syntax

MCSControllerPWM.period()

Parameters

MCSControllerPWM:MCSControllerPWM 類別的實體。

Returns

該 PWM 控制器通道的週期設定值,其資料類型為整數。

GPS 通道函式

針對 GPS 控制器與 GPS 顯示器資料通道,提供了以下函式供查詢經緯度及高度資訊。

> latitude()

> longitude()

> altitude()

取得此 GPS 控制器通道的緯度值。

Syntax

MCSControllerGPS.latitude()

Parameters

MCSControllerGPS:MCSControllerGPS 類別的實體。

Returns

該 GPS 控制器通道的緯度值,其資料類型為浮點數。

取得此 GPS 控制器通道的經度值。

Syntax

MCSControllerGPS.longitude()

Parameters

MCSControllerGPS:MCSControllerGPS 類別的實體。

Returns

該 GPS 控制器通道的經度值,其資料類型為浮點數。

取得此 GPS 控制器通道的高度值。

Syntax

MCSControllerGPS.altitude()

Parameters

MCSControllerGPS:MCSControllerGPS 類別的實體。

Returns

該 GPS 控制器通道的高度值,其資料類型為浮點數。

Gamepad 控制器通道函式

Gamepad 為用來表示按鍵資訊的控制器通道,包含兩種按鍵狀態:

  • 哪顆鍵 (BTN_UP、BTN_DOWN、BTN_LEFT、BTN_RIGHT、BTN_A、BTN_B) 被操作,以及

  • 該按鍵是被按下 (BTN_PRESSED) 或放開 (BTN_RELEASED)。

可表示的按鍵 enumeration 如下:

enum MCSGamePadButton{
    BTN_UP = 1,
    BTN_DOWN,
    BTN_LEFT,
    BTN_RIGHT,
    BTN_A,
    BTN_B,
    BTN_INVALID
};

表示按壓狀態的 enumeration 為:

enum MCSGamePadButtonEvent{
    BTN_PRESSED = 1,
    BTN_RELEASED = 0,
    BTN_NO_EVENT = -1
};

因此可透過 button 與 event 欄位對從 value() 函式所取得的資訊進行解讀:

if(BTN_UP == gamepadChannel.value().button &&
   BTN_PRESSED == gamepadChannel.value().event)
{
   // Do something when the "UP" key is pressed...
}

透過下列函式,亦可取得按鍵資訊與按壓狀態:

> button()

> event()

取得目前正在作用的按鍵。

Syntax

MCSControllerGamePad.button()

Parameters

MCSControllerGamePad:MCSControllerGamePad 類別的實體。

Returns

正在作用按鍵的 MCSGamePadButton enumeration 值。目前支援的按鍵種類如下:

enum MCSGamePadButton{
    BTN_UP = 1,
    BTN_DOWN,
    BTN_LEFT,
    BTN_RIGHT,
    BTN_A,
    BTN_B,
    BTN_INVALID
};

取得目前作用按鍵的狀態 (被按下或是放開)。

Syntax

MCSControllerGamePad.button()

Parameters

MCSControllerGamePad:MCSControllerGamePad 類別的實體。

Returns

目前作用按鍵的狀態 (資料類型為 MCSGamePadButtonEvent)。提供的資訊種類有:

enum MCSGamePadButtonEvent{
    BTN_PRESSED = 1,
    BTN_RELEASED = 0,
    BTN_NO_EVENT = -1
};