為了快速、有效的解決物聯網產品在研發及行銷上的需求,並且可以讓物聯網新創團隊更快速完成初期的原型開發,找到早期使用者進行測試,因此,一套能加快開發的物聯網建置環境會對團隊有很大的幫助。
在筆者另一篇文章《快速上手精簡易用的物聯網開發板-DSI5168》中介紹了DSI5168這塊專為IoT新創設計的開發板,它提供完全兼容Arduino的開發特性,還一舉整合MCU、Wi-Fi、Ethernet及豐富的接腳介面,並搭配提供標準化的Arduino函式庫,是一套完整的物聯網方案開發板,更可快速打造出IoT產品的雛形,進而經由量產輔導機制,很務實地幫團隊加速跨越開發、實作的過程,順利將創意商品量產推入市場。
本文將針對此開發板的一些特色功能進行介紹,並提供相關的範例程式,有興趣的讀者可實際執行看看,會更有心得。
DSI5168 PWM應用測試
在電子元件的操控上,常會使用到PWM,PWM 全名叫做 pulse width modulation(脈衝寬度調變),最主要的核心概念為 工作週期(Duty Cycle)。簡單來說,PWM 原理是用 analogWrite() 輸出0~255的值來產生對應電壓,透過電壓值的變化產生亮度或不同顏色的變化。
DSI5168開發板提供4個PWM GPIO Pin(D10、D11、D12、D13),如下圖,本範例利用RGB LED來驅動全彩LED亮燈的顏色,此範例的接線方式為 V :5V、R:PWM (D10)、 G:PWM (D11)、 B:PWM (D12)。
範例程式如下:
int redPin = 10;
int greenPin = 11;
int bluePin = 12;
//uncomment this line if using a Common Anode LED
#define COMMON_ANODE
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
setColor(255, 0, 0); // red
delay(1000);
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}