TestMate 這樣玩 (I):LED & OLED

作者:Jack (吳致佑)
愛文西門科技系統應用工程師

  本文要跟大家分享我自己在使用 TestMate 上的一些小應用,文中範例所選擇的開發板是很受大家歡迎的 Raspberry Pi(RPi)。當然,你也可以搭配自己喜歡的開發板使用。範例的材料如下:
  1. 硬體:Raspberry Pi 3 Model B( 1 片)、TestMate( 1 片)、杜邦線 ( 10 條 )
  2. 軟體:onoffoled-i2c-busi2c-busoled-font-5x7
我們將透過 Node.js 來操作板子上的 GPIO,當然你也可以透過 /sys/class/gpio 或使用 C 語言做檔案操作來進行 GPIO 的控制。這裡就用我習慣的 Node.js 來做演示,透由 GPIO 和 I2C 的控制來操作 TestMate 上的 LED 及 OLED 螢幕。就讓我們開始吧~ 首先,我們需要在 Pi 上先安裝 Node.js。
 

一、安裝 Node.js

1. 透過 SSH 登入 RPi 後,將系統套件更新到最新。

$ sudo apt-get update
$ sudo apt-get upgrade

2. 透過 curl 指令下載 Node.js v8.x 之後的最新版本。

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

3. 完成後輸入以下指令安裝 Node.js。

$ sudo apt-get install -y nodejs

4. 最後查詢 Node.js 版本號,來確認是否安裝成功。

$ node -v

二、TestMate LED 示範


  這裡我們要介紹如何使用 Node.js 控制 RPi 上的 GPIO 來點亮 TestMate 的 LED。TestMate 共有 8 顆 LED 燈,分別有綠、黃、橘、紅,四種顏色。LED1 至 LED4 為 pull-down LED,高電位動作(Active High);LED5 至 LED8 為 pull-up LED,低電位動作(Active Low)。範例中將使用 npm 上較熱門的 onoff 模組來開發。
 

2.1 硬體配置



  如下圖所示,TestMate 上的 LEDs 均已經接上 4.7 kΩ 的偏壓限流電阻。因此,我們可以用杜邦線將 RPi 上的 GPIO 和 TestMate 腳位直接連接起來就可以使用 LED 了。假如你突然需要用 LED 當測試元件,而手邊又沒有麵包板或合適的電阻,手邊有一片 TestMate 就可立馬解決問題。

2.2 撰寫範例程式:led.js

1. 建立資料夾以及 led.js 檔案。

$ mkdir testmate && cd testmate
/testmate$ touch led.js

2. 接著初始化專案,並使用 npm install 安裝 onoff 模組。

/testmate$ npm init
/testmate$ npm install onoff --save

3. 接著撰寫 led.js 測試程式碼如下:
var Gpio = require('onoff').Gpio;
var led1 = new Gpio(4,  'out'),
    led2 = new Gpio(17, 'out'),
    led3 = new Gpio(27, 'out'),
    led4 = new Gpio(22, 'out'),
    led5 = new Gpio(5,  'out', { activeLow: true }),
    led6 = new Gpio(6,  'out', { activeLow: true }),
    led7 = new Gpio(13, 'out', { activeLow: true }),
    led8 = new Gpio(19, 'out', { activeLow: true });

var leds = [ led1, led2, led3, led4, led5, led6, led7, led8 ];
var indexCount = 0,
    dir = "up";

setInterval(function () {
  leds.forEach(function(led) {
    led.writeSync(1);
  });

  leds[indexCount].writeSync(0); 

  if (dir === 'up') {
    indexCount++;
    if (indexCount == 7)
      dir = 'down';
  } else if (dir === 'down') {
    indexCount--;
    if (indexCount == 0)
      dir = 'up';
  }
}, 200);

4. 完成後儲存,然後輸入以下指令執行程式。
/testmate$ node led.js

如果正常運作,你會看到 LED 會像下圖這樣就跑起來了:

三、TestMate OLED 示範


  TestMate 上的 OLED 螢幕是很常見的 0.96 吋 (128x64) 顯示器,它的驅動 IC 型號為新款的 SSD1315,其功能與舊款 SSD1306 相容,走 I2C 控制介面,相關文件在網路上也很容易找到。這裡選擇的 npm 套件是可以直接控制 SSD1306 的 oled-i2c-bus 模組。

3.1 硬體配置


Note:透過 RPi 控制 TestMate OLED,需將 R11 電阻改為 0 歐姆或短路,如下圖。

3.2 啟用 I2C 功能

  預設情況下 RPi 的 I2C 功能是關閉的,所以在使用 I2C 之前需要先將這個功能啟用。
 
1. 在終端機輸入以下指令進入 Software Configuration Tool 的設定畫面。
$ sudo raspi-config

2. 進入設定畫面後,選擇 5 Interfacing Options,按下 Enter 鍵。


3. 接著選擇 P5 I2C,按下 Enter 鍵。


4. 選擇 <Yes>,按下 Enter 鍵。


3.3 撰寫範例程式:olde.js

1. 建立 oled.js 檔案。
/testmate$ touch oled.js

2. 安裝 oled-i2c-bus、i2c-bus 及 oled-font-5x7 模組。
/testmate$ npm install oled-i2c-bus i2c-bus oled-font-5x7 --save

3. 編輯 oled.js 程式碼。
var i2c = require('i2c-bus'),
    Oled = require('oled-i2c-bus'),
    font = require('oled-font-5x7');

var opts = {
    width: 128,
    height: 64,
    address: 0x3C
};

var i2cBus = i2c.openSync(1),
    oled = new Oled(i2cBus, opts);

oled.setCursor(20, 5);
oled.writeString(font, 2, 'Happy', 1, true);
oled.setCursor(20, 25);
oled.writeString(font, 2, 'New Year', 1, true);
oled.setCursor(20, 45);
oled.writeString(font, 2, '2019!', 1, true);

oled.startScroll('left', 0, 15);

4. 完成後儲存,然後輸入以下指令執行程式。
/testmate$ node oled.js

如程式碼運作正常,你會看到 OLED 上顯示如下所示:

 
我有空時,會陸續再寫一些和 TestMate 應用相關的文章,請持續鎖定 E.E. 狂想曲,謝謝大家!
 
 
 


1 則留言:

  1. We are an independent escorts agency providing Call Girls job in Delhi. Call Girls job in hotels, We mainly targeted to the clients satisfaction and fully co-operative service providin you Escorts Girl Job in Delhi. We never disclose any identity to any third person. We also provides accommodations,we are looking an independent girl who can work with independently as a Female Escorts Job in Delhi.

    The recruitment will be on face to face interview and we need some pics for finalize the girls. The girls should be good looking to do Call Girls job in Delhi, good body structure and can work with us independently. Any Girls from any city can join us for Escorts Girl Job in Delhi and become a Call girls. We are hiring Female Escorts Job in Delhi also.

    回覆刪除

技術提供:Blogger.