changed from gpio_init(...PIN_OUTPUT) to gpio_init_out() because gpio_init(...PIN_OUTPUT) is a compiler error
Fork of TouchSense by
gpio_init(&gpio, mypin, PIN_OUTPUT); がコンパイルエラーになるので gpio_init_out(&gpio, mypin); に書き換えました。
TouchSense.h
- Committer:
- jk1lot
- Date:
- 2016-06-05
- Revision:
- 2:c52da3487c31
- Parent:
- 1:08658b9787d8
File content as of revision 2:c52da3487c31:
/* mbed Microcontroller Library * Copyright (c) 2013 Shinichiro Nakamura * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef TOUCHSENSE_H #define TOUCHSENSE_H #include "platform.h" #include "gpio_api.h" #include "analogin_api.h" namespace mbed { /** * A capacitive touch sensor using analog input port. * * Example: * @code * #include "mbed.h" * * TouchSense tp(p18); * * int main() { * tp.calibration(); * while(1) { * if (tp.sense()) { * printf("ON\r\n"); * } else { * printf("OFF\r\n"); * } * wait(0.1); * } * } * @endcode */ class TouchSense { public: /** * Create a TouchSense connected to the specified pin * * @param pin TouchSense pin to connect to * @param thr Threshold (1 to 20) */ TouchSense(PinName pin, int thr = 10) : mypin(pin), calval(0) { for (int i = 0; i < DATA_COUNT; i++) { data[i] = 0; } if (thr < THRMIN) { thr = THRMIN; } if (thr > THRMAX) { thr = THRMAX; } threshold = thr; execute(); } void calibration() { uint32_t r = 0; for (int i = 0; i < DATA_COUNT; i++) { r += execute(); wait_us(100); } r = r / DATA_COUNT; calval = r; } bool sense() { data[index] = execute(); index = (index + 1) % DATA_COUNT; uint32_t r = 0; for (int i = 0; i < DATA_COUNT; i++) { r += data[i]; } r = r / DATA_COUNT; return (calval * threshold) < r; } private: uint16_t execute() { uint16_t r; analogin_init(&adc, mypin); r = analogin_read_u16(&adc) >> 4; gpio_init_out(&gpio, mypin); gpio_write(&gpio, 1); return r; } protected: PinName mypin; uint16_t calval; gpio_t gpio; analogin_t adc; static const int DATA_COUNT = 8; uint32_t data[DATA_COUNT]; int index; int threshold; static const int THRMIN = 1; static const int THRMAX = 20; }; } // namespace mbed #endif