This program is used to verify the operations of the library SW recognize an analog port.

Dependencies:   SwAnalog_LPC1768 mbed

Fork of SwAnalogInputLibraryExampleProgram by suu pen

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

<概要>

SW認識させるLibrary(SwAnalog)と、Libraryを使用したサンプルプログラムについて説明します。

Libraryとサンプルプログラムは次のアドレスからダウンロードできます。
Library:
http://mbed.org/users/suupen/code/SwAnalog_LPC1768/

サンプルプログラム:
http://mbed.org/users/suupen/code/SwAnalogInputLibraryExampleProgram/

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

<Libraryについて>

SWの状態を、抵抗による電圧の分圧比の変化で認識します。
使用する抵抗は、精度±1[%]のもの(金属皮膜抵抗)を使います。
(共立エレショップ:http://eleshop.jp/shop/c/c110312/)

/media/uploads/suupen/analogsw--.jpg
SW認識回路

アナログポートから読み込んだアナログ認識値から、SWのON,OFF状態を判定します。
この判定値を10[ms]毎に更新して、判定値が3回一致したら、その判定値を確定値として認識します。
このため、SW操作をして認識値が変化するまでに30[ms]必要になります。
複数回のレベル認識をして確定値を決めるので、SW操作によるチャタリングノイズの除去が可能です。

このLibraryで使用するmbed機能

  • チッカータイマー(Ticker) 1[us]単位、10[ms]周期
  • アナログ入力(AnalogIn)

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

  • p15~p20 の内の6本
    (各端子に3本のSW認識が可能で、合計18本のSW認識が可能)

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
SwAnalog.hの設定箇所

Libraryの使い方

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

  • SW認識する端子の指定: swAnalog
  • SWのレベル認識関数  :checkLevel(swNo)
  • SWのONエッジ認識関数 :checkEdgeOn(swNo)
  • SWのOFFエッジ認識関数:checkEdgeOff(swNo)
    引数のswNoは、端子定義関数のswAnalogの第一引数には,0,1,2、第二引数には3,4,5と割り振られていきます。

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

mbed(LPC1768)を使用しています。SWは3つ使用しており、
アナログポートのP20
に接続します。

/media/uploads/suupen/samplesw--.jpg
回路図

/media/uploads/suupen/-------p1170483.jpg
ブレットボードでの配線

プログラムの動作内容

  • SW0、SW1では、SWのレベル認識(OFFなのかONなのかを判定)する例です。
    SW0は、ONしている間、LED1を点灯させます。
    SW1は、OFFしている間、LED2を点灯させます。
  • SW2では、SWのエッジ認識(OFF→ON、ON→OFF)する例です。
    SW2のONエッジ(OFF→ON)の時に、LED3の出力を反転させます。
    SW2のOFFエッジ(ON→OFF)の時に、LED4の出力を反転させます。

以上

Committer:
suupen
Date:
Sun Dec 22 09:27:26 2013 +0000
Revision:
1:c4d2d6df69ce
Parent:
0:7ce3de2c24c3
This program is used to verify the operations of the library SW recognize an analog port.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 1:c4d2d6df69ce 1 // ********************************************************************
suupen 0:7ce3de2c24c3 2 // SwAnalogInput Library example program
suupen 1:c4d2d6df69ce 3 // Per pin analog port, SW recognition There are three possible.
suupen 0:7ce3de2c24c3 4 //
suupen 0:7ce3de2c24c3 5 // <schematic>
suupen 0:7ce3de2c24c3 6 // -.- mbed VOUT(+3.3[V])
suupen 0:7ce3de2c24c3 7 // | |--------------------> mbed p20(ADinput)
suupen 1:c4d2d6df69ce 8 // | 8.2[kohm] 3.9[kohm] 2.0[kohm] | 1.0[kohm]
suupen 0:7ce3de2c24c3 9 // | --------- --------- --------- | ---------
suupen 0:7ce3de2c24c3 10 // .---| Rsw2 |---.---| Rsw1 |---.---| Rsw0 |---.---| Rout |----|
suupen 0:7ce3de2c24c3 11 // | --------- | --------- | --------- | --------- |
suupen 0:7ce3de2c24c3 12 // | ---- | ----- | ----- | |
suupen 0:7ce3de2c24c3 13 // |-----o o------.-----o o------.-----o o------| -----
suupen 0:7ce3de2c24c3 14 // SW2 SW1 SW0 mbed GND(0[V])
suupen 0:7ce3de2c24c3 15 //
suupen 1:c4d2d6df69ce 16 //
suupen 1:c4d2d6df69ce 17 // Accuracy of the resistance value that is within ± 1%
suupen 0:7ce3de2c24c3 18 //
suupen 1:c4d2d6df69ce 19 // <Operation details of this program>
suupen 1:c4d2d6df69ce 20 // mbed LED1 : When it detects the ON level of the SW0, and turns the LED1.
suupen 1:c4d2d6df69ce 21 // mbed LED2 : When it detects the OFF level of the SW1, and turns the LED2.
suupen 1:c4d2d6df69ce 22 // mbed LED3 : When it detects the ON edge of SW2, inverting the output to LED3.
suupen 1:c4d2d6df69ce 23 // mbed LED4 : When it detects the OFF edge of SW2, inverting the output to LED4.
suupen 0:7ce3de2c24c3 24 //
suupen 0:7ce3de2c24c3 25 //
suupen 1:c4d2d6df69ce 26 // <history>
suupen 1:c4d2d6df69ce 27 // 120212 : first edtion
suupen 1:c4d2d6df69ce 28 // 131221 : In this edition, I have changed the behavior of the program content
suupen 1:c4d2d6df69ce 29 //
suupen 0:7ce3de2c24c3 30 // *********************************************************************
suupen 0:7ce3de2c24c3 31
suupen 0:7ce3de2c24c3 32 #include "mbed.h"
suupen 0:7ce3de2c24c3 33 #include "SwAnalog.h"
suupen 0:7ce3de2c24c3 34
suupen 0:7ce3de2c24c3 35 DigitalOut led1(LED1);
suupen 0:7ce3de2c24c3 36 DigitalOut led2(LED2);
suupen 0:7ce3de2c24c3 37 DigitalOut led3(LED3);
suupen 0:7ce3de2c24c3 38 DigitalOut led4(LED4);
suupen 0:7ce3de2c24c3 39
suupen 0:7ce3de2c24c3 40 SwAnalog sw(p20); // p20(adinput) :sw0,sw1,sw2
suupen 1:c4d2d6df69ce 41
suupen 1:c4d2d6df69ce 42 enum{
suupen 1:c4d2d6df69ce 43 sw0 = 0,
suupen 1:c4d2d6df69ce 44 sw1,
suupen 1:c4d2d6df69ce 45 sw2
suupen 1:c4d2d6df69ce 46 };
suupen 0:7ce3de2c24c3 47
suupen 0:7ce3de2c24c3 48 int main() {
suupen 0:7ce3de2c24c3 49 while(1) {
suupen 1:c4d2d6df69ce 50 //===========================================
suupen 1:c4d2d6df69ce 51 // sw edge data refresh
suupen 1:c4d2d6df69ce 52 //===========================================
suupen 0:7ce3de2c24c3 53 sw.refreshEdgeData();
suupen 1:c4d2d6df69ce 54
suupen 1:c4d2d6df69ce 55 //===========================================
suupen 1:c4d2d6df69ce 56 // SW level action
suupen 1:c4d2d6df69ce 57 //===========================================
suupen 1:c4d2d6df69ce 58 // sw0 : OFF:LED1=ON ON:LED1=OFF
suupen 1:c4d2d6df69ce 59 led1 = sw.checkLevel(sw0);
suupen 0:7ce3de2c24c3 60
suupen 1:c4d2d6df69ce 61 // sw1 : OFF:LED2=OFF ON:LED2=ON
suupen 1:c4d2d6df69ce 62 led2 = !sw.checkLevel(sw1);
suupen 0:7ce3de2c24c3 63
suupen 1:c4d2d6df69ce 64 //===========================================
suupen 1:c4d2d6df69ce 65 // SW edge action
suupen 1:c4d2d6df69ce 66 //===========================================
suupen 1:c4d2d6df69ce 67 // sw2 on edge : LED3 invert
suupen 1:c4d2d6df69ce 68 if(sw.checkEdgeOn(sw2) == 1){
suupen 1:c4d2d6df69ce 69 led3 = !led3;
suupen 1:c4d2d6df69ce 70 }
suupen 1:c4d2d6df69ce 71
suupen 1:c4d2d6df69ce 72 // sw2 off edge : LED4 invert
suupen 1:c4d2d6df69ce 73 if(sw.checkEdgeOff(sw2) == 1){
suupen 1:c4d2d6df69ce 74 led4 = !led4;
suupen 0:7ce3de2c24c3 75 }
suupen 0:7ce3de2c24c3 76 }
suupen 1:c4d2d6df69ce 77
suupen 1:c4d2d6df69ce 78
suupen 0:7ce3de2c24c3 79 }