Etape 4: Enfin charger arduino croquis et ajuster les paramètres du programme
Voici mon croquis, j’ai une sous-routine pour exécuter le servo à une vitesse plus lente.
Vous remarquerez que code unique bounce déclenche simplement la barre de pendule à une certaine hauteur. Le double bounce routine déclenche à une hauteur à une vitesse plus lente si la balle sort plus lentement et déplace ensuite le reste du trajet vers le bas pour attraper la balle sur son deuxième rebond.
Amusez-vous!
#include
Servo servo1,
int servangle = 0 ;
int potPin = 4 ;
int ledPin = 13 ; Sélectionnez le code pin de la LED int val = 0 ; variable pour stocker la valeur provenant de la sonde int
int delayTime = 0 ; Analog lire épingles const int buttonPin = 2 ;
void myServo (int curAngle, int newAngle, int angleInc, int incDelay, int servoNum)
{Si (curAngle < newAngle) {}
pour (angle int = curAngle ; angle < newAngle ; angle += angleInc) {}
Si (servoNum == 1) servo1.write(angle) ;
Si (servoNum == 2) servo2.write(angle) ;
Delay(incDelay) ; } }
ElseIf (curAngle > newAngle) {}
pour (angle int = curAngle ; angle > newAngle; = angleInc d’angle) {}
Si (servoNum == 1) servo1.write(angle) ;
Si (servoNum == 2) servo2.write(angle) ;
Delay(incDelay) ; } } }
void setup() {}
Serial.Begin(9600) ;
pinMode (ledPin, sortie) ;
déclarer la ledPin comme une sortie
pinMode(buttonPin,INPUT) ;
SERVO1.Attach(11) ;
Delay(10) ;
SERVO1.Write(90) ; Delay(5000) ;
randomSeed(analogRead(0)) ; }
void loop() {}
Serial.Print ("retarder val =") ; Serial.Print(Val) ; Serial.Print (« val d’angle = ") ; Serial.println(valPot2) ; digitalWrite(ledPin,HIGH) ;
Bounce deux fois à gauche myServo(120,73,1,20,1) ;
delay(500) gauche ;
myServo(73,65,1,20,1) ;
delay(2000) gauche ;
rebondir une fois à droite
myServo(65,120,1,20,1) ;
delay(2000) droite ;
rebondir une fois à gauche
myServo(120,65,1,20,1) ;
delay(2000) gauche ;
rebondir une fois à droite
myServo(65,120,1,20,1) ;
delay(2000) droite ;
digitalWrite(ledPin,LOW) ;
CLI() ;
}