da

Dependencies:   mbed TrapezoidControl QEI

Revision:
11:028a150943b5
Parent:
10:1295d39fec3a
Child:
12:c09b3e08a316
diff -r 1295d39fec3a -r 028a150943b5 System/Process/Process.cpp
--- a/System/Process/Process.cpp	Fri Oct 05 12:17:21 2018 +0000
+++ b/System/Process/Process.cpp	Sat Oct 06 08:30:58 2018 +0000
@@ -42,23 +42,6 @@
 
 Serial pc(USBTX, USBRX);
 
-unsigned long ColorIn(int index)
-{
-	int result = 0;
-	bool rtn = false;
-    for(int i=0; i<12; i++)
-    {
-        CK[index] = 1;
-        rtn = DOUT[index];
-        CK[index] = 0;
-        if(rtn)
-        {
-           result|=(1 << i);
-        }
-    }
-    return result;
-}
-
 #define TIRE_FR 0 //足回り前右
 #define TIRE_FL 1 //足回り前左
 #define TIRE_BR 2 //足回り後右
@@ -73,6 +56,8 @@
 #define Lim_L  1 //センター左
 #define EMS_0  LimitSw::IsPressed(8) 
 #define EMS_1  LimitSw::IsPressed(9)
+#define LS     LimitSw::IsPressed(7) //赤ゾーン用スイッチ
+#define BS     LimitSw::IsPressed(6) //青ゾーン用スイッチ
 //************メカナム********************
 
 const int mecanum[15][15]=
@@ -118,6 +103,22 @@
 int Color_D[3];         
 int intergration = 50;
 
+unsigned long ColorIn(int index)
+{
+	int result = 0;
+	bool rtn = false;
+    for(int i=0; i<12; i++)
+    {
+        CK[index] = 1;
+        rtn = DOUT[index];
+        CK[index] = 0;
+        if(rtn)
+        {
+           result|=(1 << i);
+        }
+    }
+    return result;
+}
 void ColorDetection();
 
 //************カラーセンサ********************
@@ -163,21 +164,30 @@
 //************ジャイロ*******************
 
 bool Angle_flagI = false;
-float Angle;
+int Angle;
 PID gyro = PID(0.03, -150 , 150 , 8 , 0.03, 0);
-
 float rotateY;
-int AngletargetX = 18;
-int AngletargetY = -35;
+//初期値 -5
+int AngletargetX = 4; 
+int AngletargetY = -12;
 int Angle_I = -5;
 //************ジャイロ*******************
 
 //************Buzzer******************
-DigitalOut buzzer(BUZZER_PIN);
+//DigitalOut buzzer(BUZZER_PIN);
+PwmOut buzzer(BUZZER_PIN);
 void BuzzerTimer_func();
 Ticker BuzzerTimer;
 bool Emsflag = false;
 //************Buzzer******************
+
+//************TapeLed*****************
+void TapeLedEms_func();
+TapeLedData tapeLED;
+TapeLedData sendLedData;
+TapeLED_Mode ledMode = Normal;
+Ticker tapeLedTimer;
+//************TapaLed*****************
 #pragma endregion USER-DEFINED_VARIABLES_AND_PROTOTYPE
 
 #ifdef USE_SUBPROCESS
@@ -216,10 +226,10 @@
 void SystemProcessInitialize()
 {
 	#pragma region USER-DEFINED_VARIABLE_INIT
+	/*Replace here with the initialization code of your variables.*/
 	get_rpm.attach_us(&filip,100);
+	buzzer.period(1.0/800);
 	
-	/*Replace here with the initialization code of your variables.*/
-
 	#pragma endregion USER-DEFINED_VARIABLE_INIT
 
 	lock = true;
@@ -302,65 +312,6 @@
 
 	while(1)
 	{ 
-	/*get_rpm.attach_us(&filip,1000);
-	
-	disX = 48*3.141592*rpmX;
-	disY = 48*3.141592*rpmY;
-	
-	RtpwmX = Rt_X.SetPV(disX , goalX);
-	RtpwmY = Rt_Y.SetPV(disY , goalY);
-	
-	if(controller->Button.B){
-	Rt_flagX = true;
-	}
-	Rt_flagY = true;
-	if (Rt_flagY){
-		motor[TIRE_FR].dir = SetStatus(RtpwmY);
-		motor[TIRE_FL].dir = SetStatus(RtpwmY);
-		motor[TIRE_BR].dir = SetStatus(-RtpwmY);
-		motor[TIRE_BL].dir = SetStatus(-RtpwmY);
-		motor[TIRE_FR].pwm = SetPWM(RtpwmY);
-		motor[TIRE_FL].pwm = SetPWM(RtpwmY);
-		motor[TIRE_BR].pwm = SetPWM(RtpwmY);
-		motor[TIRE_BL].pwm = SetPWM(RtpwmY);
-	}
-	if(goalY - 15 < disY && disY < goalY + 15){
-		motor[TIRE_FR].dir = BRAKE;
-		motor[TIRE_FL].dir = BRAKE;
-		motor[TIRE_BR].dir = BRAKE;
-		motor[TIRE_BL].dir = BRAKE;
-		Rt_flagY = false;
-		Rt_flagX = true;
-	}
-	if(Rt_flagX){
-		motor[TIRE_FR].dir = SetStatus(RtpwmX);
-		motor[TIRE_FL].dir = SetStatus(-RtpwmX);
-		motor[TIRE_BR].dir = SetStatus(RtpwmX);
-		motor[TIRE_BL].dir = SetStatus(-RtpwmX);
-		motor[TIRE_FR].pwm = SetPWM(RtpwmX);
-		motor[TIRE_FL].pwm = SetPWM(RtpwmX);
-		motor[TIRE_BR].pwm = SetPWM(RtpwmX);
-		motor[TIRE_BL].pwm = SetPWM(RtpwmX);
-	}
-	if(goalX - 15 < disX && disX < goalX + 15){
-		motor[TIRE_FR].dir = BRAKE;
-		motor[TIRE_FL].dir = BRAKE;
-		motor[TIRE_BR].dir = BRAKE;
-		motor[TIRE_BL].dir = BRAKE;
-		Rt_flagX = false;
-	}else{
-		motor[TIRE_FR].dir = BRAKE;
-		motor[TIRE_FL].dir = BRAKE;
-		motor[TIRE_BR].dir = BRAKE;
-		motor[TIRE_BL].dir = BRAKE;
-	}
-	pc.printf("%f \r\n",RtpwmX);
-	wait_ms(50);
-	
-	
-		/*if(LimitSw::IsPressed(9)) LED_DEBUG0 = LED_ON;
-		else LED_DEBUG0 = LED_OFF;*/
-
 		#ifdef USE_MU
 		controller = CONTROLLER::Controller::GetData();
 		#endif
@@ -389,15 +340,33 @@
 		}
 		
 		if ((EMS_0 || EMS_1) && !Emsflag){
-			buzzer = 1;
+			buzzer = 0.5;
 			BuzzerTimer.attach(BuzzerTimer_func, 1.2);
 			Emsflag = true;
+			ledMode = EMS;
+			current = 0;
+			tapeLedTimer.attach(TapeLedEms_func, 1.2);
+			sendLedData.code = (uint32_t)Red;
 		}
 		
 		if(!EMS_0 && !EMS_1) {
 			buzzer = 0;
 			BuzzerTimer.detach();
 			Emsflag = false;
+			if(ledMode == EMS) ledMode = Normal;
+			tapeLedTimer.detach();
+		}
+		
+		switch(ledMode)
+		{
+			case EMS :
+				break;
+
+			case Normal :
+				sendLedData.code = tapeLED.code;
+
+			default:
+				break;
 		}
 		
 		SystemProcessUpdate();
@@ -455,6 +424,12 @@
 		}
 	}
 	
+	else{
+		motor[Angle_R].dir = BRAKE;
+		motor[Angle_L].dir = BRAKE;
+		motor[Angle_R].pwm = 255;
+	    motor[Angle_L].pwm = 255;
+	}
 }
 #endif
 
@@ -751,7 +726,7 @@
 		float rotateY = (y - 305)/2.21 - 90;
 		Angle += rotateY;
 	}
-	Angle = Angle /20;
+	Angle = Angle/20;
 	pc.printf("Y:%d \r\n",Angle);
 }
 #endif
@@ -1156,7 +1131,7 @@
 		motor[TIRE_BR].pwm = 255;
 		motor[TIRE_BL].pwm = 255;
 	}
-	pc.printf("X:%d \r\n",RtpwmX);
+	//pc.printf("X:%d \r\n",RtpwmX);
 }
 #endif
 
@@ -1262,6 +1237,15 @@
     Color_D[2] = ColorIn(3);
 }
 void BuzzerTimer_func() {
-	buzzer = !buzzer;
+	if(buzzer == 0.5){
+		buzzer = 0;
+ 	}
+ 	else if(buzzer == 0){
+ 		buzzer = 0.5;
+ 	}
+}
+
+void TapeLedEms_func() {
+	sendLedData.code = sendLedData.code == (uint32_t)Red ? (uint32_t)Black : (uint32_t)Red;
 }
 #pragma endregion