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.
Revision 30:8ee22331bfaf, committed 2018-05-02
- Comitter:
- alt0710
- Date:
- Wed May 02 02:47:35 2018 +0000
- Parent:
- 29:4607c59702a1
- Child:
- 31:7b003082f31d
- Commit message:
- ifdef???ver????????????LCD?BoardNo.???????????; ;
Changed in this revision
--- a/actuator/dribbler.cpp Tue May 01 06:38:42 2018 +0000
+++ b/actuator/dribbler.cpp Wed May 02 02:47:35 2018 +0000
@@ -69,6 +69,10 @@
{
#if defined(MAIN_BORD_Ver_4) || defined(MAIN_BORD_Ver_5)
+ if(t_power != 0)
+ {
+ t_power = 4;
+ }
StatusManager::req_dribbleMotor_current = t_power/(float)15.0 * (float)2.0;
//InterfaceManager::dribbleMotor.write((float)(1.0 - t_power/15.0 * 0.50 ));
#else
--- a/comm/status/status_manager.cpp Tue May 01 06:38:42 2018 +0000
+++ b/comm/status/status_manager.cpp Wed May 02 02:47:35 2018 +0000
@@ -1,5 +1,6 @@
#include "mbed.h"
#include "status_manager.h"
+#include "interface_manager.h"
char StatusManager::is_kicking;
char StatusManager::mode;
@@ -16,7 +17,9 @@
float StatusManager::req_dribbleMotor_current;
float StatusManager::req_dribbleMotor_PID;
char StatusManager::alive_count;
+char StatusManager::indicate_i2c_enable;
unsigned short StatusManager::DriveTime;
+unsigned char StatusManager::MainBoard;
extern void init_status(void)
@@ -28,4 +31,14 @@
StatusManager::alive_count = 0;
StatusManager::DriveTime = 0;
StatusManager::req_dribbleMotor_PID = 0;
+ StatusManager::indicate_i2c_enable = 0;
+
+#if defined(MAIN_BORD_Ver_3)
+ StatusManager::MainBoard = 3;
+#elif defined(MAIN_BORD_Ver_4)
+ StatusManager::MainBoard = 4;
+#elif defined(MAIN_BORD_Ver_5)
+ StatusManager::MainBoard = 5;
+#endif
+
}
\ No newline at end of file
--- a/comm/status/status_manager.h Tue May 01 06:38:42 2018 +0000
+++ b/comm/status/status_manager.h Wed May 02 02:47:35 2018 +0000
@@ -35,6 +35,8 @@
//その他
static char alive_count;
static unsigned short DriveTime;
+ static char indicate_i2c_enable;
+ static unsigned char MainBoard;
private:
StatusManager();
--- a/interface/button/button_roots.cpp Tue May 01 06:38:42 2018 +0000
+++ b/interface/button/button_roots.cpp Wed May 02 02:47:35 2018 +0000
@@ -9,41 +9,36 @@
#ifdef LPC4088
#elif STM32
-// #if defined(MAIN_BORD_Ver_4)
-// //CrossSelectSW
-// DigitalIn Mode_SW1(A2);
-// DigitalIn Mode_SW2(A3);
-// InterruptIn CrossSW_UP(D9); //EXT2
-// InterruptIn CrossSW_LEFT(D7); //PUSH D7
-// //InterruptIn CrossSW_DOWN(D9); //KICK
-// DigitalIn DUMY(D8); //KICK
-// InterruptIn CrossSW_RIGHT(A1); //EXT
-// #elif defined(MAIN_BORD_Ver_5)
- //SWの配置が変わったので使いやすい構成にかえる
- //CrossSelectSW
- DigitalIn Mode_SW1(A2);
- DigitalIn Mode_SW2(A3);
- #ifndef MAIN_BORD_Ver_5
- InterruptIn CrossSW_UP(D9); //EXT2
- #else
- DigitalIn UP(D9);
+ #if defined(MAIN_BORD_Ver_4)
+ //CrossSelectSW
+ DigitalIn Mode_SW1(A2);
+ DigitalIn Mode_SW2(A3);
+ InterruptIn CrossSW_UP(D9); //EXT2
+ InterruptIn CrossSW_LEFT(D7); //PUSH D7
+ //InterruptIn CrossSW_DOWN(D9); //KICK
+ DigitalIn DUMY(D8); //KICK
+ InterruptIn CrossSW_RIGHT(A1); //EXT
+ #elif defined(MAIN_BORD_Ver_5)
+ //SWの配置が変わったので使いやすい構成にかえる
+ //CrossSelectSW
+ DigitalIn Mode_SW1(A2);
+ DigitalIn Mode_SW2(A3);
+ InterruptIn CrossSW_UP(D9); //EXT2
+ InterruptIn CrossSW_LEFT(D7); //PUSH D7
+ //InterruptIn CrossSW_DOWN(D9); //KICK
+ DigitalIn DUMY(A1); //KICK
+ InterruptIn CrossSW_RIGHT(D8); //EXT
+ #elif defined(MAIN_BORD_Ver_3)
+ //ModeSelectSW
+ DigitalIn Mode_SW1(A3);
+ DigitalIn Mode_SW2(A2);
+ //CrossSelectSW
+ InterruptIn CrossSW_UP(D11); //EXT2
+ InterruptIn CrossSW_LEFT(D7); //PUSH D7
+ //InterruptIn CrossSW_DOWN(D9); //KICK
+ DigitalIn DUMY(D8); //KICK
+ InterruptIn CrossSW_RIGHT(A1); //EXT
#endif
- InterruptIn CrossSW_LEFT(D7); //PUSH D7
- //InterruptIn CrossSW_DOWN(D9); //KICK
- DigitalIn DUMY(A1); //KICK
-
- InterruptIn CrossSW_RIGHT(D8); //EXT
-// #else
-// //ModeSelectSW
-// DigitalIn Mode_SW1(A3);
-// DigitalIn Mode_SW2(A2);
-// //CrossSelectSW
-// InterruptIn CrossSW_UP(D11); //EXT2
-// InterruptIn CrossSW_LEFT(D7); //PUSH D7
-// //InterruptIn CrossSW_DOWN(D9); //KICK
-// DigitalIn DUMY(D8); //KICK
-// InterruptIn CrossSW_RIGHT(A1); //EXT
-// #endif
#endif
DigitalOut myled(LED1);
@@ -54,7 +49,7 @@
Ticker t_right;
/* **ローカル割り込み関数** */
-#ifndef MAIN_BORD_Ver_5
+//#ifndef MAIN_BORD_Ver_5
void check_click_up(void)
{
if(InterfaceManager::button.count_click[0] == 1)
@@ -69,7 +64,7 @@
t_up.detach();
}
-#endif
+//#endif
//void check_click_down(void)
//{
// if(InterfaceManager::button.count_click[1] == 1)
@@ -111,7 +106,7 @@
}
-#ifndef MAIN_BORD_Ver_5
+//#ifndef MAIN_BORD_Ver_5
void click_up(void)
{
myled = !myled;
@@ -131,7 +126,7 @@
}
}
-#endif
+//#endif
//void click_down(void)
//{
// myled = !myled;
@@ -197,22 +192,22 @@
Mode_SW1.mode(PullDown);
Mode_SW2.mode(PullDown);
- #ifndef MAIN_BORD_Ver_5
+ //#ifndef MAIN_BORD_Ver_5
CrossSW_UP.mode(PullNone);
- #else
- UP.mode(PullNone);
- #endif
+ //#else
+ //UP.mode(PullNone);
+ //#endif
//CrossSW_DOWN.mode(PullNone);
DUMY.mode(PullNone);
CrossSW_LEFT.mode(PullNone);
CrossSW_RIGHT.mode(PullNone);
//入力割り込み設定
- #ifndef MAIN_BORD_Ver_5
+ //#ifndef MAIN_BORD_Ver_5
CrossSW_UP.fall(&click_up);
- #else
+ //#else
- #endif
+ //#endif
CrossSW_LEFT.fall(&click_left);
//CrossSW_DOWN.rise(&click_down);
@@ -246,18 +241,18 @@
return modeSW;
case CROSS_UP:
- #ifndef MAIN_BORD_Ver_5
+// #ifndef MAIN_BORD_Ver_5
button_status = crossUp;
crossUp = 0;
- #else
- if( (!UP) && (cross_up_old == 1) ){
- is_button_pushed_up = 1;
- }else{
- is_button_pushed_up = 0;
- }
- cross_up_old = !UP;
- button_status = is_button_pushed_up;
- #endif
+// #else
+// if( (!UP) && (cross_up_old == 1) ){
+// is_button_pushed_up = 1;
+// }else{
+// is_button_pushed_up = 0;
+// }
+// cross_up_old = !UP;
+// button_status = is_button_pushed_up;
+// #endif
return button_status;
case CROSS_DOWN:
--- a/interface/i2c/i2c_roots.cpp Tue May 01 06:38:42 2018 +0000
+++ b/interface/i2c/i2c_roots.cpp Wed May 02 02:47:35 2018 +0000
@@ -118,7 +118,8 @@
/* **グルーバル関数** */
extern void initI2C(void)
{
- i2cMBED.frequency(400000);
+ i2cMBED.frequency(400000);
+ //i2cMBED.frequency(100000);
initLCD();
i2c_Timer.attach(i2c_send, I2C_SEND_CYCLE_TIME);
}
@@ -147,7 +148,7 @@
IndicateMsg[i] = *(msg + i);
}
- i2cMBED.write(ADDRESS_INDICATE, IndicateMsg, msg_num);
+ StatusManager::indicate_i2c_enable = i2cMBED.write(ADDRESS_INDICATE, IndicateMsg, msg_num);
}
void I2C_Roots::setIDMsg(char* msg,char msg_num)
--- a/interface/i2c/i2c_roots.h Tue May 01 06:38:42 2018 +0000 +++ b/interface/i2c/i2c_roots.h Wed May 02 02:47:35 2018 +0000 @@ -11,7 +11,7 @@ /* **Define** */ #define ADDRESS_LCD 0x7C -#define ADDRESS_INDICATE 0x10 +#define ADDRESS_INDICATE 0x60 #define ADDRESS_EEPROM 0xA0 #define I2C_SEND_CYCLE_TIME 0.5
--- a/interface/interface_manager.cpp Tue May 01 06:38:42 2018 +0000 +++ b/interface/interface_manager.cpp Wed May 02 02:47:35 2018 +0000 @@ -6,20 +6,22 @@ CAN_Roots InterfaceManager::can; Xbee_Roots InterfaceManager::xbee; -//#if defined(MAIN_BORD_Ver_4) -//DigitalOut InterfaceManager::straight_kick(D3); -//DigitalOut InterfaceManager::chip_kick(D6); -//DigitalOut InterfaceManager::charge_request(D1); -//DigitalOut InterfaceManager::LED(D11); -////DigitalOut InterfaceManager::dribbleStandBy(A5); -// -//DigitalIn InterfaceManager::ball_sensor(A4); -//DigitalIn InterfaceManager::charge_completed(D0);//D0 -//DigitalIn InterfaceManager::dribbleIC_fault(A6); -// -//PwmOut InterfaceManager::dribbleMotor(A5); -//AnalogIn InterfaceManager::dribbleMotor_current(A7); -//#elif defined(MAIN_BORD_Ver_5) +#if defined(MAIN_BORD_Ver_4) + +DigitalOut InterfaceManager::straight_kick(D3); +DigitalOut InterfaceManager::chip_kick(D6); +DigitalOut InterfaceManager::charge_request(D1); +DigitalOut InterfaceManager::LED(D11); +//DigitalOut InterfaceManager::dribbleStandBy(A5); + +DigitalIn InterfaceManager::ball_sensor(A4); +DigitalIn InterfaceManager::charge_completed(D0);//D0 +DigitalIn InterfaceManager::dribbleIC_fault(A6); + +PwmOut InterfaceManager::dribbleMotor(A5); +AnalogIn InterfaceManager::dribbleMotor_current(A7); + +#elif defined(MAIN_BORD_Ver_5) DigitalOut InterfaceManager::straight_kick(D3); DigitalOut InterfaceManager::chip_kick(D6); DigitalOut InterfaceManager::charge_request(D0); @@ -33,21 +35,21 @@ PwmOut InterfaceManager::dribbleMotor(A5); AnalogIn InterfaceManager::dribbleMotor_current(A6); -//#else -//DigitalOut InterfaceManager::straight_kick(D3); -//DigitalOut InterfaceManager::chip_kick(D6); -//DigitalOut InterfaceManager::charge_request(D1); -//DigitalOut InterfaceManager::LED(D9); -//DigitalOut InterfaceManager::dribbleStandBy(A5); -// -//DigitalIn InterfaceManager::ball_sensor(A7); -//DigitalIn InterfaceManager::charge_completed(D0);//D0 -//DigitalIn InterfaceManager::dribbleIC_fault(A4); -// -//PwmOut InterfaceManager::dribbleMotor(A6); -////DigitalIn InterfaceManager::modeSW_1(A3); -////DigitalIn InterfaceManager::modeSW_2(A2); -//#endif +#elif defined(MAIN_BORD_Ver_3) +DigitalOut InterfaceManager::straight_kick(D3); +DigitalOut InterfaceManager::chip_kick(D6); +DigitalOut InterfaceManager::charge_request(D1); +DigitalOut InterfaceManager::LED(D9); +DigitalOut InterfaceManager::dribbleStandBy(A5); + +DigitalIn InterfaceManager::ball_sensor(A7); +DigitalIn InterfaceManager::charge_completed(D0);//D0 +DigitalIn InterfaceManager::dribbleIC_fault(A4); + +PwmOut InterfaceManager::dribbleMotor(A6); +//DigitalIn InterfaceManager::modeSW_1(A3); +//DigitalIn InterfaceManager::modeSW_2(A2); +#endif AnalogIn InterfaceManager::batVoltage(A0);
--- a/interface/interface_manager.h Tue May 01 06:38:42 2018 +0000
+++ b/interface/interface_manager.h Wed May 02 02:47:35 2018 +0000
@@ -11,8 +11,13 @@
#include "string.h"
#include "stdio.h"
-//#define MAIN_BORD_Ver_4
-#define MAIN_BORD_Ver_5
+//Main基板ver管理
+//#define MAIN_BORD_Ver_3 //赤
+#define MAIN_BORD_Ver_4 //青
+//#define MAIN_BORD_Ver_5 //白
+
+//Option
+//#define ON_INDICATER
class InterfaceManager{
public:
--- a/main.cpp Tue May 01 06:38:42 2018 +0000
+++ b/main.cpp Wed May 02 02:47:35 2018 +0000
@@ -32,7 +32,7 @@
InterfaceManager::i2c.readIDMsg();
while(1) {
- if(StatusManager::dribbleIC_fault == 1)
+ if(StatusManager::ball == 1)
{
InterfaceManager::LED = 1;
}
@@ -47,6 +47,12 @@
//StatusManager::dribbleMotor_current = DribMot_Current.getLPF_Out( InterfaceManager::dribbleMotor_current.read());
StatusManager::req_dribbleMotor_PID = DribMot_PID.getPID_Out( StatusManager::req_dribbleMotor_current , StatusManager::dribbleMotor_current);
+ // 指示0の時Duty出力を0にする 0.1Aは最低指示0.133以下であれば良い
+ if(StatusManager::req_dribbleMotor_current < (float)0.1)
+ {
+ StatusManager::req_dribbleMotor_PID = 0.0;
+ }
+
if( StatusManager::dribbleMotor_current > (float)JDG_TH_OVERCUR_DIRBMOT )
{
StatusManager::dribbleMot_OvrCur = 1;
--- a/mode/normal_routine/normal_routine.cpp Tue May 01 06:38:42 2018 +0000
+++ b/mode/normal_routine/normal_routine.cpp Wed May 02 02:47:35 2018 +0000
@@ -14,7 +14,9 @@
#endif
-//static char batVoltage[1];
+#ifdef ON_INDICATER
+static char batVoltage[1];
+#endif
/* **ローカル関数定義** */
@@ -60,11 +62,12 @@
//sprintf(str,"T%dOv:%d\nC:%3.2f",StatusManager::DriveTime,StatusManager::dribbleMot_OvrCur,StatusManager::dribbleMotor_current);
createLcdData();
InterfaceManager::i2c.setLCDMsg(str,sizeof(str));
-
- //batVoltage[0] = (char)(StatusManager::supply_voltage * 10);
-
- //InterfaceManager::i2c.setIndicateMsg( batVoltage , sizeof(batVoltage));
-
+
+#ifdef ON_INDICATER
+ batVoltage[0] = (char)(StatusManager::supply_voltage * 10);
+ InterfaceManager::i2c.setIndicateMsg( batVoltage , sizeof(batVoltage));
+#endif
+
}
void NormalRoutine::createLcdData(void)
@@ -119,8 +122,9 @@
break;
case -1:
- sprintf(str,"ID%dB%3.1f\nTimeOut",ParameterManager::machine_id,StatusManager::supply_voltage);
- //sprintf(str,"ID%dB%d\nTimeOut",ParameterManager::machine_id,StatusManager::DriveTime);
+ //sprintf(str,"ID%dB%3.1f\nTimeOut",ParameterManager::machine_id,StatusManager::supply_voltage);
+ //sprintf(str,"ID%dB%d\nTimeOut",ParameterManager::machine_id,StatusManager::indicate_i2c_enable);
+ sprintf(str,"ID%d:TO\nB%3.1fBN%d",ParameterManager::machine_id,StatusManager::supply_voltage,StatusManager::MainBoard);
sprintf(str_uart,"TimeOut");
break;