|
Manta Prototype
Il Manta è il prototipo del robot che poi sarà prodotto, diciamo che questa versione è indicativa delle mille probabilità che possiamo fare con questo tipo di robot. Queste sono un paio di foto del robot con la board DFRobot con un ricevitore wireless da 2.4GHz per PS2.
Ecco un video, ho implementato funzioni basilari di movimento senza particolari retroazioni per il controllo di direzione e velocità.
Includete la libreria servo.h e gpsx.h
#undef round //serve per non far fallire la compilazione
Servo leftservo;
Servo rightservo;
void setup()
{
Serial.begin(9600);
Serial.begin(9600);
leftservo.attach(10);
rightservo.attach(9);
leftservo.write(90);
rightservo.write(90);
PSX.mode(PSX_PAD1, MODE_ANALOG, MODE_LOCK);
PSX.motorEnable(PSX_PAD1, MOTOR1_ENABLE, MOTOR2_ENABLE);
// Poll current state once.
PSX.updateState(PSX_PAD1);
}
void loop()
{
PSX.updateState(PSX_PAD1);
int data1 = ANALOG_RIGHT_X(PSX_PAD1);
int data2 = ANALOG_RIGHT_Y(PSX_PAD1);
int data3 = ANALOG_LEFT_X(PSX_PAD1);
int data4 = ANALOG_LEFT_Y(PSX_PAD1);
if(PRESSED_UP(PSX_PAD1)){
Serial.println("avanti");
leftservo.write(99);
rightservo.write(180);
} if(RELEASED_UP(PSX_PAD1)){
leftservo.write(90);
rightservo.write(90);
}
if(PRESSED_RIGHT(PSX_PAD1)){
Serial.println("destra");
leftservo.write(0);
rightservo.write(180);
} if(RELEASED_RIGHT(PSX_PAD1)){
leftservo.write(90);
rightservo.write(90);
}
if(PRESSED_LEFT(PSX_PAD1)){
Serial.println("sinistra");
leftservo.write(180);
rightservo.write(0);
} if(RELEASED_LEFT(PSX_PAD1)){
leftservo.write(90);
rightservo.write(90);
}
if(PRESSED_DOWN(PSX_PAD1)){
Serial.println("indietro");
leftservo.write(20);
rightservo.write(0);
} if(RELEASED_DOWN(PSX_PAD1)){
leftservo.write(90);
rightservo.write(90);
}
}