アナログポート から スイッチを3つ認識するライブラリです。 6つのアナログポートを同時に認識して、18個のSWまで認識できます。
Dependents: kitchenTimer LPC1114FN28_kitchenTimer_Clock
SwAnalog.h@0:ba027616fdf1, 2012-02-12 (annotated)
- 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?
User | Revision | Line number | New 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 |