このライブラリは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:
Sun Dec 11 01:01:56 2011 +0000
Revision:
2:af5fbc75b7bf
Parent:
1:356fb47220a0
V1.01 2011/12/11 example program bug fix

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 2:af5fbc75b7bf 29 /* @001 : 2011/12/11 example program bug fix */
suupen 0:4787131a6a18 30 /***********************************************************************/
suupen 0:4787131a6a18 31 #ifndef _SWDIGITAL_H
suupen 0:4787131a6a18 32 #define _SWDIGITAL_H
suupen 0:4787131a6a18 33
suupen 0:4787131a6a18 34 #include "mbed.h"
suupen 0:4787131a6a18 35
suupen 0:4787131a6a18 36 /** SWDIGITAL control class, based on a "mbed function"
suupen 0:4787131a6a18 37 *
suupen 0:4787131a6a18 38 * Example:
suupen 0:4787131a6a18 39 * @code
suupen 0:4787131a6a18 40 * //============================================
suupen 0:4787131a6a18 41 * // SwDigital Library example program
suupen 0:4787131a6a18 42 * //
suupen 0:4787131a6a18 43 * // <schematic>
suupen 0:4787131a6a18 44 * //
suupen 0:4787131a6a18 45 * // mbed
suupen 0:4787131a6a18 46 * // sw1
suupen 0:4787131a6a18 47 * // ----
suupen 0:4787131a6a18 48 * // p20 --------o o----------- GND
suupen 0:4787131a6a18 49 * //
suupen 0:4787131a6a18 50 * // sw2
suupen 0:4787131a6a18 51 * // ----
suupen 0:4787131a6a18 52 * // p21 --------o o------------GND
suupen 0:4787131a6a18 53 * //
suupen 0:4787131a6a18 54 * //=============================================
suupen 0:4787131a6a18 55 *
suupen 0:4787131a6a18 56 *
suupen 1:356fb47220a0 57 * #include "mbed.h"
suupen 1:356fb47220a0 58 * #include "SwDigital.h"
suupen 0:4787131a6a18 59 *
suupen 1:356fb47220a0 60 * SwDigital sw(p20,p21); // p20 : sw1 control LED1,LED2
suupen 0:4787131a6a18 61 * // p21 : sw2 control LED3,LED4
suupen 0:4787131a6a18 62 *
suupen 1:356fb47220a0 63 * DigitalOut led1(LED1);
suupen 1:356fb47220a0 64 * DigitalOut led2(LED2);
suupen 1:356fb47220a0 65 * DigitalOut led3(LED3);
suupen 1:356fb47220a0 66 * DigitalOut led4(LED4);
suupen 0:4787131a6a18 67 *
suupen 1:356fb47220a0 68 * int main() {
suupen 0:4787131a6a18 69 * while(1) {
suupen 0:4787131a6a18 70 * // sw level and edge data refresh
suupen 2:af5fbc75b7bf 71 * sw.refreshEdgeData(); //@001
suupen 0:4787131a6a18 72 *
suupen 0:4787131a6a18 73 * // tact action (sw level = on : led1 = on)
suupen 0:4787131a6a18 74 * led1 = sw.checkLevel(0);
suupen 0:4787131a6a18 75 *
suupen 0:4787131a6a18 76 * // tact action (sw level = off : led2 = on)
suupen 0:4787131a6a18 77 * led2 = !sw.checkLevel(0);
suupen 0:4787131a6a18 78 *
suupen 0:4787131a6a18 79 * // toggle action (level Off to On)
suupen 0:4787131a6a18 80 * if(sw.checkEdgeOn(1) == 1){
suupen 0:4787131a6a18 81 * led3 = !led3;
suupen 0:4787131a6a18 82 * }
suupen 0:4787131a6a18 83 *
suupen 0:4787131a6a18 84 * // toggle action (level On to Off)
suupen 0:4787131a6a18 85 * if(sw.checkEdgeOff(1) == 1){
suupen 0:4787131a6a18 86 * led4 = !led4;
suupen 0:4787131a6a18 87 * }
suupen 0:4787131a6a18 88 * }
suupen 1:356fb47220a0 89 * }
suupen 0:4787131a6a18 90 *
suupen 0:4787131a6a18 91 * @endcode
suupen 0:4787131a6a18 92 */
suupen 0:4787131a6a18 93
suupen 0:4787131a6a18 94 class SwDigital {
suupen 0:4787131a6a18 95 public:
suupen 0:4787131a6a18 96
suupen 0:4787131a6a18 97 /** Create a sound object connected to the specified PwmOut pin & DigitalOut pin
suupen 0:4787131a6a18 98 *
suupen 0:4787131a6a18 99 * @param pin sw0 to sw19 : sw input pin
suupen 0:4787131a6a18 100 *
suupen 0:4787131a6a18 101 * sw can be set from 1 to 20.
suupen 0:4787131a6a18 102 * Recognition of the SW period is 10ms
suupen 0:4787131a6a18 103 */
suupen 0:4787131a6a18 104 SwDigital(PinName sw0 = NC, PinName sw1 = NC, PinName sw2 = NC, PinName sw3 = NC, PinName sw4 = NC,
suupen 0:4787131a6a18 105 PinName sw5 = NC, PinName sw6 = NC, PinName sw7 = NC, PinName sw8 = NC, PinName sw9 = NC,
suupen 0:4787131a6a18 106 PinName sw10 = NC, PinName sw11 = NC, PinName sw12 = NC, PinName sw13 = NC, PinName sw14 = NC,
suupen 0:4787131a6a18 107 PinName sw15 = NC, PinName sw16 = NC, PinName sw17 = NC, PinName sw18 = NC, PinName sw19 = NC
suupen 0:4787131a6a18 108 );
suupen 0:4787131a6a18 109
suupen 0:4787131a6a18 110 /** refresh edge data
suupen 0:4787131a6a18 111 *
suupen 0:4787131a6a18 112 * @param none
suupen 0:4787131a6a18 113 * @param return none
suupen 0:4787131a6a18 114 *
suupen 0:4787131a6a18 115 * main de edge data wo tukau maeni jiko suru
suupen 0:4787131a6a18 116 */
suupen 0:4787131a6a18 117 void refreshEdgeData(void);
suupen 0:4787131a6a18 118
suupen 0:4787131a6a18 119 /** Check Off to On edge
suupen 0:4787131a6a18 120 *
suupen 0:4787131a6a18 121 * @param uint8_t swNo : check swNo 0 to 19
suupen 0:4787131a6a18 122 * @param return uint8_t On edge check 0: edge Nasi 1: edge Ari
suupen 0:4787131a6a18 123 *
suupen 0:4787131a6a18 124 */
suupen 0:4787131a6a18 125 uint8_t checkEdgeOn(uint8_t swNo);
suupen 0:4787131a6a18 126
suupen 0:4787131a6a18 127 /** Check On to Off edge
suupen 0:4787131a6a18 128 *
suupen 0:4787131a6a18 129 * @param uint8_t swNo : check swNo 0 to 19
suupen 0:4787131a6a18 130 * @param return uint8_t Off edge check 0 : Nasi 1 : Ari
suupen 0:4787131a6a18 131 *
suupen 0:4787131a6a18 132 */
suupen 0:4787131a6a18 133 uint8_t checkEdgeOff(uint8_t swNo);
suupen 0:4787131a6a18 134
suupen 0:4787131a6a18 135 /** Check On to Off edge
suupen 0:4787131a6a18 136 *
suupen 0:4787131a6a18 137 * @param uint8_t swNo : check swNo 0 to 19
suupen 0:4787131a6a18 138 * @param return uint8_t sw level check 0 : Off 1 : On
suupen 0:4787131a6a18 139 *
suupen 0:4787131a6a18 140 */
suupen 0:4787131a6a18 141 uint8_t checkLevel(uint8_t swNo);
suupen 0:4787131a6a18 142
suupen 0:4787131a6a18 143 //protected:
suupen 0:4787131a6a18 144 private:
suupen 0:4787131a6a18 145 DigitalIn _sw0;
suupen 0:4787131a6a18 146 DigitalIn _sw1;
suupen 0:4787131a6a18 147 DigitalIn _sw2;
suupen 0:4787131a6a18 148 DigitalIn _sw3;
suupen 0:4787131a6a18 149 DigitalIn _sw4;
suupen 0:4787131a6a18 150
suupen 0:4787131a6a18 151 DigitalIn _sw5;
suupen 0:4787131a6a18 152 DigitalIn _sw6;
suupen 0:4787131a6a18 153 DigitalIn _sw7;
suupen 0:4787131a6a18 154 DigitalIn _sw8;
suupen 0:4787131a6a18 155 DigitalIn _sw9;
suupen 0:4787131a6a18 156
suupen 0:4787131a6a18 157 DigitalIn _sw10;
suupen 0:4787131a6a18 158 DigitalIn _sw11;
suupen 0:4787131a6a18 159 DigitalIn _sw12;
suupen 0:4787131a6a18 160 DigitalIn _sw13;
suupen 0:4787131a6a18 161 DigitalIn _sw14;
suupen 0:4787131a6a18 162
suupen 0:4787131a6a18 163 DigitalIn _sw15;
suupen 0:4787131a6a18 164 DigitalIn _sw16;
suupen 0:4787131a6a18 165 DigitalIn _sw17;
suupen 0:4787131a6a18 166 DigitalIn _sw18;
suupen 0:4787131a6a18 167 DigitalIn _sw19;
suupen 0:4787131a6a18 168
suupen 0:4787131a6a18 169 Ticker swCheckTimer;
suupen 0:4787131a6a18 170
suupen 0:4787131a6a18 171 void input(void);
suupen 0:4787131a6a18 172
suupen 0:4787131a6a18 173 #define Z_matchcycle (10000) // 10000[us](10[ms]) to 100000[us](100[ms]) 1[us]/count
suupen 0:4787131a6a18 174
suupen 0:4787131a6a18 175 uint8_t D_swSuu; // touroku sareta Sw Suu 1 to 20
suupen 0:4787131a6a18 176 #define Z_swSuuMax (20) // SW no saidai suu
suupen 0:4787131a6a18 177
suupen 0:4787131a6a18 178 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 179 // match number define
suupen 0:4787131a6a18 180 //#define Z_itchiPattern (0x03) // 2kai itch
suupen 0:4787131a6a18 181 #define Z_itchiPattern (0x07) // 3kai itchi
suupen 0:4787131a6a18 182 //#define Z_itchiPattern (0x0f) // 4kai itchi
suupen 0:4787131a6a18 183 //#define Z_itchiPattern (0x1f) // 5kai itchi
suupen 0:4787131a6a18 184 //#define Z_itchiPattern (0x3f) // 6kai itchi
suupen 0:4787131a6a18 185 //#define Z_itchiPattern (0x7f) // 7kai itchi
suupen 0:4787131a6a18 186 //#define Z_itchiPattern (0xff) // 8kai itchi
suupen 0:4787131a6a18 187
suupen 0:4787131a6a18 188 // sw level data
suupen 0:4787131a6a18 189 uint8_t D_nowLevel[Z_swSuuMax]; // saisin no kakutei Level 0:Off 1:On
suupen 0:4787131a6a18 190 uint8_t D_oldLevel[Z_swSuuMax]; // zenkai no kakutei Level 0:Off 1:On
suupen 0:4787131a6a18 191 #define Z_levelOff (0)
suupen 0:4787131a6a18 192 #define Z_levelOn (1)
suupen 0:4787131a6a18 193
suupen 0:4787131a6a18 194 // sw edge data
suupen 0:4787131a6a18 195 // swDigital.c naibu hensu
suupen 0:4787131a6a18 196 uint8_t B_edgeOn[Z_swSuuMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 197 uint8_t B_edgeOff[Z_swSuuMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 198 // user use hensu
suupen 0:4787131a6a18 199 uint8_t D_edgeOn[Z_swSuuMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 200 uint8_t D_edgeOff[Z_swSuuMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:4787131a6a18 201 #define Z_edgeNasi (0)
suupen 0:4787131a6a18 202 #define Z_edgeAri (1)
suupen 0:4787131a6a18 203
suupen 0:4787131a6a18 204
suupen 0:4787131a6a18 205
suupen 0:4787131a6a18 206
suupen 0:4787131a6a18 207 };
suupen 0:4787131a6a18 208
suupen 0:4787131a6a18 209 #endif // _SWDIGITAL_H