This program is a sample program for operation check of the library to perform the SW recognition.

Dependencies:   SwDigital mbed

SW認識Library(SWDigital)のサンプルプログラムの説明

<概要>

SW認識させるLibrary(SWDigital)と、Libraryを使用したサンプルプログラムについて説明します。
Libraryとサンプルプログラムは次のアドレスからダウンロードできます。

Library:
http://mbed.org/users/suupen/code/SwDigital/#af5fbc75b7bf

サンプルプログラム:
http://mbed.org/users/suupen/code/SwDigitalLibraryExampleProgram/file/3f5813718d33/SwDigital.lib

サンプルプログラムの動作例

<Libraryについて>

SWのレベルを10[ms]毎に認識して、レベルが3回一致したら、そのレベルを確定値として認識します。
このため、SW操作をして認識値が変化するまでに30[ms]必要になります。 複数回のレベル認識をして確定値を決めるので、SW操作によるチャタリングノイズの除去が可能です。

SW認識に使用する端子は、mbed内部でプルアップしているので、外部にプルアップ抵抗を接続する必要はありません。

このLibraryで使用するmbed機能

  • チッカータイマー(Ticker) 1[us]単位、10[ms]周期
  • デジタル入力(DigitalIn) プルアップ有効

SW入力に設定可能な端子(LPC1768)

  • p5~p30 の内の20本

SW認識処理の変更方法

  • SwDitital.h内の定義を変更することで、以下の条件を変更できます。
  • SW認識周期:Z_matchcycle 設定範囲:10[ms](10000)~100[ms](100000) (1[us/count])
  • SW一致回数:Z_itchPattern 設定範囲:3~8[回]

/media/uploads/suupen/sw---------.jpg SwDigital.hの設定箇所

Libraryの使い方

/media/uploads/suupen/swdigitallibrary----.jpg サンプルプログラムより

  • SW認識する端子の指定: swDigital
  • SWのレベル認識関数  :checkLevel(swNo)
  • SWのONエッジ認識関数 :checkEdgeOn(swNo)
  • SWのOFFエッジ認識関数:checkEdgeOff(swNo)
    引数のswNoは、端子定義関数のswDigitalの引数のポートの順番(0~19)

<サンプルプログラムについて>

mbed(LPC1768)を使用しています。SWは2つ使用しており、

  • SW1 : P10
  • SW2 : P20

に接続します。

/media/uploads/suupen/---.jpg

回路図

SW1ではSWのレベル認識(OFFなのかONなのかを判定)させてLED1、LED2を制御します。
SW1 がOFFのときは、mbed(LPC1768)のLED2が点灯します。
ON の時は、 LED1が点灯します。

SW2ではSWのエッジ認識(OFF→ON、ON→OFFの変化)させてLED3,LED4を制御します。
SW2 をOFF→ON、ON→OFFの変化をカウントしてLED3,LED4を点滅させます。

以上

Committer:
suupen
Date:
Sat Dec 21 08:33:32 2013 +0000
Revision:
1:3f5813718d33
Parent:
0:325de76ccf53
This is a sample program of libraries to the SW recognition from digital input terminal.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:325de76ccf53 1 //============================================
suupen 0:325de76ccf53 2 // SwDigital Library example program
suupen 0:325de76ccf53 3 //
suupen 0:325de76ccf53 4 // <schematic>
suupen 0:325de76ccf53 5 //
suupen 0:325de76ccf53 6 // mbed
suupen 0:325de76ccf53 7 // sw1
suupen 0:325de76ccf53 8 // ----
suupen 0:325de76ccf53 9 // p10 --------o o----------- GND
suupen 0:325de76ccf53 10 //
suupen 0:325de76ccf53 11 // sw2
suupen 0:325de76ccf53 12 // ----
suupen 0:325de76ccf53 13 // p20 --------o o------------GND
suupen 0:325de76ccf53 14 //
suupen 0:325de76ccf53 15 //=============================================
suupen 0:325de76ccf53 16
suupen 0:325de76ccf53 17 #include "mbed.h"
suupen 0:325de76ccf53 18 #include "SwDigital.h"
suupen 0:325de76ccf53 19
suupen 0:325de76ccf53 20 SwDigital sw(p10,p20); // p10 : sw1 control LED1,LED2
suupen 0:325de76ccf53 21 // p20 : sw2 control LED3,LED4
suupen 0:325de76ccf53 22 enum{
suupen 0:325de76ccf53 23 sw1,
suupen 0:325de76ccf53 24 sw2
suupen 0:325de76ccf53 25 };
suupen 0:325de76ccf53 26
suupen 0:325de76ccf53 27 DigitalOut led1(LED1);
suupen 0:325de76ccf53 28 DigitalOut led2(LED2);
suupen 0:325de76ccf53 29 DigitalOut led3(LED3);
suupen 0:325de76ccf53 30 DigitalOut led4(LED4);
suupen 0:325de76ccf53 31
suupen 0:325de76ccf53 32 int main() {
suupen 0:325de76ccf53 33 while(1) {
suupen 0:325de76ccf53 34 //==============================================
suupen 0:325de76ccf53 35 // sw1 - LED1,LED2 control
suupen 0:325de76ccf53 36 //==============================================
suupen 0:325de76ccf53 37 // sw level and edge data refresh
suupen 0:325de76ccf53 38 sw.refreshEdgeData();
suupen 0:325de76ccf53 39
suupen 0:325de76ccf53 40 // tact action (sw level = on : led1 = on)
suupen 0:325de76ccf53 41 led1 = sw.checkLevel(sw1);
suupen 0:325de76ccf53 42
suupen 0:325de76ccf53 43 // tact action (sw level = off : led2 = on)
suupen 0:325de76ccf53 44 led2 = !sw.checkLevel(sw1);
suupen 0:325de76ccf53 45
suupen 0:325de76ccf53 46 //==============================================
suupen 0:325de76ccf53 47 // sw2 - LED3,LED4 control
suupen 0:325de76ccf53 48 //==============================================
suupen 0:325de76ccf53 49 // toggle action (level Off to On)
suupen 0:325de76ccf53 50 if(sw.checkEdgeOn(sw2) == 1){
suupen 0:325de76ccf53 51 led3 = !led3;
suupen 0:325de76ccf53 52 }
suupen 0:325de76ccf53 53
suupen 0:325de76ccf53 54 // toggle action (level On to Off)
suupen 0:325de76ccf53 55 if(sw.checkEdgeOff(sw2) == 1){
suupen 0:325de76ccf53 56 led4 = !led4;
suupen 0:325de76ccf53 57 }
suupen 0:325de76ccf53 58 }
suupen 0:325de76ccf53 59 }