Robotique 1 STI2D
  • PILOTER UN ROBOT
    • Votre Travail
      • S1: Activité 1: Comment faire pour déplacer un Robot ?
      • S1: Activité 2: Comment se déplacer sur un parcours défini
      • Compléments
      • Synthèse
    • Vos Ressources
      • Chassis Robot
      • Motoréducteurs DG01D
      • Carte Motor Shield et Pont en H Moteur
      • Carte Base Shield Grove
      • Télécommande IR
        • Récepteur Infrarouge KY-022
        • Les codes Télécommande IR
      • Ressources Programmation Arduino
        • Notions de Base sur les programmes Arduino
        • Visualiser des données avec Arduino: Moniteur Série
        • Quelques fonctions utiles dans Arduino
        • Algorigramme (et Pseudo Code)
        • Installer la bibliothèque IRremote
        • Incompatibilité entre IRremote et Motor Shield
      • STRUCTURE DE LA CHAÎNE D'INFORMATION
Propulsé par GitBook
Sur cette page
  • Origine du problème
  • Problème 1 : Incompatibilité Retour Led (Led Feedback)
  • Solution
  • Problème 2 : Conflit de Timer sur la broche 3 et 9
  • Solution
  1. PILOTER UN ROBOT
  2. Vos Ressources
  3. Ressources Programmation Arduino

Incompatibilité entre IRremote et Motor Shield

Fichier Memo pour votre Prof

Origine du problème

Le Motor Shield comprend un brochage fixe. Il n'est donc pas possible de modifier le câblage sur les broches moteurs de manière logicielle.

La librairie IRremote utilise certaines broches également utilisées pour le Motor Shield.

=> Il y a donc incompatibilité

Problème 1 : Incompatibilité Retour Led (Led Feedback)

// Démarre le récepteur IR. Si pas de 3ème paramètre, 
//attribue la broche D13(LED_BUILTIN) comme retour LED par défaut  
// Impossible car la broche D13 est utilisée par le motor shield   
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);

Solution

// Forcer une autre broche pour le retour LED grâce au 3ème paramètre
// Ici, c'est IR_LED_FEEDBACK_RESERVED sur la broche 2 au lieu de 13
#define IR_LED_FEEDBACK_RESERVED    2 
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK,IR_LED_FEEDBACK_RESERVED);

Problème 2 : Conflit de Timer sur la broche 3 et 9

La voie A du Motor shield utilise le frein sur la broche D9 et la vitesse sur la broche 3

La voie B du Motor shield utilise le frein sur la broche D8

La librairie IRRemote utilise un Timer sur la broche 3 ou 9

Solution

Activation du Timer de IRRemote sur la broche 9

Broche 8 et 9 non utilisable pour le frein sur le Motor Shield.

 //Remplacer dans fichier IRTimer.hpp : Activer IR_USE_AVR_TIMER1 au lieu de IR_USE_AVR_TIMER2          */
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc                                    */
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__) || defined(__AVR_ATmega168__) \     */
  || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega88PB__)                                      */
# if !defined(IR_USE_AVR_TIMER1) && !defined(IR_USE_AVR_TIMER2)                                    */
#define IR_USE_AVR_TIMER1   // send pin = pin 9                                                     */
//#define IR_USE_AVR_TIMER2     // send pin = pin 3                                                 */
#  endif

Le fichier IRTimer.hpp est localisé dans Arduino\libraries\IRremote\src\private

PrécédentInstaller la bibliothèque IRremoteSuivantSTRUCTURE DE LA CHAÎNE D'INFORMATION

Dernière mise à jour il y a 2 ans