mech / Mbed 2 deprecated line_trace3

Dependencies:   mbed

Committer:
isshikiyuya
Date:
Mon Dec 10 19:00:48 2018 +0000
Revision:
0:e0e5aa0ad906
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isshikiyuya 0:e0e5aa0ad906 1 #include "function.h"
isshikiyuya 0:e0e5aa0ad906 2
isshikiyuya 0:e0e5aa0ad906 3 PwmOut pwm11(D5); //左正転
isshikiyuya 0:e0e5aa0ad906 4 PwmOut pwm12(D1); //左逆転
isshikiyuya 0:e0e5aa0ad906 5 PwmOut pwm21(D6); //右正転
isshikiyuya 0:e0e5aa0ad906 6 PwmOut pwm22(D9); //右逆転
isshikiyuya 0:e0e5aa0ad906 7 DigitalOut LED(D2);
isshikiyuya 0:e0e5aa0ad906 8 InterruptIn button1(A1); //フォトインタラプタ
isshikiyuya 0:e0e5aa0ad906 9 InterruptIn button2(A2); //フォトインタラプタ
isshikiyuya 0:e0e5aa0ad906 10 AnalogIn in1(A6); //フォトリフレクタ左
isshikiyuya 0:e0e5aa0ad906 11 AnalogIn in2(A4); //フォトリフレクタ真ん中
isshikiyuya 0:e0e5aa0ad906 12 AnalogIn in3(A3); //フォトリフレクタ右
isshikiyuya 0:e0e5aa0ad906 13
isshikiyuya 0:e0e5aa0ad906 14 float thr1 = 0.40f;
isshikiyuya 0:e0e5aa0ad906 15 float thr2 = 0.60f;
isshikiyuya 0:e0e5aa0ad906 16 float thr3 = 0.40f;
isshikiyuya 0:e0e5aa0ad906 17 int judge1 = 0;
isshikiyuya 0:e0e5aa0ad906 18 int judge2 = 0;
isshikiyuya 0:e0e5aa0ad906 19 int judge3 = 0;
isshikiyuya 0:e0e5aa0ad906 20
isshikiyuya 0:e0e5aa0ad906 21 int main() {
isshikiyuya 0:e0e5aa0ad906 22 pwm11.period(0.01f); //100Hz
isshikiyuya 0:e0e5aa0ad906 23 pwm12.period(0.01f); //100Hz
isshikiyuya 0:e0e5aa0ad906 24 pwm21.period(0.01f); //100Hz
isshikiyuya 0:e0e5aa0ad906 25 pwm22.period(0.01f); //100Hz
isshikiyuya 0:e0e5aa0ad906 26 button1.rise(&flip1);
isshikiyuya 0:e0e5aa0ad906 27 button2.rise(&flip2);
isshikiyuya 0:e0e5aa0ad906 28 int n;//3biteで状態を表現
isshikiyuya 0:e0e5aa0ad906 29
isshikiyuya 0:e0e5aa0ad906 30 while(1) {
isshikiyuya 0:e0e5aa0ad906 31
isshikiyuya 0:e0e5aa0ad906 32 if( count1 + count2 > 43*2*12){ //200mm毎にLEDを点滅
isshikiyuya 0:e0e5aa0ad906 33 LED = 1.0f;
isshikiyuya 0:e0e5aa0ad906 34 wait(0.5f);
isshikiyuya 0:e0e5aa0ad906 35 LED = 0;
isshikiyuya 0:e0e5aa0ad906 36 count1 = 0;
isshikiyuya 0:e0e5aa0ad906 37 count2 = 0;
isshikiyuya 0:e0e5aa0ad906 38 }
isshikiyuya 0:e0e5aa0ad906 39 //////////////////floatのinをintのjudgeに変換
isshikiyuya 0:e0e5aa0ad906 40 if(in1 > thr1){
isshikiyuya 0:e0e5aa0ad906 41 judge1 = 1;
isshikiyuya 0:e0e5aa0ad906 42 }
isshikiyuya 0:e0e5aa0ad906 43 else{
isshikiyuya 0:e0e5aa0ad906 44 judge1 = 0;
isshikiyuya 0:e0e5aa0ad906 45 }
isshikiyuya 0:e0e5aa0ad906 46 if(in2 > thr2){
isshikiyuya 0:e0e5aa0ad906 47 judge2 = 1;
isshikiyuya 0:e0e5aa0ad906 48 }
isshikiyuya 0:e0e5aa0ad906 49 else{
isshikiyuya 0:e0e5aa0ad906 50 judge2 = 0;
isshikiyuya 0:e0e5aa0ad906 51 }
isshikiyuya 0:e0e5aa0ad906 52 if(in3 > thr3){
isshikiyuya 0:e0e5aa0ad906 53 judge3 = 1;
isshikiyuya 0:e0e5aa0ad906 54 }
isshikiyuya 0:e0e5aa0ad906 55 else{
isshikiyuya 0:e0e5aa0ad906 56 judge3 = 0;
isshikiyuya 0:e0e5aa0ad906 57 }
isshikiyuya 0:e0e5aa0ad906 58 /////////////////
isshikiyuya 0:e0e5aa0ad906 59 n = judge1 + judge2*2 + judge3*4;
isshikiyuya 0:e0e5aa0ad906 60 /* distance = (distance1 + distance2) / 2;
isshikiyuya 0:e0e5aa0ad906 61 if(ditance < 43*12*){
isshikiyuya 0:e0e5aa0ad906 62 */
isshikiyuya 0:e0e5aa0ad906 63 switch(n){
isshikiyuya 0:e0e5aa0ad906 64 case(2)://白黒白進む
isshikiyuya 0:e0e5aa0ad906 65 pwm11.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 66 pwm12.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 67 pwm21.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 68 pwm22.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 69 break;
isshikiyuya 0:e0e5aa0ad906 70
isshikiyuya 0:e0e5aa0ad906 71 case(0)://白白白
isshikiyuya 0:e0e5aa0ad906 72 pwm11.write(0.10f);
isshikiyuya 0:e0e5aa0ad906 73 pwm12.write(0.10f);
isshikiyuya 0:e0e5aa0ad906 74 pwm21.write(0.10f);
isshikiyuya 0:e0e5aa0ad906 75 pwm22.write(0.10f);
isshikiyuya 0:e0e5aa0ad906 76 break;
isshikiyuya 0:e0e5aa0ad906 77
isshikiyuya 0:e0e5aa0ad906 78
isshikiyuya 0:e0e5aa0ad906 79
isshikiyuya 0:e0e5aa0ad906 80 case(1)://黒白白左回転
isshikiyuya 0:e0e5aa0ad906 81 pwm11.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 82 pwm12.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 83 pwm21.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 84 pwm22.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 85 break;
isshikiyuya 0:e0e5aa0ad906 86
isshikiyuya 0:e0e5aa0ad906 87 case(4)://白白黒右回転
isshikiyuya 0:e0e5aa0ad906 88 pwm11.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 89 pwm12.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 90 pwm21.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 91 pwm22.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 92 break;
isshikiyuya 0:e0e5aa0ad906 93
isshikiyuya 0:e0e5aa0ad906 94 case(3)://黒黒白左回転
isshikiyuya 0:e0e5aa0ad906 95 pwm11.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 96 pwm12.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 97 pwm21.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 98 pwm22.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 99 break;
isshikiyuya 0:e0e5aa0ad906 100
isshikiyuya 0:e0e5aa0ad906 101 case(6)://白黒黒右回転
isshikiyuya 0:e0e5aa0ad906 102 pwm11.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 103 pwm12.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 104 pwm21.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 105 pwm22.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 106 break;
isshikiyuya 0:e0e5aa0ad906 107
isshikiyuya 0:e0e5aa0ad906 108 case(7)://黒黒黒走る
isshikiyuya 0:e0e5aa0ad906 109 pwm11.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 110 pwm12.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 111 pwm21.write(0.60f);
isshikiyuya 0:e0e5aa0ad906 112 pwm22.write(0.30f);
isshikiyuya 0:e0e5aa0ad906 113 break;
isshikiyuya 0:e0e5aa0ad906 114
isshikiyuya 0:e0e5aa0ad906 115 default://それ以外(ないけど)
isshikiyuya 0:e0e5aa0ad906 116 pwm11.write(0.00f);
isshikiyuya 0:e0e5aa0ad906 117 pwm12.write(0.00f);
isshikiyuya 0:e0e5aa0ad906 118 pwm21.write(0.00f);
isshikiyuya 0:e0e5aa0ad906 119 pwm22.write(0.00f);
isshikiyuya 0:e0e5aa0ad906 120 break;
isshikiyuya 0:e0e5aa0ad906 121
isshikiyuya 0:e0e5aa0ad906 122 }
isshikiyuya 0:e0e5aa0ad906 123 }
isshikiyuya 0:e0e5aa0ad906 124 }