update
This commit is contained in:
parent
a9ba272657
commit
4c663f510a
1 changed files with 36 additions and 37 deletions
|
@ -35,8 +35,8 @@ const unsigned int HANDLE_MIN = ( 800+30); //us
|
||||||
const unsigned int HANDLE_MAX = (2300+30); //us
|
const unsigned int HANDLE_MAX = (2300+30); //us
|
||||||
|
|
||||||
const int LANCE_DEGREE_DEFAULT = 90; //度
|
const int LANCE_DEGREE_DEFAULT = 90; //度
|
||||||
const unsigned int LANCE_MIN = 544; //us
|
const unsigned int LANCE_MIN = ( 544-62); //us
|
||||||
const unsigned int LANCE_MAX = 2400; //us
|
const unsigned int LANCE_MAX = (2400-62); //us
|
||||||
|
|
||||||
const byte PIN_LED = 4;
|
const byte PIN_LED = 4;
|
||||||
const byte PIN_ROT = 2;
|
const byte PIN_ROT = 2;
|
||||||
|
@ -82,6 +82,7 @@ Motor motorR;
|
||||||
Motor motorL;
|
Motor motorL;
|
||||||
|
|
||||||
byte mode;
|
byte mode;
|
||||||
|
volatile unsigned long counter = 0;
|
||||||
unsigned long counterOld;
|
unsigned long counterOld;
|
||||||
|
|
||||||
/**************************************/
|
/**************************************/
|
||||||
|
@ -90,18 +91,15 @@ void trace(byte sensor){
|
||||||
switch(sensor&MASK_MODE_TRACE){
|
switch(sensor&MASK_MODE_TRACE){
|
||||||
case 0b01000000:
|
case 0b01000000:
|
||||||
handle(-20);
|
handle(-20);
|
||||||
motorMode(GO, GO, SPEED_DEFAULT/4, SPEED_DEFAULT);
|
motorMode(GO, GO, 0, SPEED_DEFAULT);
|
||||||
// lance(0);
|
|
||||||
break;
|
break;
|
||||||
case 0b01100000:
|
case 0b01100000:
|
||||||
handle(-16);
|
handle(-16);
|
||||||
motorMode(GO, GO, SPEED_DEFAULT, SPEED_DEFAULT);
|
motorMode(GO, GO, SPEED_DEFAULT, SPEED_DEFAULT);
|
||||||
// lance(0);
|
|
||||||
break;
|
break;
|
||||||
case 0b00100000:
|
case 0b00100000:
|
||||||
handle(-12);
|
handle(-12);
|
||||||
motorMode(GO, GO, SPEED_DEFAULT, SPEED_DEFAULT);
|
motorMode(GO, GO, SPEED_DEFAULT, SPEED_DEFAULT);
|
||||||
// lance(0);
|
|
||||||
break;
|
break;
|
||||||
case 0b00110000:
|
case 0b00110000:
|
||||||
handle(-5);
|
handle(-5);
|
||||||
|
@ -138,6 +136,31 @@ void trace(byte sensor){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void motorMode(byte leftMode, byte rightMode, byte leftSpeed, byte rightSpeed){
|
||||||
|
motorL.mode( leftMode, leftSpeed);
|
||||||
|
motorR.mode(rightMode, rightSpeed);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle(int degree){
|
||||||
|
servoHandle.write(HANDLE_DEGREE_DEFAULT + degree);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lance(int degree){
|
||||||
|
servoLance.write(LANCE_DEGREE_DEFAULT - degree);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ロータリーエンコーダーの変化を見る
|
||||||
|
todo:外部割り込み使ってみたい、、、
|
||||||
|
*/
|
||||||
|
void count(){
|
||||||
|
static byte rot[2] = {0}; //rot[0]:今の状態, rot[1]:前回の状態
|
||||||
|
rot[0] = digitalRead(PIN_ROT);
|
||||||
|
if(rot[0] != rot[1]){
|
||||||
|
rot[1] = rot[0];
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int checkMarker(byte sensor){
|
int checkMarker(byte sensor){
|
||||||
int mode = MODE_TRACE;
|
int mode = MODE_TRACE;
|
||||||
switch(sensor & MASK_CHECK_MARKER){
|
switch(sensor & MASK_CHECK_MARKER){
|
||||||
|
@ -159,32 +182,6 @@ int checkMarker(byte sensor){
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void motorMode(byte leftMode, byte rightMode, byte leftSpeed, byte rightSpeed){
|
|
||||||
motorL.mode( leftMode, leftSpeed);
|
|
||||||
motorR.mode(rightMode, rightSpeed);
|
|
||||||
}
|
|
||||||
|
|
||||||
void handle(int degree){
|
|
||||||
servoHandle.write(HANDLE_DEGREE_DEFAULT + degree);
|
|
||||||
}
|
|
||||||
|
|
||||||
void lance(int degree){
|
|
||||||
servoLance.write(LANCE_DEGREE_DEFAULT - degree);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ロータリーエンコーダーの変化を見る
|
|
||||||
todo:外部割り込み使ってみたい、、、
|
|
||||||
*/
|
|
||||||
volatile unsigned long counter = 0;
|
|
||||||
void count(){
|
|
||||||
static byte rot[2] = {0}; //rot[0]:今の状態, rot[1]:前回の状態
|
|
||||||
rot[0] = digitalRead(PIN_ROT);
|
|
||||||
if(rot[0] != rot[1]){
|
|
||||||
rot[1] = rot[0];
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sensorInit(){
|
void sensorInit(){
|
||||||
pinMode(PIN_SENSOR_0, INPUT);
|
pinMode(PIN_SENSOR_0, INPUT);
|
||||||
pinMode(PIN_SENSOR_1, INPUT);
|
pinMode(PIN_SENSOR_1, INPUT);
|
||||||
|
@ -268,8 +265,10 @@ void loop(){
|
||||||
trace(sensor);
|
trace(sensor);
|
||||||
mode = checkMarker(sensor);
|
mode = checkMarker(sensor);
|
||||||
// 6周する前に、円筒標的を狙いに行く
|
// 6周する前に、円筒標的を狙いに行く
|
||||||
if( counter > LAP_COUNT*6 - LAP_COUNT/14 ){
|
// if( counter > LAP_COUNT*6 - LAP_COUNT/14 ){
|
||||||
mode = MODE_TARGET_CYLINDER;
|
// mode = MODE_TARGET_CYLINDER;
|
||||||
|
if(counter > LAP_COUNT){
|
||||||
|
mode = MODE_STOP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MODE_LEFT: //左カーブ
|
case MODE_LEFT: //左カーブ
|
||||||
|
@ -298,10 +297,10 @@ void loop(){
|
||||||
if(millis() - millis_lance > LANCE_INTERVAL){
|
if(millis() - millis_lance > LANCE_INTERVAL){
|
||||||
millis_lance = millis();
|
millis_lance = millis();
|
||||||
switch(servoLance.read()){
|
switch(servoLance.read()){
|
||||||
case LANCE_ANGLE1:
|
case LANCE_DEGREE_DEFAULT - LANCE_ANGLE1:
|
||||||
lance(LANCE_ANGLE2);
|
lance(LANCE_ANGLE2);
|
||||||
break;
|
break;
|
||||||
case LANCE_ANGLE2:
|
case LANCE_DEGREE_DEFAULT - LANCE_ANGLE2:
|
||||||
lance(LANCE_ANGLE1);
|
lance(LANCE_ANGLE1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue