Etape 48 : MoveHead() ajouté au reste du code d’essai de série
Je suppose que nous avons assez se déplace pour commencer à travailler sur autre chose.commandes série ajoutés :
« h » - pour déplacer la tête - traverse de balayage complet
de '-frayez un chemin (fonction existait déjà, mais n’a pas eu un cas)
a '-tourner l’autre sens (fonction existait déjà, mais n’a pas eu un cas)
Ce code devrait être rendu plus court, mais c’est ici :
vidéo
[allMoves
//////////////////////////////// ARDUINO CODE//////////////////////////////////
Robot de test avec des routines peu transformés en fonctions / / /
ajouté tête mobile / / /
moteur VARIABLES / / /
Direction basses = vers le corps ou Foward
Direction = haut du corps ou vers l’arrière
int RightArmDir = 2 ;
int RightArmSpeed = 3 ;
int LeftArmDir = 4 ;
int LeftArmSpeed = 5 ;
int WaistDir = 7 ;
int WaistSpeed = 6 ;
int RightWheelDir = 8 ;
int RightWheelSpeed = 9 ;
int LeftWheelDir = 12 ;
int LeftWheelSpeed = 10 ;
int Slow = 100 ;
int Fast = 200 ;
int t1 = 200 ; temps au ralenti
int t2 = 1000 ; temps à vive allure
int tBreak = 100 ; temps d’arrêter le moteur en inversant dir
int WheelSpeed = 75 ;
int breakSpeed = 10 ;
int bendSpeed = 255 ;
int incomingByte ;
variables de tête
#include < Servo.h >
Servo myservo ; Créez l’objet servo pour contrôler un servo
int pos = 80 ;
int posFront = 80 ;
///////// SETUP /////////
void setup() {}
pinMode (RightArmDir, sortie) ;
pinMode (RightArmSpeed, sortie) ;
pinMode (LeftArmDir, sortie) ;
pinMode (LeftArmSpeed, sortie) ;
pinMode (WaistDir, sortie) ;
pinMode (WaistSpeed, sortie) ;
pinMode (RightWheelDir, sortie) ;
pinMode (RightWheelSpeed, sortie) ;
pinMode (LeftWheelDir, sortie) ;
pinMode (LeftWheelSpeed, sortie) ;
myservo.Attach(11) ; attache le servo sur la broche 11 à l’objet de servo
Serial.Begin(9600) ;
}
GRANDE BOUCLE / / /
void loop() {}
Serial.println("...") ;
Delay(400) ;
if(Serial.available() > 0) {}
incomingByte = Serial.read() ;
{Switch(incomingByte)}
case « f » :
Foward() ;
rupture ;
case « b » :
Backward() ;
rupture ;
case « r » :
RightArmUp() ;
rupture ;
affaire ' t » :
RightArmDown() ;
rupture ;
case « w » :
LeftArmUp() ;
rupture ;
Case « e » :
LeftArmDown() ;
rupture ;
case « z » :
WaistBendDown() ;
rupture ;
case « x » :
WaistBendUp() ;
rupture ;
case « h » :
MoveHead() ;
rupture ;
de l’affaire ":
Spin() ;
rupture ;
affaire aurait ":
Spin2() ;
rupture ;
}
}
}
///////////////////////////////////////////////
FONCTIONS DE BASE / / /
///////////////////////////////////////////////
void RightArmUp() {}
Bras droit de test
Serial.println (« bras droit ») ;
Bras droit vers le haut
Serial.println("up") ;
digitalWrite (RightArmDir, élevé) ;
analogWrite (RightArmSpeed, lent) ;
retard (t1) ;
analogWrite(RightArmSpeed,Fast) ;
retard (1.8 * t2) ;
analogWrite(RightArmSpeed,Slow) ;
Delay(T1) ;
analogWrite (RightArmSpeed, 0) ;
Delay(T1) ;
}
void RightArmDown() {}
Bras droit vers le bas
Serial.println (« bras droit vers le bas") ;
digitalWrite (RightArmDir, basse) ;
analogWrite (RightArmSpeed, lent) ;
retard (t1) ;
analogWrite (RightArmSpeed, Fast) ;
retard (1.8 * t2) ;
analogWrite (RightArmSpeed, lent) ;
Delay(T1) ;
analogWrite (RightArmSpeed, 0) ;
Delay(2*T1) ;
}
void LeftArmUp() {}
Test de bras gauche
Serial.println ("bras gauche vers le haut") ;
Bras gauche vers le haut
digitalWrite (LeftArmDir, élevé) ;
analogWrite (LeftArmSpeed, lent) ;
retard (t1) ;
analogWrite (LeftArmSpeed, Fast) ;
retard (2 * t2) ;
analogWrite (LeftArmSpeed, lent) ;
retard (t1) ;
analogWrite (LeftArmSpeed, 0) ;
Delay(T1) ;
}
void LeftArmDown() {}
Bras gauche vers le bas
Serial.println ("bras gauche vers le bas") ;
digitalWrite (LeftArmDir, basse) ;
analogWrite (LeftArmSpeed, lent) ;
retard (t1) ;
analogWrite (LeftArmSpeed, Fast) ;
retard (2 * t2) ;
analogWrite(LeftArmSpeed,Slow) ;
Delay(T1) ;
analogWrite (LeftArmSpeed, 0) ;
Delay(2*T1) ;
}
void WaistBendDown() {}
Test de taille
Serial.println ("Bend taille vers le bas") ;
digitalWrite (WaistDir, élevé) ;
analogWrite (WaistSpeed, lent) ;
retard (t1) ;
analogWrite (WaistSpeed, bendSpeed) ;
retard (2 * t2) ;
analogWrite (WaistSpeed, lent) ;
Delay(T1) ;
analogWrite (WaistSpeed, 0) ;
Delay(T1) ;
}
void WaistBendUp() {}
Plier vers le haut
Serial.println("up") ;
digitalWrite (WaistDir, basse) ;
analogWrite (WaistSpeed, lent) ;
retard (t1) ;
analogWrite (WaistSpeed, bendSpeed) ;
retard (2 * t2) ;
analogWrite (WaistSpeed, lent) ;
Delay(T1) ;
analogWrite (WaistSpeed, 0) ;
Delay(2*T1) ;
}
void Spin() {}
Serial.println("Spin") ;
digitalWrite (LeftWheelDir, basse) ;
digitalWrite(RightWheelDir,HIGH) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
retard (t1) ;
analogWrite (RightWheelSpeed, WheelSpeed) ;
analogWrite (LeftWheelSpeed, WheelSpeed) ;
retard (t2) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
Delay(T1) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite (RightWheelSpeed, 0) ;
Delay(T1) ;
digitalWrite (LeftWheelDir, élevé) ;
digitalWrite(RightWheelDir,LOW) ;
analogWrite (LeftWheelSpeed, breakSpeed) ;
analogWrite (RightWheelSpeed, breakSpeed) ;
Delay(tBreak) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite(RightWheelSpeed,0) ;
}
void Spin2() {}
Serial.println("SPIN2") ;
digitalWrite (LeftWheelDir, élevé) ;
digitalWrite(RightWheelDir,LOW) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
retard (t1) ;
analogWrite (RightWheelSpeed, WheelSpeed) ;
analogWrite (LeftWheelSpeed, WheelSpeed) ;
retard (t2) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
Delay(T1) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite (RightWheelSpeed, 0) ;
Delay(T1) ;
digitalWrite (LeftWheelDir, basse) ;
digitalWrite(RightWheelDir,HIGH) ;
analogWrite (LeftWheelSpeed, breakSpeed) ;
analogWrite(RightWheelSpeed,breakSpeed) ;
Delay(tBreak) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite(RightWheelSpeed,0) ;
}
void Foward() {}
Serial.println ("allez Foward") ;
digitalWrite (LeftWheelDir, élevé) ;
digitalWrite(RightWheelDir,HIGH) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
retard (t1) ;
analogWrite (RightWheelSpeed, WheelSpeed) ;
analogWrite (LeftWheelSpeed, WheelSpeed) ;
retard (t2) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
Delay(T1) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite (RightWheelSpeed, 0) ;
Delay(T1) ;
digitalWrite (LeftWheelDir, basse) ;
digitalWrite(RightWheelDir,LOW) ;
analogWrite (LeftWheelSpeed, breakSpeed) ;
analogWrite(RightWheelSpeed,breakSpeed) ;
Delay(tBreak) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite(RightWheelSpeed,0) ;
}
void Backward() {}
Serial.println ("aller vers l’arrière") ;
digitalWrite (LeftWheelDir, basse) ;
digitalWrite(RightWheelDir,LOW) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
retard (t1) ;
analogWrite (RightWheelSpeed, WheelSpeed) ;
analogWrite (LeftWheelSpeed, WheelSpeed) ;
retard (t2) ;
analogWrite (RightWheelSpeed, WheelSpeed/2) ;
analogWrite (LeftWheelSpeed, WheelSpeed/2) ;
Delay(T1) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite (RightWheelSpeed, 0) ;
Delay(T1) ;
digitalWrite (LeftWheelDir, élevé) ;
digitalWrite(RightWheelDir,HIGH) ;
analogWrite (LeftWheelSpeed, breakSpeed) ;
analogWrite(RightWheelSpeed,breakSpeed) ;
Delay(tBreak) ;
analogWrite (LeftWheelSpeed, 0) ;
analogWrite(RightWheelSpeed,0) ;
}
aller tête / / /
void MoveHead() {//create fonction déplacer tête / / tête aller en arrière
pour (pos = 5; pos < 145; pos += 1) //goes de 5 à 145degrees
{/ / par incréments de 1 degré
myservo.Write(POS) ; dire de servo pour aller à positionner dans la variable « pos »
Serial.println(POS) ;
Delay(15) ; attend 15 ms pour le servo atteindre la position
if(pos == posFront) {}
Delay(600) ;
}
}
pour (pos = 145; pos > = posFront; pos-= 1) / / va de 145 degrés vers l’avant
{
myservo.Write(POS) ; dire de servo pour aller à positionner dans la variable « pos »
Delay(15) ; attend 15 ms pour le servo atteindre la position
if(pos == posFront) {}
Delay(600) ;
}
}
}