-
Notifications
You must be signed in to change notification settings - Fork 2
/
SourceFile002.c
89 lines (85 loc) · 2.24 KB
/
SourceFile002.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#pragma config(Sensor, in1, light_right, sensorLineFollower)
#pragma config(Sensor, in2, light_left, sensorLineFollower)
#pragma config(Motor, port1, right, tmotorVex393_HBridge, openLoop)
#pragma config(Motor, port6, claw, tmotorVex393_MC29, openLoop)
#pragma config(Motor, port7, arm, tmotorVex393_MC29, openLoop)
#pragma config(Motor, port10, left, tmotorVex393_HBridge, openLoop)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
void movewheel2control(){
motor[port1]=vexRT[ch2];
motor[port10]=-vexRT[ch3];
}
void movewheel(){
float y = vexRT[ch2]/2;
float x = vexRT[ch1]/2;
float left_motor;
float right_motor;
float power, st;
power = sqrt(x*x+y*y);
if(y>=0&&power!=0){
st = x * 100/power;
if(x>=0){
left_motor = power;
right_motor = (1-0.02*st)*power;
}
else{
right_motor = power;
left_motor = (1+0.02*st)*power;
}
}
if(y<=0&&power!=0){
power*=-1;
st = x * 100/power;
if(x>=0){
left_motor = power;
right_motor = (1+0.02*st)*power;
}
else{
right_motor = power;
left_motor = (1-0.02*st)*power;
}
}
if(x==0&&y==0){
motor[port10] = 0;
motor[port1] = 0;
}
motor[port10] = -left_motor;
motor[port1] = right_motor;
}
void moveclaw(){
if(vexRT[Btn5U] == 1){
motor[port7] = 100;
}
else if(vexRT[Btn5D] == 1){
motor[port7] = -30;
}
else if(vexRT(Btn6U) == 1){
motor[port6] = 100;
}
else if(vexRT(Btn6D) == 1){
motor[port6] = -100;
}else{
motor[port6] = 0;
motor[port7] = 15;
}
}
task main(){
float motor1 = 25;//initial speed
float motor10 = -25;//initial speed
float e = 0;//difference between two sensor value
float a = 0.04;//adjustment constant
while(true){
if(vexRT[Btn8U]==1){//button for safety
e = sensorValue(light_right)-sensorValue(light_left);
//higer value -> darker lower value -> lighter
// white color:100 - 200
//limit 0~4095 black color:2300 - 3000
motor[port1] = motor1+e*a;
motor[port10] = motor10+e*a;
}else{
motor[port1] = 0; //stop for safety
motor[port10] = 0;
}
moveclaw();//move claw and arm
}
}