Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed TrapezoidControl QEI
Revision 11:028a150943b5, committed 2018-10-06
- Comitter:
- kishibekairohan
- Date:
- Sat Oct 06 08:30:58 2018 +0000
- Parent:
- 10:1295d39fec3a
- Child:
- 12:c09b3e08a316
- Commit message:
- ll
Changed in this revision
--- a/Communication/RS485/ActuatorHub/ActuatorHub.cpp Fri Oct 05 12:17:21 2018 +0000
+++ b/Communication/RS485/ActuatorHub/ActuatorHub.cpp Sat Oct 06 08:30:58 2018 +0000
@@ -2,6 +2,7 @@
#include "mbed.h"
#include "../../../CommonLibraries/RingBuffer/RingBuffer.h"
+#include "../../../System/Process/Process.h"
#include "../../../System/Using.h"
static char RS485Send[RS485_BUFFER_SIZE];
@@ -178,8 +179,15 @@
RS485SendBuffer.PutData(disconnect);
}
#endif
+
+ RS485SendBuffer.PutData('*');
+ RS485SendBuffer.PutData(TAPELED_ADDR);
+ RS485SendBuffer.PutData(sendLedData.red);
+ RS485SendBuffer.PutData(sendLedData.green);
+ RS485SendBuffer.PutData(sendLedData.blue);
+ RS485SendBuffer.PutData('\r');
- // __enable_irq();
+ __enable_irq();
}
}
}
--- a/Communication/RS485/ActuatorHub/ActuatorHub.h Fri Oct 05 12:17:21 2018 +0000
+++ b/Communication/RS485/ActuatorHub/ActuatorHub.h Sat Oct 06 08:30:58 2018 +0000
@@ -12,6 +12,7 @@
#define MOTOR3_ADDR 'O'
#define SOLENOID_ADDR 'S'
#define BLUETOOTH_ADDR 'B'
+ #define TAPELED_ADDR 'L'
namespace MOTOR {
#define FREE 0
--- 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
--- a/System/Process/Process.h Fri Oct 05 12:17:21 2018 +0000
+++ b/System/Process/Process.h Sat Oct 06 08:30:58 2018 +0000
@@ -13,6 +13,178 @@
#define ROTATE_PER_REVOLUTIONS 50
+typedef union
+{
+ struct
+ {
+ unsigned int blue : 8;
+ unsigned int green : 8;
+ unsigned int red : 8;
+ unsigned int : 8;
+ };
+ uint32_t code;
+} TapeLedData;
+
+enum TapeLED_Mode
+{
+ EMS,
+ Normal,
+ Launch,
+};
+
+enum TapeLED_Color
+{
+ Black = 0x000000,
+ // Red = 0xff0000,
+ Green = 0x008000,
+ Blue = 0x0000ff,
+ White = 0xffffff,
+ // Orange = 0xffa500,
+ // Yellow = 0xffff00,
+ // Purple = 0x800080,
+ // Cyan = 0x00ffff,
+ // Magenta = 0xff00ff,
+ // Lime = 0x00ff00
+ Dimgray = 0x696969,
+ Gray = 0x808080,
+ DarkGray = 0xa9a9a9,
+ Silver = 0xc0c0c0,
+ LightGray = 0xd3d3d3,
+ Gainsboro = 0xdcdcdc,
+ Whitesmoke = 0xf5f5f5,
+ Snow = 0xfffafa,
+ Ghostwhite = 0xf8f8ff,
+ Floralwhite = 0xfffaf0,
+ Linen = 0xfaf0e6,
+ Antiquewhite = 0xfaebd7,
+ Papayawhip = 0xffefd5,
+ Blanchedalmond = 0xffebcd,
+ Bisque = 0xffe4c4,
+ Moccasin = 0xffe4b5,
+ Navajowhite = 0xffdead,
+ Peachpuff = 0xffdab9,
+ Mistyrose = 0xffe4e1,
+ Lavenderblush = 0xfff0f5,
+ Seashell = 0xfff5ee,
+ Oldlace = 0xfdf5e6,
+ Ivory = 0xfffff0,
+ Honeydew = 0xf0fff0,
+ Mintcream = 0xf5fffa,
+ Azure = 0xf0ffff,
+ Aliceblue = 0xf0f8ff,
+ Lavender = 0xe6e6fa,
+ Lightsteelblue = 0xb0c4de,
+ Lightslategray = 0x778899,
+ Slategray = 0x708090,
+ Steelblue = 0x4682b4,
+ Royalblue = 0x4169e1,
+ Midnightblue = 0x191970,
+ Navy = 0x000080,
+ Darkblue = 0x00008b,
+ Mediumblue = 0x0000cd,
+ Dodgerblue = 0x1e90ff,
+ Cornflowerblue = 0x6495ed,
+ Deepskyblue = 0x00bfff,
+ Lightskyblue = 0x87cefa,
+ Skyblue = 0x87ceeb,
+ Lightblue = 0xadd8e6,
+ Powderblue = 0xb0e0e6,
+ Paleturquoise = 0xafeeee,
+ // Lightcyan = 0xe0ffff,
+ Cyan = 0x00ffff,
+ // Aqua = 0x00ffff,
+ Turquoise = 0x40e0d0,
+ Mediumturquoise = 0x48d1cc,
+ Darkturquoise = 0x00ced1,
+ Lightseagreen = 0x20b2aa,
+ Cabetblue = 0x5f9ea0,
+ Darkcyan = 0x008b8b,
+ Teal = 0x008080,
+ Darkslategray = 0x2f4f4f,
+ Darkgreen = 0x006400,
+ Forestgreen = 0x228b22,
+ Seagreen = 0x2e8b57,
+ Mediumseagreen = 0x3cb371,
+ Mediumaquamarine = 0x66cdaa,
+ Darkseagreen = 0x8fbc8f,
+ Aquamarine = 0x7fffd4,
+ Palegreen = 0x98fb98,
+ Lightgreen = 0x90ee90,
+ Springgreen = 0x00ff7f,
+ Mediumspringgreen = 0x00fa9a,
+ Lawngreen = 0x7cfc00,
+ Chartreuse = 0x7fff00,
+ Greenyellow = 0xadff2f,
+ Lime = 0x00ff00,
+ Limegreen = 0x32cd32,
+ Yellowgreen = 0x9acd32,
+ Darkolivegreen = 0x556b2f,
+ Olivedrab = 0x6b8e23,
+ Olive = 0x808000,
+ Darkkhaki = 0xbdb76b,
+ Palegoldenrod = 0xeee8aa,
+ Cornsilk = 0xfff8dc,
+ Beige = 0xf5f5dc,
+ Lightyellow = 0xffffe0,
+ Lightgoldenrodyellow = 0xfafad2,
+ Lemonchiffon = 0xfffacd,
+ Wheat = 0xf5deb3,
+ Burlywood = 0xdeb887,
+ Tan = 0xd2b48c,
+ Khaki = 0xf0e68c,
+ Yellow = 0xffff00,
+ Gold = 0xffd700,
+ // Orange = 0xffa500,
+ Orange = 0xff2500,
+ Sandybrown = 0xf4a460,
+ Darkorange = 0xff8c00,
+ Goldenrod = 0xdaa520,
+ Peru = 0xcd853f,
+ Darkgoldenrod = 0xb8860d,
+ Chocolate = 0xd2691e,
+ Sienna = 0xa0522d,
+ Saddlebrown = 0x8b4513,
+ Marron = 0x800000,
+ Darkred = 0x8b0000,
+ Brown = 0xa52a2a,
+ Firebrick = 0xb22222,
+ Indeanred = 0xcd5c5c,
+ Rosybrown = 0xbc8f8f,
+ Darksalmon = 0xe9967a,
+ Lightcoral = 0xf08080,
+ Salmon = 0xfa8072,
+ Lightsalmon = 0xffa07a,
+ Coral = 0xff7f50,
+ Tomato = 0xff6347,
+ Orangered = 0xff4500,
+ Red = 0xff0000,
+ Crimson = 0xdc143c,
+ Mediumvioletred = 0xc71585,
+ Deeppink = 0xff1493,
+ Hotpink = 0xff69b4,
+ Palevioletred = 0xdb7093,
+ Pink = 0xffc0cb,
+ Lightpink = 0xffb6c1,
+ Thistle = 0xd8bfd8,
+ Magenta = 0xff00ff,
+ // Fuchsia = 0xff00ff,
+ Violet = 0xee82ee,
+ Plum = 0xdda0dd,
+ Orchid = 0xda70d6,
+ Mediumorchid = 0xba55d3,
+ Darkorchid = 0x9932cc,
+ Darkviolet = 0x9400d3,
+ Darkmagenta = 0x8b008b,
+ Purple = 0x800080,
+ Indigo = 0x4b0082,
+ Darkslateblue = 0x483d8b,
+ Blueviolet = 0x8a2be2,
+ Mediumpurple = 0x9370db,
+ Slateblue = 0x6a5acd,
+ Mediumslateblue = 0x7b68ee
+};
+
+extern TapeLedData sendLedData;
#endif