Étape 3: La partie volante
Montage et programmation de la partie de vol de la Blimp
- Connectez un Arduino Uno à votre ordinateur et ouvrez l’IDE Arduino
- Cloner le GitHub Repo et ouvrez le fichier « uno_and_dc_motors_with_xbee.ino »
- Assurez-vous que vous avez le bon conseil et le port sélectionné dans l’IDE Arduino, puis téléchargez le code.
- Empiler le moteur pare-éclaboussures sur la Uno
- Empiler le Xbee Shield sur le dessus du moteur. Notez que lorsque le bouclier Xbee est connecté, l’IDE Arduino ne vous permet pas de télécharger le code à l’Arduino sauf si vous déplacez les en-têtes sur le bouclier où il est dit « Xbee/USB » de la Xbee vers le côté USB.
Code de l’Arduino :
int incomingByte; // a variable to read incoming serial data intoint leftmotorForward = 8; // pin 8 --- left motor (+) green wireint leftmotorBackward = 11; // pin 11 --- left motor (-) black wireint leftMotorSpeedPin = 9; // pin 9 --- left motor speed signalint rightmotorForward = 12; // pin 12 --- right motor (+) green wireint rightmotorBackward = 13; // pin 13 --- right motor (-) blackint rightMotorSpeedPin = 10; // pin 10 --- right motor speed signalint leftMotorSpeed = 0;int rightMotorSpeed = 0;int turnPotVal = 255; // variable to store the value coming from the sensorint turnPotVal2 = 255;
void setup() { pinMode(leftmotorForward, OUTPUT); pinMode(leftmotorBackward, OUTPUT); pinMode(leftMotorSpeedPin, OUTPUT); pinMode(rightmotorForward, OUTPUT); pinMode(rightmotorBackward, OUTPUT); pinMode(rightMotorSpeedPin, OUTPUT); Serial.begin(9600);}
void loop() { while (Serial.available() > 0) { // look for the next valid integer in the incoming serial stream: turnPotVal = Serial.parseInt(); turnPotVal2 = Serial.parseInt(); rightMotorSpeed = (1023-turnPotVal)/4; leftMotorSpeed = turnPotVal2/4; analogWrite(leftMotorSpeedPin,leftMotorSpeed); //Enable left motor analogWrite(rightMotorSpeedPin,rightMotorSpeed); //Enable right motor digitalWrite(leftmotorBackward,LOW); // Drives LOW outputs down first digitalWrite(rightmotorBackward,LOW); digitalWrite(leftmotorForward,HIGH); digitalWrite(rightmotorForward,HIGH); } } tandis que (Serial.available() > 0) {/ / chercher le prochain nombre entier valide dans le flux entrant de série : turnPotVal = Serial.parseInt() ; turnPotVal2 = Serial.parseInt() ; rightMotorSpeed = (1023-turnPotVal) / 4; leftMotorSpeed = turnPotVal2/4 ; analogWrite(leftMotorSpeedPin,leftMotorSpeed) ; //Enable gauche analogWrite(rightMotorSpeedPin,rightMotorSpeed) moteur //Enable moteur droit digitalWrite(leftmotorBackward,LOW); / / lecteurs basse sorties en premier digitalWrite(rightmotorBackward,LOW) ; digitalWrite(leftmotorForward,HIGH) ; digitalWrite(rightmotorForward,HIGH) ;