Changer pin easyVR shield

Bonjour,

Actuellement en projet pour le bac, j'utilise le shield easy VR et une carte ARDUINO uno rev3. Je commande un moteur grâce au motor shield officiel mais il utilise les pins 12/13/8/9. Le problème Cest que le shield EasyVR utilise les pins 12/13 et 8/9 donc je ne peux pas le changer car je ne sais pas comment faire.

Merci d'avance pour votre aide, Cordialement.ield

Bonjour, Oui, non, peut être, on est en plein dans la logique flou. Il faudrait connaître le matériel, le code, le schéma, etc...

C'est du serial

if defined(ARDUINO) && ARDUINO >= 100

include "Arduino.h"

include "SoftwareSerial.h"

SoftwareSerial port(12,13);

else // Arduino 0022 - use modified NewSoftSerial

include "WProgram.h"

include "NewSoftSerial.h"

NewSoftSerial port(12,13);

endif

include "EasyVR.h"

EasyVR easyvr(port);

//définition des valeurs de comparaison (voir action() ) enum Groups { GROUP_15 = 15, };

enum Group15 { G15_ROUGE = 0, G15_VERTE = 1, G15_BLEUE = 2, G15_VIOLET = 3, G15_ORANGE = 4, G15_BLANC = 5, G15_JAUNE = 6, G15_ETEINDRE = 7, };

EasyVRBridge bridge;//group et idx seront utilisés pour communiquer avec le module int8_t group, idx; // group = valeur passée au module et idx = valeur de retour du moduleint erreur = 7; //LED ROUGE d'erreur

int vert = 5; //LED RGB pilotée en PWM int rouge = 6; int bleu = 3; void setup() { // bridge mode? if (bridge.check()) { cli(); //Désactivation des interruptions sur Arduino bridge.loop(0, 1, 12, 13); //Configuration du mode bridge - liaison série logicielle port 12 et 13 } // configuration liaison série Serial.begin(9600); port.begin(9600);

pinMode(erreur,OUTPUT); // LED rouge erreur sur sortie 7 if (!easyvr.detect()) { Serial.println("EasyVR non détecté!"); for (;;); } easyvr.setPinOutput(EasyVR::IO1, LOW); Serial.println("EasyVR detecté!"); easyvr.setTimeout(5); //Conf. du module timeout = 5s easyvr.setLanguage(5); // langue francaise group = GROUP_15; // Référence au groupe prédéfini }void loop() { easyvr.setPinOutput(EasyVR::IO1, HIGH); // Led sur module allumée digitalWrite(erreur,LOW); // signalisation erreur - led rouge Serial.print("Prononcez un mot du groupe 15 "); Serial.println(group); easyvr.recognizeCommand(group); //Procédure de reconnaissance lancée, le module reçoit la trame de définition du groupe de mot

do { // Possibilité d'effectuer d'autres tâches en attendant la réponse du module } while (!easyvr.hasFinished()); // true dès réception d'une trame réponse du module

easyvr.setPinOutput(EasyVR::IO1, LOW); // LED sur Module éteinte group = GROUP_15; //Groupe par défaut (le seul) idx = easyvr.getCommand(); //Récupération de l'index fournit par le module quand il y a détection if (idx >= 0) { // Messages pour le débug sur la console série arduino uint8_t train = 0; char name[32]; Serial.print("Commande: "); Serial.print(idx); if (easyvr.dumpCommand(group, idx, name, train)) { Serial.print(" = "); Serial.println(name); } else Serial.println(); easyvr.playSound(0, EasyVR::VOL_FULL); action(); //fonction de commande } else // erreur ou timeout { if (easyvr.isTimeout()) Serial.println("Temps d'attente max depasse, recommencez..."); int16_t err = easyvr.getError(); if (err >= 0) { digitalWrite(erreur,HIGH); Serial.print("Erreur "); Serial.println(err, HEX); } } } //Fonction de traitement des commandes en fonction des mots reconnus (idx) void action() { switch (group) { case GROUP_15: switch (idx) { case G15_ROUGE: couleur(255,0,0); break; case G15_VERTE: couleur(0,255,0); break; case G15_BLEUE: couleur(0,0,255); break; case G15_VIOLET: couleur(255,0,255); break; case G15_ORANGE: couleur(255,75,0); break; case G15_BLANC: couleur(255,255,255); break; case G15_JAUNE: couleur(255,255,0); break;

case G15_ETEINDRE: couleur(0,0,0); break; } break; } } //fonction de commande de la LED RGB void couleur(int R, int V, int B){ analogWrite(rouge,R); analogWrite(vert,V); analogWrite(bleu,B); }

Re, Mon environnement n'arrive pas à compiler ceci : for (;;);

Alors tu commences par traiter ce point : Pour voir plus clair

Non mais il marche Cest sur et certain. Ce que je veux Cest changer les pin. A la ligne SoftwareSerial port(12,13) j'aimerais mettre autre chose que 12 et 13 mais le problème Cest que je ne peux pas car ça ne marche pas

personne ?

const int buttonPin = 5;
const int buttonPin1 = 4;
int buttonState = 0;  //capteur haut sur broche 5
int buttonState1 = 0; //capteur bas sur broche 4

int arrete = 0;


  ////////////////////////////////////////////
 // ******LE PORT 12 EST INUTILISABLE******//
////////////////////////////////////////////




#include "Arduino.h"
#if !defined(SERIAL_PORT_MONITOR)
  #error "Arduino version not supported. Please update your IDE to the latest version."
#endif

#if defined(SERIAL_PORT_USBVIRTUAL)
  // Shield Jumper on HW (for Leonardo and Due)
  #define port SERIAL_PORT_HARDWARE
  #define pcSerial SERIAL_PORT_USBVIRTUAL
#else
  // Shield Jumper on SW (using pins 12/13 or 8/9 as RX/TX)
  #include "SoftwareSerial.h"
  SoftwareSerial port(12, 13);
  #define pcSerial SERIAL_PORT_MONITOR
#endif

#include "EasyVR.h"

EasyVR easyvr(port);

//Groups and Commands
enum Groups
{
  GROUP_0  = 0,
  GROUP_1  = 1,
};

enum Group0 
{
  G0_VOLET = 0,
};

enum Group1 
{
  G1_OUVRE = 0,
  G1_FERME = 1,
};


int8_t group, idx;

void setup()
{
    //capteur haut et bas
  pinMode(buttonPin, INPUT);
  pinMode(buttonPin1, INPUT);
  
  //moteur
  pinMode(13, OUTPUT); //Initiates Motor Channel A pin
  pinMode(8, OUTPUT); //Initiates Brake Channel A pin
  int arrete = 0;
  
  
  
  
  
  
  
  // setup PC serial port
  pcSerial.begin(9600);

  // bridge mode?
  int mode = easyvr.bridgeRequested(pcSerial);
  switch (mode)
  {
  case EasyVR::BRIDGE_NONE:
    // setup EasyVR serial port
    port.begin(9600);
    // run normally
    pcSerial.println(F("---"));
    pcSerial.println(F("Bridge not started!"));
    break;
    
  case EasyVR::BRIDGE_NORMAL:
    // setup EasyVR serial port (low speed)
    port.begin(9600);
    // soft-connect the two serial ports (PC and EasyVR)
    easyvr.bridgeLoop(pcSerial);
    // resume normally if aborted
    pcSerial.println(F("---"));
    pcSerial.println(F("Bridge connection aborted!"));
    break;
    
  case EasyVR::BRIDGE_BOOT:
    // setup EasyVR serial port (high speed)
    port.begin(115200);
    // soft-connect the two serial ports (PC and EasyVR)
    easyvr.bridgeLoop(pcSerial);
    // resume normally if aborted
    pcSerial.println(F("---"));
    pcSerial.println(F("Bridge connection aborted!"));
    break;
  }

  while (!easyvr.detect())
  {
    Serial.println("EasyVR not detected!");
    delay(1000);
  }

  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR detected!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(5);

  group = EasyVR::TRIGGER; //<-- start group (customize)
}

void action();

void loop()
{
  
  
  arrete = digitalRead(8);
  void arret();
  buttonState = digitalRead(buttonPin);
  buttonState1 = digitalRead(buttonPin1);
  
  
  
  
  
  easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

  Serial.print("Say a command in Group ");
  Serial.println(group);
  easyvr.recognizeCommand(group);

  do
  {
    // can do some processing while waiting for a spoken command
  }
  while (!easyvr.hasFinished());
  
  easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

  idx = easyvr.getWord();
  if (idx >= 0)
  {
    // built-in trigger (ROBOT)
    // group = GROUP_X; <-- jump to another group X
    return;
  }
  idx = easyvr.getCommand();
  if (idx >= 0)
  {
    // print debug message
    uint8_t train = 0;
    char name[32];
    Serial.print("Command: ");
    Serial.print(idx);
    if (easyvr.dumpCommand(group, idx, name, train))
    {
      Serial.print(" = ");
      Serial.println(name);
    }
    else
      Serial.println();
    easyvr.playSound(0, EasyVR::VOL_FULL);
    // perform some action
    action();
  }
  else // errors or timeout
  {
    if (easyvr.isTimeout())
      Serial.println("Timed out, try again...");
    int16_t err = easyvr.getError();
    if (err >= 0)
    {
      Serial.print("Error ");
      Serial.println(err, HEX);
    }
  }
}

void action()
{
    switch (group)
    {
    case GROUP_0:
      switch (idx)
      {
      case G0_VOLET:
        // write your action code here
        group = GROUP_1;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    case GROUP_1:
      switch (idx)
      {
      case G1_OUVRE:
        // write your action code here
        digitalWrite(13, HIGH); //Establishes forward direction of Channel A
        analogWrite(11, 255);   //Spins the motor on Channel A at full speed
        
        
        group = GROUP_1;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_FERME:
        // write your action code here
          digitalWrite(13, LOW); //Establishes forward direction of Channel A
          analogWrite(11, 255);   //Spins the motor on Channel A at full speed
        
        
        group = GROUP_1;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}

pour void arret

void arret()
{
  if ((arrete ==LOW)&&(buttonState1 ==HIGH)&&(digitalRead(13) ==LOW))
  {
    digitalWrite(8, HIGH); //Eengage the Brake for Channel A
   }
   else if ((arrete ==LOW)&&(buttonState ==HIGH)&&(digitalRead(13) ==HIGH))
   {
     digitalWrite(8, HIGH); //Eengage the Brake for Channel A
     }
  }

donc mon shield VR utilise le pin 12/13 et j’aimerais le changer pour qu’il utilise un autre car mon moteur est commandé par le pin 12/8 ou 13/9

bonjour,
il n’y a pas 36 solutions
1- soudure pour modifier les pistes du shield
2- shield à coté en volant et fils pour alimentation et pins

Soudure ?

Donc il n'y a pas de solution logiciel ?

stonedall: Soudure ?

Donc il n'y a pas de solution logiciel ?

les pistes sur les shields sont imprimées, donc s'il n'y a pas de jumpers pour changer de pistes, pas a tortiller du fion :)

Oui mais il y a

SoftwareSerial port(12,13);

Donc je me dis qu'on aurai pu mettre

SoftwareSerial port(x,y);