Étape 4: Le contrôleur
Un servo standard fonctionne à 50Hz, ce qui signifie il a besoin d’obtenir une impulsion à sa ligne de contrôle (Hitec - celle jaune) chaque 20ms.
La largeur de l’impulsion à l’état actif (rapport cyclique) détermine l’angle de la servocommande.
Cette modulation de la largeur d’impulsion appelée PWM - Modulation de largeur d’impulsion.
1.25 ms - 0 deg.
1,50 ms - 90 deg.
1,75 ms - 180 deg.
Le Code
La meilleure méthode - corrigez-moi si je me trompe - pour créer des PWM avec ATmega pour deux servos est en connectant le 1er servo à OC1A et le 2e à OC1B et programme de chacun de ces temporisateurs à sortie PWM.
Maintenant, le Conseil de développement j’ai et que vous utilisez est AVR-LIP (ECAVR) et OC1A et OC1B sont déjà prises par l’écran LCD et buzzer piezo.
Donc - avec l’aide de [frakk2136] www.avrfreaks.net/index.php - j’ai utilisé une méthode différente.
J’ai programmé OC1A pour produire rapidement PWM et utilisé les interruptions pendant que les servos sont connectés à PA4 & PA5.
Vous devrez modifier le code correspondant à votre système.
Quelques commentaires
Trois versions ici :
Labyrinth_Auto
Le jeu se joue automatiquement selon un ensemble d’instructions.
Le code fonctionne très bien, mais le mécanisme de labyrinthe juste ne peut pas être calibré assez bien.
Maintenant, ajoutez quelques facteurs physiques telles que la gravité, frottement, tension (surtout ce X-factor) etc. et, bien, parfois la balle tomber dans ce trou et parfois à celui-là.
Labyrinth_Manual_RS-232
Le microcontrôleur obtient des instructions du clavier (touches fléchées) PC via le port série.
L’AVR-lèvre fonctionne à 4Mhz pour la vitesse de transmission maximale qu’il peut gérer sans erreur nous 19200 qui est trop lent et pas tellement à l’aise.
Labyrinth_Manual_Switches
Quatre interrupteurs sont reliés à l’AVR.
Fonctionne très bien.
TODO
Joystick analogique [ X ]
Manette de jeu numérique [ X ]
Accéléromètre de [ X ]
Commutateurs de [ V ]
Vision par ordinateur [ X ]
* ([ X ] | [V] = Status)