Étape 5: Test / contrôle
La méthode la plus simple de contrôler le talcapults est manuellement avec via Electronique Auto RC, mais il y a beaucoup d’autres méthodes qui peuvent être utilisés pour contrôler la talcapult.Voici un code arduino, que j’ai utilisé pour contrôler les deux talcapults, il utilise des capteurs IR comme le type décrit dans ma balise de duino instructable.
Code :
(Pas mon meilleur travail, mais peut vous donner des idées)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include
Servo servo1 ; Créez l’objet servo pour contrôler un servo
Servo servo2 ;
int pos = 90 ; variable pour stocker la position du servo
pos2 int = 90 ; 2ème servo
limites de l’int = 90 ;
capteur int = 5 ;
sensor2 int = 4 ;
inputPin int = 12 ;
active int = 0 ;
int mené = 2 ;
int val = 0 ;
int whichServo = 0 ;
route d’int [10] ;
int i = 0 ;
void setup()
{
Serial.Begin(9600) ;
SERVO1.Attach(9) ; attache le servo sur la broche 9 à l’objet de servo
Servo2.Attach(8) ;
pinMode (entrée de la sonde,) ;
pinMode (sensor2, entrée) ;
pinMode (inputPin, entrée) ;
pinMode (led, sortie) ;
digitalWrite (inputPin, HIGH) ;
Serial.println("Ready") ;
}
void loop() {}
Val = digitalRead(inputPin) ;
Si (val == faible) {}
if(active == 1) {}
Active = 0 ;
Delay(300) ;
Val = élevé ;
Itinéraire [0] = 90 ;
Itinéraire [1] = 120 ;
Itinéraire [2] = 120 ;
Itinéraire [3] = 120 ;
Itinéraire [4] = 120 ;
Itinéraire [5] = 120 ;
Itinéraire [6] = 120 ;
Itinéraire [7] = 120 ;
la route [8] = 120 ;
Itinéraire [9] = 120 ;
servoroute1() ;
servoroute2() ;
Serial.println("Safe") ;
}
else {}
actif = 1 ;
Delay(300) ;
Val = élevé ;
Itinéraire [0] = 120 ;
Itinéraire [1] = 120 ;
Itinéraire [2] = 120 ;
Itinéraire [3] = 120 ;
Itinéraire [4] = 120 ;
Itinéraire [5] = 120 ;
Itinéraire [6] = 120 ;
Itinéraire [7] = 120 ;
la route [8] = 120 ;
Itinéraire [9] = 90 ;
servoroute1() ;
servoroute2() ;
Serial.println("active") ;
}
}
Si (digitalRead(sensor) == LOW & & active == 1) {}
whichServo = 2 ;
Si (digitalRead(sensor2) == HIGH) {}
whichServo = 1 ;
}
Serial.Print ("HIT. Servo de feu: ") ;
Serial.println(whichServo) ;
fireTalcapult() ;
Delay(30) ;
}
SERVO1.Write(POS) ; dire de servo pour aller à positionner dans la variable « pos »
Servo2.Write(POS2) ;
Si (active == 1) {}
digitalWrite (conduit, en haut) ;
Serial.println("active1") ;
}
else {}
digitalWrite (led, faible) ;
Serial.println("SAFE1") ;
}
}
void fireTalcapult() {}
Serial.println("Fire") ;
Sous-routine pour un mouvement doux d’un servo sur un parcours complex
Itinéraire [0] = 20 ;
Itinéraire [1] = 120 ;
Itinéraire [2] = 130 ;
Itinéraire [3] = 100 ;
Itinéraire [4] = 90 ;
Itinéraire [5] = 90 ;
Itinéraire [6] = 90 ;
Itinéraire [7] = 90 ;
la route [8] = 90 ;
Itinéraire [9] = 90 ;
if(whichServo == 1) {}
Saut rapide initiale
POS = itinéraire [0] ;
SERVO1.Write(POS) ;
Delay(300) ;
Permet un mouvement lisse
servoroute1() ;
}
if(whichServo == 2) {}
Saut rapide initiale
POS2 = itinéraire [0] ;
Servo2.Write(POS2) ;
Delay(300) ;
Permet un mouvement lisse
servoroute2() ;
}
}
void servoroute1() {}
tandis que (j’ai < 10) {}
Si (pos > {route[i])}
POS = pos - 1 ;
}
Si (pos < route[i]) {}
POS = pos + 1 ;
}
Si (pos == {route[i])}
i = i + 1 ;
}
SERVO1.Write(POS) ;
Delay(10) ;
}
i = 0 ;
}
void servoroute2() {}
tandis que (j’ai < 10) {}
Si (pos2 > {route[i])}
POS2 = pos2 - 1 ;
}
Si (pos2 < route[i]) {}
POS2 = pos2 + 1 ;
}
Si (pos2 == {route[i])}
i = i + 1 ;
}
Servo2.Write(POS2) ;
Delay(10) ;
}
i = 0 ;
}