Étape 3: Flasher le Firmware
Le code est assez simple.
Nous avons un menu pour configurer l’adresse I2C, les limites douces sur le capteur, la vitesse du moteur et la position par défaut de l’interface (Serial) RS232. La plupart des progiciels est associé à ce menu d’interface série. Utiliser un USB pour périphériques RS232 TTL comme une puce FTDI pour flasher votre Arduino Pro Mini, le terminal série va alors vous montrer le menu de configuration.
La logique réelle est en « dévier », cette mesure la position du capteur et puis exécutez les moteurs jusqu'à deux fois la vitesse indiquée de « rattrapage » de l’autre côté.
Pour I2C nous avons deux sous-routines, receiveEvent est appelée lorsque des données arrivent pour l’Arduino sur le bus I2C. RequestEvent se produit quand un périphérique I2C de demande des données de l’Arduino en cours d’exécution du SwerveSteerTwoTone.
Nous utilisons des EEPROM pour stocker les paramètres afin que l’appareil peut se rappeler ses paramètres quand il est éteint. Vous pouvez considérer cela comme un disque dur pour l’Arduino. N’oubliez pas qu'il n’a que très peu d’octets.
Un peu habile de ce code utilise la fonction de tonalité pour créer une minuterie cohérente pour générer deux fréquences différentes pour les deux moteurs pas à pas. Pour ce faire la sortie de fonction Tone sur broche 2 et depuis la broche 2 est aussi Int 0 changements en Int 0 puis appeler le gestionnaire d’interruption « intHandler ». intHandler vérifie que si la broche pour le stepper motor doit être activée/désactivée, il le fait pour deux broches.
Tout cela pourrait être plus élégante mais c’est un bon moyen pour créer l’encapsulation du mouvement pied loin du reste du code pour le robot.
Enfin une dernière note. Nous sommes croyants forts dans « La chose la plus simple qui pourrait éventuellement travaux. » il est donc possible que ce code va échouer dans certains cas ou pourrait être écrit doit être plus rapide ou avoir plus propre minutage plus cohérente. Mais c’est le plus simple, que nous avons pensé fonctionnerait. Et il ne semble pas fonctionner comme prévu.