このライブラリはSW認識を行います。 SWは1個から20個まで認識できます。 SWの認識周期は10msです。 SWはmbedの端子とGNDの間に接続します。 This library does the recognition SW. SW, one can recognize up to 20. Recognition of the SW period is 10ms. SW is connected to GND terminal of mbed. ON the SW, OFF (level) data output. Output data from OFF to ON edge of the SW. Output data from ON to OFF edge of the SW. SWのON,OFF(レベル)データを出力します。 SWのOFFからONのエッジデータを出力します。 SWのONからOFFのエッジデータを出力します。

Dependents:   kitchenTimer_Clock SwDigitalLibraryExampleProgram

Libraryの使い方については次のHPを参照してください。 http://mbed.org/users/suupen/code/SwDigitalLibraryExampleProgram/wiki/Homepage

Committer:
suupen
Date:
Sat Nov 26 11:38:42 2011 +0000
Revision:
0:4787131a6a18
Child:
1:356fb47220a0
V1.0  2011/11/26

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:4787131a6a18 1 /* SwDigital Library
suupen 0:4787131a6a18 2 * Copyright (c) 2011 suupen
suupen 0:4787131a6a18 3 *
suupen 0:4787131a6a18 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
suupen 0:4787131a6a18 5 * of this software and associated documentation files (the "Software"), to deal
suupen 0:4787131a6a18 6 * in the Software without restriction, including without limitation the rights
suupen 0:4787131a6a18 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
suupen 0:4787131a6a18 8 * copies of the Software, and to permit persons to whom the Software is
suupen 0:4787131a6a18 9 * furnished to do so, subject to the following conditions:
suupen 0:4787131a6a18 10 *
suupen 0:4787131a6a18 11 * The above copyright notice and this permission notice shall be included in
suupen 0:4787131a6a18 12 * all copies or substantial portions of the Software.
suupen 0:4787131a6a18 13 *
suupen 0:4787131a6a18 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
suupen 0:4787131a6a18 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
suupen 0:4787131a6a18 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
suupen 0:4787131a6a18 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
suupen 0:4787131a6a18 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
suupen 0:4787131a6a18 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
suupen 0:4787131a6a18 20 * THE SOFTWARE.
suupen 0:4787131a6a18 21 */
suupen 0:4787131a6a18 22
suupen 0:4787131a6a18 23 /***********************************************************************/
suupen 0:4787131a6a18 24 /* */
suupen 0:4787131a6a18 25 /* SwDigital.h */
suupen 0:4787131a6a18 26 /* */
suupen 0:4787131a6a18 27 /* */
suupen 0:4787131a6a18 28 /* V0.1 : 2011/11/13 */
suupen 0:4787131a6a18 29 /***********************************************************************/
suupen 0:4787131a6a18 30 #ifndef _SWDIGITAL_H
suupen 0:4787131a6a18 31 #define _SWDIGITAL_H
suupen 0:4787131a6a18 32
suupen 0:4787131a6a18 33 #include "mbed.h"
suupen 0:4787131a6a18 34
suupen 0:4787131a6a18 35 /** SWDIGITAL control class, based on a "mbed function"
suupen 0:4787131a6a18 36 *
suupen 0:4787131a6a18 37 * Example:
suupen 0:4787131a6a18 38 * @code
suupen 0:4787131a6a18 39 * //============================================
suupen 0:4787131a6a18 40 * // SwDigital Library example program
suupen 0:4787131a6a18 41 * //
suupen 0:4787131a6a18 42 * // <schematic>
suupen 0:4787131a6a18 43 * //
suupen 0:4787131a6a18 44 * // mbed
suupen 0:4787131a6a18 45 * // sw1
suupen 0:4787131a6a18 46 * // ----
suupen 0:4787131a6a18 47 * // p20 --------o o----------- GND
suupen 0:4787131a6a18 48 * //
suupen 0:4787131a6a18 49 * // sw2
suupen 0:4787131a6a18 50 * // ----
suupen 0:4787131a6a18 51 * // p21 --------o o------------GND
suupen 0:4787131a6a18 52 * //
suupen 0:4787131a6a18 53 * //=============================================
suupen 0:4787131a6a18 54 *
suupen 0:4787131a6a18 55 *
suupen 0:4787131a6a18 56 *#include "mbed.h"
suupen 0:4787131a6a18 57 *#include "SwDigital.h"
suupen 0:4787131a6a18 58 *
suupen 0:4787131a6a18 59 *SwDigital sw(p20,p21); // p20 : sw1 control LED1,LED2
suupen 0:4787131a6a18 60 * // p21 : sw2 control LED3,LED4
suupen 0:4787131a6a18 61 *
suupen 0:4787131a6a18 62 *DigitalOut led1(LED1);
suupen 0:4787131a6a18 63 *DigitalOut led2(LED2);
suupen 0:4787131a6a18 64 *DigitalOut led3(LED3);
suupen 0:4787131a6a18 65 *DigitalOut led4(LED4);
suupen 0:4787131a6a18 66 *
suupen 0:4787131a6a18 67 *int main() {
suupen 0:4787131a6a18 68 * while(1) {
suupen 0:4787131a6a18 69 * // sw level and edge data refresh
suupen 0:4787131a6a18 70 * sw.transEdgeData();
suupen 0:4787131a6a18 71 *
suupen 0:4787131a6a18 72 * // tact action (sw level = on : led1 = on)
suupen 0:4787131a6a18 73 * led1 = sw.checkLevel(0);
suupen 0:4787131a6a18 74 *
suupen 0:4787131a6a18 75 * // tact action (sw level = off : led2 = on)
suupen 0:4787131a6a18 76 * led2 = !sw.checkLevel(0);
suupen 0:4787131a6a18 77 *
suupen 0:4787131a6a18 78 * // toggle action (level Off to On)
suupen 0:4787131a6a18 79 * if(sw.checkEdgeOn(1) == 1){
suupen 0:4787131a6a18 80 * led3 = !led3;
suupen 0:4787131a6a18 81 * }
suupen 0:4787131a6a18 82 *
suupen 0:4787131a6a18 83 * // toggle action (level On to Off)
suupen 0:4787131a6a18 84 * if(sw.checkEdgeOff(1) == 1){
suupen 0:4787131a6a18 85 * led4 = !led4;
suupen 0:4787131a6a18 86 * }
suupen 0:4787131a6a18 87 * }
suupen 0:4787131a6a18 88 *}
suupen 0:4787131a6a18 89 *
suupen 0:4787131a6a18 90 * @endcode
suupen 0:4787131a6a18 91 */
suupen 0:4787131a6a18 92
suupen 0:4787131a6a18 93 class SwDigital {
suupen 0:4787131a6a18 94 public:
suupen 0:4787131a6a18 95
suupen 0:4787131a6a18 96 /** Create a sound object connected to the specified PwmOut pin & DigitalOut pin
suupen 0:4787131a6a18 97 *
suupen 0:4787131a6a18 98 * @param pin sw0 to sw19 : sw input pin
suupen 0:4787131a6a18 99 *
suupen 0:4787131a6a18 100 * sw can be set from 1 to 20.
suupen 0:4787131a6a18 101 * Recognition of the SW period is 10ms
suupen 0:4787131a6a18 102 */
suupen 0:4787131a6a18 103 SwDigital(PinName sw0 = NC, PinName sw1 = NC, PinName sw2 = NC, PinName sw3 = NC, PinName sw4 = NC,
suupen 0:4787131a6a18 104 PinName sw5 = NC, PinName sw6 = NC, PinName sw7 = NC, PinName sw8 = NC, PinName sw9 = NC,
suupen 0:4787131a6a18 105 PinName sw10 = NC, PinName sw11 = NC, PinName sw12 = NC, PinName sw13 = NC, PinName sw14 = NC,
suupen 0:4787131a6a18 106 PinName sw15 = NC, PinName sw16 = NC, PinName sw17 = NC, PinName sw18 = NC, PinName sw19 = NC
suupen 0:4787131a6a18 107 );
suupen 0:4787131a6a18 108
suupen 0:4787131a6a18 109 /** refresh edge data
suupen 0:4787131a6a18 110 *
suupen 0:4787131a6a18 111 * @param none
suupen 0:4787131a6a18 112 * @param return none
suupen 0:4787131a6a18 113 *
suupen 0:4787131a6a18 114 * main de edge data wo tukau maeni jiko suru
suupen 0:4787131a6a18 115 */
suupen 0:4787131a6a18 116 void refreshEdgeData(void);
suupen 0:4787131a6a18 117
suupen 0:4787131a6a18 118 /** Check Off to On edge
suupen 0:4787131a6a18 119 *
suupen 0:4787131a6a18 120 * @param uint8_t swNo : check swNo 0 to 19
suupen 0:4787131a6a18 121 * @param return uint8_t On edge check 0: edge Nasi 1: edge Ari
suupen 0:4787131a6a18 122 *
suupen 0:4787131a6a18 123 */
suupen 0:4787131a6a18 124 uint8_t checkEdgeOn(uint8_t swNo);
suupen 0:4787131a6a18 125
suupen 0:4787131a6a18 126 /** Check On to Off edge
suupen 0:4787131a6a18 127 *
suupen 0:4787131a6a18 128 * @param uint8_t swNo : check swNo 0 to 19
suupen 0:4787131a6a18 129 * @param return uint8_t Off edge check 0 : Nasi 1 : Ari
suupen 0:4787131a6a18 130 *
suupen 0:4787131a6a18 131 */
suupen 0:4787131a6a18 132 uint8_t checkEdgeOff(uint8_t swNo);
suupen 0:4787131a6a18 133
suupen 0:4787131a6a18 134 /** Check On to Off edge
suupen 0:4787131a6a18 135 *
suupen 0:4787131a6a18 136 * @param uint8_t swNo : check swNo 0 to 19
suupen 0:4787131a6a18 137 * @param return uint8_t sw level check 0 : Off 1 : On
suupen 0:4787131a6a18 138 *
suupen 0:4787131a6a18 139 */
suupen 0:4787131a6a18 140 uint8_t checkLevel(uint8_t swNo);
suupen 0:4787131a6a18 141
suupen 0:4787131a6a18 142 //protected:
suupen 0:4787131a6a18 143 private:
suupen 0:4787131a6a18 144 DigitalIn _sw0;
suupen 0:4787131a6a18 145 DigitalIn _sw1;
suupen 0:4787131a6a18 146 DigitalIn _sw2;
suupen 0:4787131a6a18 147 DigitalIn _sw3;
suupen 0:4787131a6a18 148 DigitalIn _sw4;
suupen 0:4787131a6a18 149
suupen 0:4787131a6a18 150 DigitalIn _sw5;
suupen 0:4787131a6a18 151 DigitalIn _sw6;
suupen 0:4787131a6a18 152 DigitalIn _sw7;
suupen 0:4787131a6a18 153 DigitalIn _sw8;
suupen 0:4787131a6a18 154 DigitalIn _sw9;
suupen 0:4787131a6a18 155
suupen 0:4787131a6a18 156 DigitalIn _sw10;
suupen 0:4787131a6a18 157 DigitalIn _sw11;
suupen 0:4787131a6a18 158 DigitalIn _sw12;
suupen 0:4787131a6a18 159 DigitalIn _sw13;
suupen 0:4787131a6a18 160 DigitalIn _sw14;
suupen 0:4787131a6a18 161
suupen 0:4787131a6a18 162 DigitalIn _sw15;
suupen 0:4787131a6a18 163 DigitalIn _sw16;
suupen 0:4787131a6a18 164 DigitalIn _sw17;
suupen 0:4787131a6a18 165 DigitalIn _sw18;
suupen 0:4787131a6a18 166 DigitalIn _sw19;
suupen 0:4787131a6a18 167
suupen 0:4787131a6a18 168 Ticker swCheckTimer;
suupen 0:4787131a6a18 169
suupen 0:4787131a6a18 170 void input(void);
suupen 0:4787131a6a18 171
suupen 0:4787131a6a18 172 #define Z_matchcycle (10000) // 10000[us](10[ms]) to 100000[us](100[ms]) 1[us]/count
suupen 0:4787131a6a18 173
suupen 0:4787131a6a18 174 uint8_t D_swSuu; // touroku sareta Sw Suu 1 to 20
suupen 0:4787131a6a18 175 #define Z_swSuuMax (20) // SW no saidai suu
suupen 0:4787131a6a18 176
suupen 0:4787131a6a18 177 uint8_t B_kariLevel[Z_swSuuMax]; // kakutei mae no ninsiki Level 0bit:saisin(t) 1bit:t-1, ... ,7bit:t-7 0:Off 1:On
suupen 0:4787131a6a18 178 // match number define
suupen 0:4787131a6a18 179 //#define Z_itchiPattern (0x03) // 2kai itch
suupen 0:4787131a6a18 180 #define Z_itchiPattern (0x07) // 3kai itchi
suupen 0:4787131a6a18 181 //#define Z_itchiPattern (0x0f) // 4kai itchi
suupen 0:4787131a6a18 182 //#define Z_itchiPattern (0x1f) // 5kai itchi
suupen 0:4787131a6a18 183 //#define Z_itchiPattern (0x3f) // 6kai itchi
suupen 0:4787131a6a18 184 //#define Z_itchiPattern (0x7f) // 7kai itchi
suupen 0:4787131a6a18 185 //#define Z_itchiPattern (0xff) // 8kai itchi
suupen 0:4787131a6a18 186
suupen 0:4787131a6a18 187 // sw level data
suupen 0:4787131a6a18 188 uint8_t D_nowLevel[Z_swSuuMax]; // saisin no kakutei Level 0:Off 1:On
suupen 0:4787131a6a18 189 uint8_t D_oldLevel[Z_swSuuMax]; // zenkai no kakutei Level 0:Off 1:On
suupen 0:4787131a6a18 190 #define Z_levelOff (0)
suupen 0:4787131a6a18 191 #define Z_levelOn (1)
suupen 0:4787131a6a18 192
suupen 0:4787131a6a18 193 // sw edge data
suupen 0:4787131a6a18 194 // swDigital.c naibu hensu
suupen 0:4787131a6a18 195 uint8_t B_edgeOn[Z_swSuuMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 196 uint8_t B_edgeOff[Z_swSuuMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 197 // user use hensu
suupen 0:4787131a6a18 198 uint8_t D_edgeOn[Z_swSuuMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 199 uint8_t D_edgeOff[Z_swSuuMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 200 #define Z_edgeNasi (0)
suupen 0:4787131a6a18 201 #define Z_edgeAri (1)
suupen 0:4787131a6a18 202
suupen 0:4787131a6a18 203
suupen 0:4787131a6a18 204
suupen 0:4787131a6a18 205
suupen 0:4787131a6a18 206 };
suupen 0:4787131a6a18 207
suupen 0:4787131a6a18 208 #endif // _SWDIGITAL_H