no thread

Dependents:   200_yotuba_21_uiChange

Committer:
THtakahiro702286
Date:
Sat Mar 06 07:26:14 2021 +0000
Revision:
5:f5d9f079d17d
Parent:
4:004bdb88ab3e
ir

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skouki 4:004bdb88ab3e 1 /**
skouki 4:004bdb88ab3e 2 * @file IRsensor.h
skouki 4:004bdb88ab3e 3 * @brief SHARP 2Y0A21を使ったIR距離測定
skouki 4:004bdb88ab3e 4 *
skouki 4:004bdb88ab3e 5 * Example :
skouki 4:004bdb88ab3e 6 * @code
skouki 4:004bdb88ab3e 7 * #include"mbed.h"
skouki 4:004bdb88ab3e 8 * #include"IRsensor.h"
skouki 4:004bdb88ab3e 9 *
skouki 4:004bdb88ab3e 10 * IRsensor ir1(PC_1);
skouki 4:004bdb88ab3e 11 *
skouki 4:004bdb88ab3e 12 * Serial pc(USBTX,USBRX,115200);
skouki 4:004bdb88ab3e 13 *
skouki 4:004bdb88ab3e 14 * int main()
skouki 4:004bdb88ab3e 15 * {
skouki 4:004bdb88ab3e 16 * ir1.startAveraging(255);
skouki 4:004bdb88ab3e 17 * while(1){
skouki 4:004bdb88ab3e 18 * float dis = ir1.getDistance();
skouki 4:004bdb88ab3e 19 * float ave_dis = ir1.get_Averagingdistance();
skouki 4:004bdb88ab3e 20 * pc.printf("dis:%4.4f[cm]||ave_dis:%4.4f[cm]\n\r",dis,ave_dis);
skouki 4:004bdb88ab3e 21 *
skouki 4:004bdb88ab3e 22 * }
skouki 4:004bdb88ab3e 23 * }
skouki 4:004bdb88ab3e 24 * @endcode
skouki 4:004bdb88ab3e 25 */
skouki 0:d0a252247fec 26
skouki 4:004bdb88ab3e 27 #ifndef IRSENSOR_H
THtakahiro702286 5:f5d9f079d17d 28 #define IRSENSOR_H
skouki 0:d0a252247fec 29
skouki 4:004bdb88ab3e 30 #include"mbed.h"
skouki 4:004bdb88ab3e 31
skouki 4:004bdb88ab3e 32 /**
skouki 4:004bdb88ab3e 33 * @brief SHARP 2Y0A21を使ったIR距離測定のクラス
skouki 4:004bdb88ab3e 34 */
skouki 0:d0a252247fec 35 class IRsensor{
skouki 0:d0a252247fec 36 public:
skouki 4:004bdb88ab3e 37 /**
skouki 4:004bdb88ab3e 38 * @brief コンストラクタ
skouki 4:004bdb88ab3e 39 * @param pin Pint that can do analogin
skouki 4:004bdb88ab3e 40 */
skouki 0:d0a252247fec 41 IRsensor(PinName pin);
skouki 4:004bdb88ab3e 42
skouki 4:004bdb88ab3e 43 /**
skouki 4:004bdb88ab3e 44 * @brief センサの値を取得
skouki 4:004bdb88ab3e 45 * @return voltage
skouki 4:004bdb88ab3e 46 */
skouki 4:004bdb88ab3e 47 float getVoltage();
skouki 4:004bdb88ab3e 48
skouki 4:004bdb88ab3e 49 /**
skouki 4:004bdb88ab3e 50 * @brief センサの値を距離変換し取得
skouki 4:004bdb88ab3e 51 * @return originaldistance
skouki 4:004bdb88ab3e 52 */
skouki 2:35b3dd6f7f17 53 float getDistance();
skouki 4:004bdb88ab3e 54
skouki 4:004bdb88ab3e 55 /**
skouki 4:004bdb88ab3e 56 * @brief 距離の平均化設定
skouki 4:004bdb88ab3e 57 * @param averaging_range averaging range 1~255
skouki 4:004bdb88ab3e 58 */
skouki 4:004bdb88ab3e 59 void startAveraging(uint8_t averaging_range);
skouki 4:004bdb88ab3e 60
skouki 4:004bdb88ab3e 61 /**
skouki 4:004bdb88ab3e 62 * @brief 平均化した距離を取得
skouki 4:004bdb88ab3e 63 * @return distance_average
skouki 4:004bdb88ab3e 64 */
skouki 2:35b3dd6f7f17 65 float get_Averagingdistance();
skouki 0:d0a252247fec 66
skouki 0:d0a252247fec 67 private:
skouki 2:35b3dd6f7f17 68 void threadloop_get_distance();
skouki 2:35b3dd6f7f17 69 void threadloop_averaging_distance();
skouki 2:35b3dd6f7f17 70 void compute_distance();
skouki 2:35b3dd6f7f17 71 void getInputvoltage();
skouki 2:35b3dd6f7f17 72 void changeVtoD();
skouki 2:35b3dd6f7f17 73 void computeaverage();
skouki 2:35b3dd6f7f17 74
skouki 2:35b3dd6f7f17 75 float voltage;
skouki 2:35b3dd6f7f17 76 float originaldistance;
skouki 2:35b3dd6f7f17 77 float* data;
skouki 2:35b3dd6f7f17 78 float distance_sum;
skouki 2:35b3dd6f7f17 79 float distance_average;
skouki 2:35b3dd6f7f17 80 uint8_t bufferSize;
skouki 2:35b3dd6f7f17 81 uint8_t bufferpoint;
skouki 2:35b3dd6f7f17 82 Thread thread_get_distance;
skouki 2:35b3dd6f7f17 83 Thread thread_averaging_distance;
skouki 0:d0a252247fec 84 AnalogIn a_in;
skouki 2:35b3dd6f7f17 85
skouki 0:d0a252247fec 86 };
skouki 0:d0a252247fec 87
skouki 0:d0a252247fec 88 #endif