アナログポート から スイッチを3つ認識するライブラリです。 6つのアナログポートを同時に認識して、18個のSWまで認識できます。

Dependents:   kitchenTimer LPC1114FN28_kitchenTimer_Clock

Committer:
suupen
Date:
Sun Feb 12 00:50:23 2012 +0000
Revision:
0:ba027616fdf1
Child:
1:ebaa87e67cef
2012/02/12 : V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:ba027616fdf1 1 /* SwAnalog Library
suupen 0:ba027616fdf1 2 * Copyright (c) 2012 suupen
suupen 0:ba027616fdf1 3 *
suupen 0:ba027616fdf1 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
suupen 0:ba027616fdf1 5 * of this software and associated documentation files (the "Software"), to deal
suupen 0:ba027616fdf1 6 * in the Software without restriction, including without limitation the rights
suupen 0:ba027616fdf1 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
suupen 0:ba027616fdf1 8 * copies of the Software, and to permit persons to whom the Software is
suupen 0:ba027616fdf1 9 * furnished to do so, subject to the following conditions:
suupen 0:ba027616fdf1 10 *
suupen 0:ba027616fdf1 11 * The above copyright notice and this permission notice shall be included in
suupen 0:ba027616fdf1 12 * all copies or substantial portions of the Software.
suupen 0:ba027616fdf1 13 *
suupen 0:ba027616fdf1 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
suupen 0:ba027616fdf1 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
suupen 0:ba027616fdf1 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
suupen 0:ba027616fdf1 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
suupen 0:ba027616fdf1 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
suupen 0:ba027616fdf1 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
suupen 0:ba027616fdf1 20 * THE SOFTWARE.
suupen 0:ba027616fdf1 21 */
suupen 0:ba027616fdf1 22
suupen 0:ba027616fdf1 23 /***********************************************************************/
suupen 0:ba027616fdf1 24 /* */
suupen 0:ba027616fdf1 25 /* SwAnalog.h */
suupen 0:ba027616fdf1 26 /* */
suupen 0:ba027616fdf1 27 /* */
suupen 0:ba027616fdf1 28 /* 2012/02/12 : V1.0 */
suupen 0:ba027616fdf1 29 /***********************************************************************/
suupen 0:ba027616fdf1 30 #ifndef _SWANALOG_H
suupen 0:ba027616fdf1 31 #define _SWANALOG_H
suupen 0:ba027616fdf1 32
suupen 0:ba027616fdf1 33 #include "mbed.h"
suupen 0:ba027616fdf1 34
suupen 0:ba027616fdf1 35 /** SWANALOG control class, based on a "mbed function"
suupen 0:ba027616fdf1 36 *
suupen 0:ba027616fdf1 37 * Example:
suupen 0:ba027616fdf1 38 * @code
suupen 0:ba027616fdf1 39 * //********************************************************************
suupen 0:ba027616fdf1 40 * // SwAnalogInput Library example program
suupen 0:ba027616fdf1 41 * // mbed no analog port de 3hon no sw wo ninsiki suru.
suupen 0:ba027616fdf1 42 * // 6hon no analog port (p15 - p20) de 6 * 3 = 18 ko no sw ninsiki ga dekiru.
suupen 0:ba027616fdf1 43 * //
suupen 0:ba027616fdf1 44 * // <schematic>
suupen 0:ba027616fdf1 45 * // -.- mbed VOUT(+3.3[V])
suupen 0:ba027616fdf1 46 * // | |--------------------> mbed p20(ADinput)
suupen 0:ba027616fdf1 47 * // | --------- --------- --------- | ---------
suupen 0:ba027616fdf1 48 * // .---| Rsw2 |---.---| Rsw1 |---.---| Rsw0 |---.---| Rout |----|
suupen 0:ba027616fdf1 49 * // | --------- | --------- | --------- | --------- |
suupen 0:ba027616fdf1 50 * // | ---- | ----- | ----- | |
suupen 0:ba027616fdf1 51 * // |-----o o------.-----o o------.-----o o------| -----
suupen 0:ba027616fdf1 52 * // SW2 SW1 SW0 mbed GND(0[V])
suupen 0:ba027616fdf1 53 * //
suupen 0:ba027616fdf1 54 * // Rsw2 : 8.2[kohm], Rsw1 = 3.9[kohm], Rsw0 = 2.0[kohm], Rout = 1.0[kohm] (R no seido ha +-1[%])
suupen 0:ba027616fdf1 55 * //
suupen 0:ba027616fdf1 56 * // <program no naiyo>
suupen 0:ba027616fdf1 57 * // mbed LED1 : sw0 no level de tento sw Off = led Off, sw On = led On
suupen 0:ba027616fdf1 58 * // mbed LED2 : sw1 no level de tento sw Off = led Off, sw On = led On
suupen 0:ba027616fdf1 59 * // mbed LED3 : sw2 no level de tento sw Off = led Off, sw On = led On
suupen 0:ba027616fdf1 60 * // mbed LED4 : sw0,sw1,sw2 no Off kara On henka de led tento jotai wo hanten.
suupen 0:ba027616fdf1 61 * //
suupen 0:ba027616fdf1 62 * //
suupen 0:ba027616fdf1 63 * // <rireki>
suupen 0:ba027616fdf1 64 * // 2012/02/12 : syohan
suupen 0:ba027616fdf1 65 * // *********************************************************************
suupen 0:ba027616fdf1 66 *
suupen 0:ba027616fdf1 67 * #include "mbed.h"
suupen 0:ba027616fdf1 68 * #include "SwAnalog.h"
suupen 0:ba027616fdf1 69 *
suupen 0:ba027616fdf1 70 * DigitalOut led1(LED1);
suupen 0:ba027616fdf1 71 * DigitalOut led2(LED2);
suupen 0:ba027616fdf1 72 * DigitalOut led3(LED3);
suupen 0:ba027616fdf1 73 * DigitalOut led4(LED4);
suupen 0:ba027616fdf1 74 *
suupen 0:ba027616fdf1 75 * SwAnalog sw(p20); // p20(adinput) :sw0,sw1,sw2
suupen 0:ba027616fdf1 76 *
suupen 0:ba027616fdf1 77 * int main() {
suupen 0:ba027616fdf1 78 * while(1) {
suupen 0:ba027616fdf1 79 * // sw level and edge data refresh
suupen 0:ba027616fdf1 80 * sw.refreshEdgeData();
suupen 0:ba027616fdf1 81 *
suupen 0:ba027616fdf1 82 * // tact action (sw0 level = on : led1 = on)
suupen 0:ba027616fdf1 83 * led1 = sw.checkLevel(0);
suupen 0:ba027616fdf1 84 *
suupen 0:ba027616fdf1 85 * // tact action (sw1 level = off : led2 = on)
suupen 0:ba027616fdf1 86 * led2 = sw.checkLevel(1);
suupen 0:ba027616fdf1 87 *
suupen 0:ba027616fdf1 88 * // tact action (sw2 level = off : led3 = on)
suupen 0:ba027616fdf1 89 * led3 = sw.checkLevel(2);
suupen 0:ba027616fdf1 90 *
suupen 0:ba027616fdf1 91 * // toggle action (sw0 to sw3 level Off to On : led4 invert )
suupen 0:ba027616fdf1 92 * if((sw.checkEdgeOn(0) == 1) // sw0
suupen 0:ba027616fdf1 93 * || (sw.checkEdgeOn(1) == 1) // sw1
suupen 0:ba027616fdf1 94 * || (sw.checkEdgeOn(2) == 1) // sw2
suupen 0:ba027616fdf1 95 * ){
suupen 0:ba027616fdf1 96 * led4 = !led4;
suupen 0:ba027616fdf1 97 * }
suupen 0:ba027616fdf1 98 * }
suupen 0:ba027616fdf1 99 * }
suupen 0:ba027616fdf1 100 * @endcode
suupen 0:ba027616fdf1 101 */
suupen 0:ba027616fdf1 102
suupen 0:ba027616fdf1 103 class SwAnalog {
suupen 0:ba027616fdf1 104 public:
suupen 0:ba027616fdf1 105
suupen 0:ba027616fdf1 106 /** Create a sw analog input object connected to the specified analog Input pin
suupen 0:ba027616fdf1 107 *
suupen 0:ba027616fdf1 108 * @param PinName adinput0 : analog input pin(pin15 to pin20) : sw0 kara sw2 no ninsiki
suupen 0:ba027616fdf1 109 * @param PinName adinput1 : analog input pin(pin15 to pin20) : sw3 kara sw5 no ninsiki
suupen 0:ba027616fdf1 110 * @param PinName adinput2 : analog input pin(pin15 to pin20) : sw6 kara sw8 no ninsiki
suupen 0:ba027616fdf1 111 * @param PinName adinput3 : analog input pin(pin15 to pin20) : sw9 kara sw11 no ninsiki
suupen 0:ba027616fdf1 112 * @param PinName adinput4 : analog input pin(pin15 to pin20) : sw12 kara sw14 no ninsiki
suupen 0:ba027616fdf1 113 * @param PinName adinput5 : analog input pin(pin15 to pin20) : sw15 kara sw17 no ninsiki
suupen 0:ba027616fdf1 114 *
suupen 0:ba027616fdf1 115 * Recognition of the SW period is 10ms
suupen 0:ba027616fdf1 116 */
suupen 0:ba027616fdf1 117 SwAnalog(PinName adinput0 = NC, PinName adinput1 = NC, PinName adinput2 = NC, PinName adinput3 = NC, PinName adinput4 = NC,
suupen 0:ba027616fdf1 118 PinName adinput5 = NC
suupen 0:ba027616fdf1 119 );
suupen 0:ba027616fdf1 120
suupen 0:ba027616fdf1 121 /** refresh edge data
suupen 0:ba027616fdf1 122 *
suupen 0:ba027616fdf1 123 * @param none
suupen 0:ba027616fdf1 124 * @param return none
suupen 0:ba027616fdf1 125 *
suupen 0:ba027616fdf1 126 * main de edge data wo tukau maeni jiko suru
suupen 0:ba027616fdf1 127 */
suupen 0:ba027616fdf1 128 void refreshEdgeData(void);
suupen 0:ba027616fdf1 129
suupen 0:ba027616fdf1 130 /** Check Off to On edge
suupen 0:ba027616fdf1 131 *
suupen 0:ba027616fdf1 132 * @param uint8_t swNo : 0:sw0, 1:sw1, ... ,17:sw17
suupen 0:ba027616fdf1 133 * @param return uint8_t On edge check 0: edge Nasi 1: edge Ari
suupen 0:ba027616fdf1 134 *
suupen 0:ba027616fdf1 135 */
suupen 0:ba027616fdf1 136 uint8_t checkEdgeOn(uint8_t swNo);
suupen 0:ba027616fdf1 137
suupen 0:ba027616fdf1 138 /** Check On to Off edge
suupen 0:ba027616fdf1 139 *
suupen 0:ba027616fdf1 140 * @param uint8_t swNo : 0:sw0, 1:sw1, ... ,17:sw17
suupen 0:ba027616fdf1 141 * @param return uint8_t Off edge check 0 : Nasi 1 : Ari
suupen 0:ba027616fdf1 142 *
suupen 0:ba027616fdf1 143 */
suupen 0:ba027616fdf1 144 uint8_t checkEdgeOff(uint8_t swNo);
suupen 0:ba027616fdf1 145
suupen 0:ba027616fdf1 146 /** Check sw Level
suupen 0:ba027616fdf1 147 *
suupen 0:ba027616fdf1 148 * @param uint8_t swNo : 0:sw0, 1:sw1, ... ,17:sw17
suupen 0:ba027616fdf1 149 * @param return uint8_t sw level check 0 : Off 1 : On
suupen 0:ba027616fdf1 150 *
suupen 0:ba027616fdf1 151 */
suupen 0:ba027616fdf1 152 uint8_t checkLevel(uint8_t swNo);
suupen 0:ba027616fdf1 153
suupen 0:ba027616fdf1 154 /** SW Number call name
suupen 0:ba027616fdf1 155 *
suupen 0:ba027616fdf1 156 * @param adinput0 : Z_sw1 to Z_sw3
suupen 0:ba027616fdf1 157 * @param adinput1 : Z_sw4 to Z_sw6
suupen 0:ba027616fdf1 158 * @param ....
suupen 0:ba027616fdf1 159 * @param adinput5 : Z_sw16 tp Z_sw18
suupen 0:ba027616fdf1 160 */
suupen 0:ba027616fdf1 161 enum{
suupen 0:ba027616fdf1 162 Z_sw0, // adinput1 no sw
suupen 0:ba027616fdf1 163 Z_sw1,
suupen 0:ba027616fdf1 164 Z_sw2,
suupen 0:ba027616fdf1 165
suupen 0:ba027616fdf1 166 Z_sw3, // adinput2 no sw
suupen 0:ba027616fdf1 167 Z_sw4,
suupen 0:ba027616fdf1 168 Z_sw5,
suupen 0:ba027616fdf1 169
suupen 0:ba027616fdf1 170 Z_sw6, // adinput3 no sw
suupen 0:ba027616fdf1 171 Z_sw7,
suupen 0:ba027616fdf1 172 Z_sw8,
suupen 0:ba027616fdf1 173
suupen 0:ba027616fdf1 174 Z_sw9, // adinput4 no sw
suupen 0:ba027616fdf1 175 Z_sw10,
suupen 0:ba027616fdf1 176 Z_sw11,
suupen 0:ba027616fdf1 177
suupen 0:ba027616fdf1 178 Z_sw12, // adinput5 no sw
suupen 0:ba027616fdf1 179 Z_sw13,
suupen 0:ba027616fdf1 180 Z_sw14,
suupen 0:ba027616fdf1 181
suupen 0:ba027616fdf1 182 Z_sw15, // adinput6 no sw
suupen 0:ba027616fdf1 183 Z_sw16,
suupen 0:ba027616fdf1 184 Z_sw17
suupen 0:ba027616fdf1 185 };
suupen 0:ba027616fdf1 186
suupen 0:ba027616fdf1 187 //protected:
suupen 0:ba027616fdf1 188 private:
suupen 0:ba027616fdf1 189 AnalogIn _adinput0;
suupen 0:ba027616fdf1 190 AnalogIn _adinput1;
suupen 0:ba027616fdf1 191 AnalogIn _adinput2;
suupen 0:ba027616fdf1 192 AnalogIn _adinput3;
suupen 0:ba027616fdf1 193 AnalogIn _adinput4;
suupen 0:ba027616fdf1 194
suupen 0:ba027616fdf1 195 AnalogIn _adinput5;
suupen 0:ba027616fdf1 196
suupen 0:ba027616fdf1 197
suupen 0:ba027616fdf1 198 Ticker swCheckTimer;
suupen 0:ba027616fdf1 199
suupen 0:ba027616fdf1 200 void input(void);
suupen 0:ba027616fdf1 201
suupen 0:ba027616fdf1 202 #define Z_matchcycle (10000) // 10000[us](10[ms]) to 100000[us](100[ms]) 1[us]/count
suupen 0:ba027616fdf1 203
suupen 0:ba027616fdf1 204 uint8_t D_swPinSuu; // touroku sareta Sw Pin Suu 1 to Z_swPinSuuMax
suupen 0:ba027616fdf1 205 #define Z_swPinSuuMax (6) // SW warituke pin suu max
suupen 0:ba027616fdf1 206 #define Z_swInNoMax (3) // 1pin atari no sw setuzoku suu (1pin ni 3ko no sw setuzoku)
suupen 0:ba027616fdf1 207
suupen 0:ba027616fdf1 208 uint8_t B_kariLevel[Z_swPinSuuMax * Z_swInNoMax]; // kakutei mae no ninsiki Level 0bit:saisin(t) 1bit:t-1, ... ,7bit:t-7 0:Off 1:On
suupen 0:ba027616fdf1 209 // match number define
suupen 0:ba027616fdf1 210 //#define Z_itchiPattern (0x03) // 2kai itch
suupen 0:ba027616fdf1 211 #define Z_itchiPattern (0x07) // 3kai itchi
suupen 0:ba027616fdf1 212 //#define Z_itchiPattern (0x0f) // 4kai itchi
suupen 0:ba027616fdf1 213 //#define Z_itchiPattern (0x1f) // 5kai itchi
suupen 0:ba027616fdf1 214 //#define Z_itchiPattern (0x3f) // 6kai itchi
suupen 0:ba027616fdf1 215 //#define Z_itchiPattern (0x7f) // 7kai itchi
suupen 0:ba027616fdf1 216 //#define Z_itchiPattern (0xff) // 8kai itchi
suupen 0:ba027616fdf1 217
suupen 0:ba027616fdf1 218 // sw level data
suupen 0:ba027616fdf1 219 uint8_t D_nowLevel[Z_swPinSuuMax * Z_swInNoMax]; // saisin no kakutei Level 0:Off 1:On
suupen 0:ba027616fdf1 220 uint8_t D_oldLevel[Z_swPinSuuMax * Z_swInNoMax]; // zenkai no kakutei Level 0:Off 1:On
suupen 0:ba027616fdf1 221 #define Z_levelOff (0)
suupen 0:ba027616fdf1 222 #define Z_levelOn (1)
suupen 0:ba027616fdf1 223
suupen 0:ba027616fdf1 224 // sw edge data
suupen 0:ba027616fdf1 225 // swDigital.c naibu hensu
suupen 0:ba027616fdf1 226 uint8_t B_edgeOn[Z_swPinSuuMax * Z_swInNoMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 227 uint8_t B_edgeOff[Z_swPinSuuMax * Z_swInNoMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 228 // user use hensu
suupen 0:ba027616fdf1 229 uint8_t D_edgeOn[Z_swPinSuuMax * Z_swInNoMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 230 uint8_t D_edgeOff[Z_swPinSuuMax * Z_swInNoMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 231 #define Z_edgeNasi (0)
suupen 0:ba027616fdf1 232 #define Z_edgeAri (1)
suupen 0:ba027616fdf1 233
suupen 0:ba027616fdf1 234 //------------------
suupen 0:ba027616fdf1 235 // Resistor network
suupen 0:ba027616fdf1 236 //------------------
suupen 0:ba027616fdf1 237
suupen 0:ba027616fdf1 238 // -.- mbed VOUT(+3.3[V])
suupen 0:ba027616fdf1 239 // | |--------------------> mbed p15 - p20(analog port)
suupen 0:ba027616fdf1 240 // | --------- --------- --------- | ---------
suupen 0:ba027616fdf1 241 // .---| Rsw2 |---.---| Rsw1 |---.---| Rsw0 |---.---| Rout |----|
suupen 0:ba027616fdf1 242 // | --------- | --------- | --------- | --------- |
suupen 0:ba027616fdf1 243 // | ---- | ----- | ----- | |
suupen 0:ba027616fdf1 244 // |-----o o------.-----o o------.-----o o------| -----
suupen 0:ba027616fdf1 245 // SW2 SW1 SW0 mbed GND(0[V])
suupen 0:ba027616fdf1 246 //
suupen 0:ba027616fdf1 247 // | |
suupen 0:ba027616fdf1 248 // |<----------------------- Rall --------------------------------->|
suupen 0:ba027616fdf1 249 // | | |
suupen 0:ba027616fdf1 250 // ----> Z_R0 to Z_R7
suupen 0:ba027616fdf1 251
suupen 0:ba027616fdf1 252
suupen 0:ba027616fdf1 253 #define Z_Rsw2 (8200.0F) // SW2 no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 254 #define Z_Rsw1 (3900.0F) // SW1 no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 255 #define Z_Rsw0 (2000.0F) // adinput1 no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 256 #define Z_Rout (1000.0F) // Vout no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 257 //Z_Rsw2,Z_Rsw1,Z_Rsw0,Z_Rout niwa +-1[%]no seido no teiko wo tukau koto
suupen 0:ba027616fdf1 258
suupen 0:ba027616fdf1 259 #define Z_gosaMax (1.020F) // Z_Rout(max) / Z_Rx(min) = (Z_Rout * 1.01) / (Z_Rx * 0.99) = (Z_Rout / Z_Rx) * 1.020
suupen 0:ba027616fdf1 260 #define Z_gosaMin (0.990F) // Z_Rout(min) / Z_Rx(max) = (Z_Rout * 0.99) / (Z_Rx * 1.01) = (Z_Rout / Z_Rx) * 0.980
suupen 0:ba027616fdf1 261
suupen 0:ba027616fdf1 262 // Rall keisanchi
suupen 0:ba027616fdf1 263 // SW2 SW1 SW0
suupen 0:ba027616fdf1 264 #define Z_R0 ((Z_Rsw2 + Z_Rsw1 + Z_Rsw0 + Z_Rout)) // OFF OFF OFF
suupen 0:ba027616fdf1 265 #define Z_R1 ((Z_Rsw2 + Z_Rsw1 + 0 + Z_Rout)) // OFF OFF ON
suupen 0:ba027616fdf1 266 #define Z_R2 ((Z_Rsw2 + 0 + Z_Rsw0 + Z_Rout)) // OFF ON OFF
suupen 0:ba027616fdf1 267 #define Z_R3 ((Z_Rsw2 + 0 + 0 + Z_Rout)) // OFF ON ON
suupen 0:ba027616fdf1 268 #define Z_R4 ((0 + Z_Rsw1 + Z_Rsw0 + Z_Rout)) // ON OFF OFF
suupen 0:ba027616fdf1 269 #define Z_R5 ((0 + Z_Rsw1 + 0 + Z_Rout)) // ON OFF ON
suupen 0:ba027616fdf1 270 #define Z_R6 ((0 + 0 + Z_Rsw0 + Z_Rout)) // ON ON OFF
suupen 0:ba027616fdf1 271 #define Z_R7 ((0 + 0 + 0 + Z_Rout)) // ON ON ON
suupen 0:ba027616fdf1 272
suupen 0:ba027616fdf1 273 // Rout : Rall (max , min)
suupen 0:ba027616fdf1 274 #define Z_R0max (((Z_Rout * Z_gosaMax) / Z_R0))
suupen 0:ba027616fdf1 275 #define Z_R0min (((Z_Rout * Z_gosaMin) / Z_R0))
suupen 0:ba027616fdf1 276 #define Z_R1max (((Z_Rout * Z_gosaMax) / Z_R1))
suupen 0:ba027616fdf1 277 #define Z_R1min (((Z_Rout * Z_gosaMin) / Z_R1))
suupen 0:ba027616fdf1 278 #define Z_R2max (((Z_Rout * Z_gosaMax) / Z_R2))
suupen 0:ba027616fdf1 279 #define Z_R2min (((Z_Rout * Z_gosaMin) / Z_R2))
suupen 0:ba027616fdf1 280 #define Z_R3max (((Z_Rout * Z_gosaMax) / Z_R3))
suupen 0:ba027616fdf1 281 #define Z_R3min (((Z_Rout * Z_gosaMin) / Z_R3))
suupen 0:ba027616fdf1 282 #define Z_R4max (((Z_Rout * Z_gosaMax) / Z_R4))
suupen 0:ba027616fdf1 283 #define Z_R4min (((Z_Rout * Z_gosaMin) / Z_R4))
suupen 0:ba027616fdf1 284 #define Z_R5max (((Z_Rout * Z_gosaMax) / Z_R5))
suupen 0:ba027616fdf1 285 #define Z_R5min (((Z_Rout * Z_gosaMin) / Z_R5))
suupen 0:ba027616fdf1 286 #define Z_R6max (((Z_Rout * Z_gosaMax) / Z_R6))
suupen 0:ba027616fdf1 287 #define Z_R6min (((Z_Rout * Z_gosaMin) / Z_R6))
suupen 0:ba027616fdf1 288 #define Z_R7max (((Z_Rout * Z_gosaMax) / Z_R7))
suupen 0:ba027616fdf1 289 #define Z_R7min (((Z_Rout * Z_gosaMin) / Z_R7))
suupen 0:ba027616fdf1 290
suupen 0:ba027616fdf1 291 // threshold lvevel
suupen 0:ba027616fdf1 292 // GND(0[V]) -> 0_1 -> 1_2 -> 2_3 -> 3_4 -> 4_5 -> 5_6 -> 6_7 -> Vcc(3.3[V])
suupen 0:ba027616fdf1 293 // --------------+------+------+------+------+------+------+---------------
suupen 0:ba027616fdf1 294 // SW0 | OFF ON OFF ON OFF ON OFF ON
suupen 0:ba027616fdf1 295 // SW1 | OFF OFF ON ON OFF OFF ON ON
suupen 0:ba027616fdf1 296 // SW2 | OFF OFF OFF OFF ON ON ON ON
suupen 0:ba027616fdf1 297
suupen 0:ba027616fdf1 298 #define Z_threshold0_1 (((Z_R0max + Z_R1min) / 2))
suupen 0:ba027616fdf1 299 #define Z_threshold1_2 (((Z_R1max + Z_R2min) / 2))
suupen 0:ba027616fdf1 300 #define Z_threshold2_3 (((Z_R2max + Z_R3min) / 2))
suupen 0:ba027616fdf1 301 #define Z_threshold3_4 (((Z_R3max + Z_R4min) / 2))
suupen 0:ba027616fdf1 302 #define Z_threshold4_5 (((Z_R4max + Z_R5min) / 2))
suupen 0:ba027616fdf1 303 #define Z_threshold5_6 (((Z_R5max + Z_R6min) / 2))
suupen 0:ba027616fdf1 304 #define Z_threshold6_7 (((Z_R6max + Z_R7min) / 2))
suupen 0:ba027616fdf1 305
suupen 0:ba027616fdf1 306 void adInput(float ad, uint8_t swInNo);
suupen 0:ba027616fdf1 307
suupen 0:ba027616fdf1 308 };
suupen 0:ba027616fdf1 309
suupen 0:ba027616fdf1 310 #endif // _SWANALOG_H