Trådlös Robo-bilen med 360 ° servomotor (5 / 7 steg)
Steg 5: program
///////////////////////////// KEYS /////////////////////////////
#define FWD_KEY "W"
#define BWD_KEY "
#define QUICK_L_KEY "Q"
#define QUICK_R_KEY 'E'
#define TRNL_L_KEY "A"
#define TRNL_R_KEY skulle "
#define STOP_KEY ""
#define KEY_DLY 200
///////////////////////////////////////////////////////////////////
#define STOP_L 95
#define STOP_R 95
#define FWD_L 0
#define FWD_R 360
#define BWD_L 180
#define BWD_R 0
#define QTRNL_L STOP_L + 5
#define QTRNL_R FWD_R
#define QTRNR_L FWD_L
#define QTRNR_R STOP_R-5
#define TRNL_L STOP_L
#define TRNL_R FWD_R
#define TRNR_L FWD_L
#define TRNR_R STOP_R
/////////////////////////////////////////////////////////////////////
Servo left_servo, right_servo; skapa objekt för att styra en servo servo
unsigned char incomingByte = 0;
unsigned int count = 0;
int potpin = 0; analoga pin används för att ansluta potentiometern
int val; variabel att läsa värdet från det analoga stiftet
void setup()
{
Serial.BEGIN(9600);
left_servo.attach(2); tillmäter objektet servo servo på pin 9
right_servo.attach(3); tillmäter objektet servo servo på stift 10
left_servo.write(STOP_L);
right_servo.write(STOP_R);
}
void loop()
{
IF(Serial.available() > 0)
{
incomingByte = Serial.read();
}
IF(incomingByte==FWD_KEY)
{
left_servo.write(FWD_L);
right_servo.write(FWD_R);
incomingByte = 'X';
Count = 0;
}
annat if(incomingByte==BWD_KEY)
{
left_servo.write(BWD_L);
right_servo.write(BWD_R);
incomingByte = 'X';
Count = 0;
}
annat if(incomingByte==QUICK_L_KEY)
{
left_servo.write(QTRNL_L);
right_servo.write(QTRNL_R);
incomingByte = 'X';
Count = 0;
}
annat if(incomingByte==QUICK_R_KEY)
{
left_servo.write(QTRNR_L);
right_servo.write(QTRNR_L);
incomingByte = 'X';
Count = 0;
}
annat if(incomingByte==TRNL_L_KEY)
{
left_servo.write(TRNL_L);
right_servo.write(TRNL_R);
incomingByte = 'X';
Count = 0;
}
annat if(incomingByte==TRNL_R_KEY)
{
left_servo.write(TRNR_L);
right_servo.write(TRNR_R);
incomingByte = 'X';
Count = 0;
}
annat if(incomingByte==STOP_KEY)
{
left_servo.write(STOP_L);
right_servo.write(STOP_R);
incomingByte = 0;
Count = 0;
}
annat if(incomingByte=='X')
{
om (++ count > KEY_DLY)
{
left_servo.write(STOP_L);
right_servo.write(STOP_R);
Count = 0; incomingByte = 0;
}
Delay(1);
}
}