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を点滅させます。

以上

Files at this revision

API Documentation at this revision

Comitter:
suupen
Date:
Sat Dec 21 08:29:12 2013 +0000
Child:
1:3f5813718d33
Commit message:
In this version, I changed the number of terminal SW;

Changed in this revision

SwDigital.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SwDigital.lib	Sat Dec 21 08:29:12 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/suupen/code/SwDigital/#af5fbc75b7bf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Dec 21 08:29:12 2013 +0000
@@ -0,0 +1,60 @@
+//============================================
+// SwDigital Library example program
+// 
+//  <schematic>
+//
+//  mbed
+//                sw1
+//                ---- 
+//    p10 --------o  o----------- GND
+//
+//                sw2
+//                ----
+//    p20 --------o  o------------GND
+//
+//=============================================
+
+
+#include "mbed.h"
+#include "SwDigital.h"
+
+SwDigital sw(p10,p20);  // p10 : sw1 control LED1,LED2
+                        // p20 : sw2 control LED3,LED4
+enum{
+        sw1,
+        sw2
+    };
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+int main() {
+    while(1) {
+        //==============================================
+        // sw1 - LED1,LED2 control
+        //==============================================
+        // sw level and edge data refresh
+        sw.refreshEdgeData();
+        
+        // tact action (sw level = on : led1 = on)
+        led1 = sw.checkLevel(sw1);
+        
+        // tact action (sw level = off : led2 = on)
+        led2 = !sw.checkLevel(sw1);
+        
+        //==============================================
+        // sw2 - LED3,LED4 control
+        //==============================================
+        // toggle action (level Off to On)
+        if(sw.checkEdgeOn(sw2) == 1){
+             led3 = !led3;
+        }
+
+        // toggle action (level On to Off)
+        if(sw.checkEdgeOff(sw2) == 1){
+             led4 = !led4;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Dec 21 08:29:12 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912
\ No newline at end of file