Nous sommes le Dim 21 Jan 2018, 19:12


radiocommande 14 ch

Faites de votre bébé la star du web !!!
  • Auteur
  • Message
Hors ligne
Avatar de l’utilisateur

fred1456

Bricoleur débutant

  • Messages: 14
  • Inscription: Dim 17 Mai 2015, 07:44

radiocommande 14 ch

Message non luMar 4 Aoû 2015, 19:22

radiocommande pour nos robots, qui a malheureusement un peu de latence.

Photos

http://imageshack.com/a/img661/9417/JTKcMc.jpg
https://imageshack.com/i/f0oCr2i2j

Plans
https://imageshack.com/i/f06AeKqRj
https://imageshack.com/i/ex5LZ2L0j

algorithmes (merci à susawa)
emission
Code: Tout sélectionner
boolean Switch2, Switch3, Switch4, Switch5;
short Potentiometer0, Potentiometer1, Potentiometer2, Potentiometer3, Potentiometer4, Potentiometer5, Potentiometer6, Potentiometer7, Potentiometer8, Potentiometer9;


    char TablePrint[39] = {0};

    void setup()
    {
    Serial.begin(9600);
    Serial2.begin(9600);
    pinMode(2, INPUT);
    pinMode(3, INPUT);
    pinMode(4, INPUT);
    pinMode(5, INPUT);
 
    pinMode(A0, INPUT);
    pinMode(A1, INPUT);
    pinMode(A2, INPUT);
    pinMode(A3, INPUT);
    pinMode(A4, INPUT);
    pinMode(A5, INPUT); 
    pinMode(A6, INPUT);
    pinMode(A7, INPUT);
    pinMode(A8, INPUT); 
    pinMode(A9, INPUT);
    }

    void loop()
    {
      //read PIN
      Switch2= digitalRead(2);
      Switch3= digitalRead(3);
      Switch4= digitalRead(4);
      Switch5= digitalRead(5);
     
      Potentiometer0 = analogRead(A0);
      Potentiometer1 = analogRead(A1);
      Potentiometer2 = analogRead(A2);
      Potentiometer3 = analogRead(A3);
      Potentiometer4 = analogRead(A4);
      Potentiometer5 = analogRead(A5);
      Potentiometer6 = analogRead(A6);
      Potentiometer7 = analogRead(A7);
      Potentiometer8 = analogRead(A8);
      Potentiometer9 = analogRead(A9);

     
       //SERIAL print
      TablePrint[0] = '+';                    //bit Start
     
      TablePrint[1] = 'A';                   
      TablePrint[2] = (char) (Switch2 & 0xFF);

      TablePrint[3] = 'B';                   
      TablePrint[4] = (char) (Switch3 & 0xFF);
       
      TablePrint[5] = 'C';                   
      TablePrint[6] = (char) (Switch4 & 0xFF);
     
      TablePrint[7] = 'D';                   
      TablePrint[8] = (char) (Switch5 & 0xFF);
     
      TablePrint[9] = 'E';                 
      TablePrint[10] = (char) (Potentiometer0>>8 & 0xFF);
      TablePrint[11] = (char) (Potentiometer0 & 0xFF);
     
      TablePrint[12] = 'F';                 
      TablePrint[13] = (char) (Potentiometer1>>8 & 0xFF);
      TablePrint[14] = (char) (Potentiometer1 & 0xFF);
     
      TablePrint[15] = 'G';                 
      TablePrint[16] = (char) (Potentiometer2>>8 & 0xFF);
      TablePrint[17] = (char) (Potentiometer2 & 0xFF);
     
      TablePrint[18] = 'H';                 
      TablePrint[19] = (char) (Potentiometer3>>8 & 0xFF);
      TablePrint[20] = (char) (Potentiometer3 & 0xFF);
     
      TablePrint[21] = 'I';                 
      TablePrint[22] = (char) (Potentiometer4>>8 & 0xFF);
      TablePrint[23] = (char) (Potentiometer4 & 0xFF);
 
      TablePrint[24] = 'J';                 
      TablePrint[25] = (char) (Potentiometer5>>8 & 0xFF);
      TablePrint[26] = (char) (Potentiometer5 & 0xFF);
     
      TablePrint[27] = 'K';                 
      TablePrint[28] = (char) (Potentiometer6>>8 & 0xFF);
      TablePrint[29] = (char) (Potentiometer6 & 0xFF);
 
      TablePrint[30] = 'L';                 
      TablePrint[31] = (char) (Potentiometer7>>8 & 0xFF);
      TablePrint[32] = (char) (Potentiometer7 & 0xFF);

      TablePrint[33] = 'M';                 
      TablePrint[34] = (char) (Potentiometer8>>8 & 0xFF);
      TablePrint[35] = (char) (Potentiometer8 & 0xFF);

      TablePrint[36] = 'N';                 
      TablePrint[37] = (char) (Potentiometer9>>8 & 0xFF);
      TablePrint[38] = (char) (Potentiometer9 & 0xFF);
           
      TablePrint[39] = '/';                   //bit END
     
      Serial2.write(TablePrint, 40);

      delay(330);
    }


reception
Code: Tout sélectionner
    // values for remote control
short nIndiceChaine = 0;
unsigned char buffer_Receive[512] = {0};

boolean ValueA,ValueB,ValueC,ValueD;
short ValueE,ValueF,ValueG, ValueH,ValueI, ValueJ,  ValueK,ValueL,ValueM,ValueN;

    //(programme principal)

    void setup()
    {
      //SERIAL
      Serial.begin(9600);
      Serial2.begin(9600);
    }

    void loop()
    {

      //lecture de data non bloquante
      while(Serial2.available() > 0)
      {
        buffer_Receive[nIndiceChaine] = Serial2.read();
        ++nIndiceChaine;
      }

     //Serial.println(nIndiceChaine);
      while(nIndiceChaine >= 50)//taille min de la string a lire
      {

          if(buffer_Receive[0] == '+' && buffer_Receive[39] == '/') //recherche start && end
            {
             
              ValueA = (bool)(buffer_Receive[2]);
              ValueB = (bool)(buffer_Receive[4]);
              ValueC = (bool)(buffer_Receive[6]);
              ValueD = (bool)(buffer_Receive[8]);
             
              ValueE = (((unsigned short)(buffer_Receive[10])) << 8 )+ (unsigned short)(buffer_Receive[11]& 0xFF);
              ValueF = (((unsigned short)(buffer_Receive[13])) << 8 )+ (unsigned short)(buffer_Receive[14]& 0xFF);
              ValueG = (((unsigned short)(buffer_Receive[16])) << 8 )+ (unsigned short)(buffer_Receive[17]& 0xFF);
              ValueH = (((unsigned short)(buffer_Receive[19])) << 8 )+ (unsigned short)(buffer_Receive[20]& 0xFF);
              ValueI = (((unsigned short)(buffer_Receive[22])) << 8 )+ (unsigned short)(buffer_Receive[23]& 0xFF);
              ValueJ = (((unsigned short)(buffer_Receive[25])) << 8 )+ (unsigned short)(buffer_Receive[26]& 0xFF);
              ValueK = (((unsigned short)(buffer_Receive[28])) << 8 )+ (unsigned short)(buffer_Receive[29]& 0xFF);
              ValueL = (((unsigned short)(buffer_Receive[31])) << 8 )+ (unsigned short)(buffer_Receive[32]& 0xFF);
              ValueM = (((unsigned short)(buffer_Receive[34])) << 8 )+ (unsigned short)(buffer_Receive[35]& 0xFF);
              ValueN = (((unsigned short)(buffer_Receive[37])) << 8 )+ (unsigned short)(buffer_Receive[38]& 0xFF);
             
     
         Serial.print("Chaine recue: ");
         Serial.write(buffer_Receive, 50);
         Serial.print('\n');
         
         //debug
         Serial.print ("ValueA    ");
         Serial.println (ValueA);
         Serial.print ("ValueB    ");
         Serial.println (ValueB);
         Serial.print ("ValueC    ");
         Serial.println (ValueC);
         Serial.print ("ValueD    ");
         Serial.println (ValueD);
         Serial.print ("ValueE    ");
         Serial.println (ValueE);
         Serial.print ("ValueF    ");
         Serial.println (ValueF);
         Serial.print ("ValueG    ");
         Serial.println (ValueG);
         Serial.print ("ValueH    ");
         Serial.println (ValueH);
         Serial.print ("ValueI    ");
         Serial.println (ValueI);
         Serial.print ("ValueJ    ");
         Serial.println (ValueJ);
         Serial.print ("ValueK    ");
         Serial.println (ValueK);
         Serial.print ("ValueL    ");
         Serial.println (ValueL);
         Serial.print ("ValueM    ");
         Serial.println (ValueM);
         Serial.print ("ValueN    ");
         Serial.println (ValueN);

         
          //clear
          for(unsigned int ii = 0; ii < 512-1; ++ii)
          {
            buffer_Receive[ii] = 0;
          }     
          nIndiceChaine = 0;
        }
        else
        {
          //clear
          for(unsigned int ii = 0; ii < 511; ++ii)
          {
            buffer_Receive[ii] = buffer_Receive[ii+1];
          }
            --nIndiceChaine;
        }
      }     
      //delay(100);
    }
Hors ligne
Avatar de l’utilisateur

Esprit

Membre asso caliban

  • Messages: 1641
  • Inscription: Jeu 11 Fév 2010, 11:14
  • Localisation: Ottignies

Re: radiocommande 14 ch

Message non luMer 5 Aoû 2015, 08:51

Merci pour le partage de ton travail, très bonne pratique ! :bravo:
Simon, membre fondateur de l'Association Caliban Belgique,
.·° Mon blog : Le Chipoteur de Brols .·°·. L' Association Caliban Belgique °·.
"L'impossible, nous ne l'atteignons pas, mais il nous sert de lanterne." (René Char)
Hors ligne
Avatar de l’utilisateur

mike118

Bricoleur confirmé

  • Messages: 34
  • Inscription: Dim 6 Avr 2014, 07:25

Re: radiocommande 14 ch

Message non luLun 28 Sep 2015, 05:10

Salut, de combien est la latence ?

As tu essayer d'augmenter le baudrate sur l'émission et la réception ? et d'enlever le " delay(330); " dans l'émission ( ou bien à minima de le réduire ) ?

As tu essayer d'augmenter le baudrate pour l'affichage sur la console dans la partie réception ?

En fait si ça se trouve tu as l'impression qu'il y a de la latence car afficher les données sur la console prend prend plus de temps que lire les entrées renvoyer les valeurs et tout décoder ...

Bonne continuation ;)

Retourner vers Vos réalisations

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron