optimisation code arduino
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

optimisation code arduino



  1. #1
    djbouns

    optimisation code arduino


    ------

    Bonjour,

    J'essai d'optimiser mon code arduino car je suis a 81%.
    Certaine fonction était répéter pour chaque pin de sortie.
    Exemple, j'ai 3 oscillateurs je recopiait 3 fois la même fonction en changent juste oscillo1, oscillo2 ...
    Je cherche donc a optimiser ces fonctions mais je coince sur un code erreur.
    Comme souvent sa doit être un détail qui saute au yeux qui va vous faire grincer des dents
    J'y suis depuis 10h se matin ...

    Code:
    uint8_t positionOscillo[3];
    boolean vaEtVientOscillo[3];
    uint32_t tempsPrecedentOscillo[3];
    uint16_t delaisMouvementOscilloMillis = 2000;
    uint8_t angle1Oscillo = 0;
    uint8_t angle2Oscillo = 180;
    
    void setup() {
      Serial.begin(9600);
    }
    
    void oscillateur() {// *******************************************************************************************************************************************
      uint8_t i = 1;
      while (i <= 3) { // 3 oscillateurs
        if (delaisMouvementOscilloMillis[i] >= 1000) { // si delaisMouvementOscilloMillis inferieur a 1 seconde, pas de boucle.
          if (millis() - tempsPrecedentOscillo[i] >= delaisMouvementOscilloMillis[i]) { // mouvement des oscillateur  toutes les "delaisMouvementOscilloMillis"
            tempsPrecedentOscillo[i] = millis();
            // *******************************************************************************************************************************************
            if (positionOscillo[i] == angle1Oscillo[i]) {
              positionOscillo[i]++;
              vaEtVientOscillo[i] = 0;
            }
            else if (positionOscillo[i] == angle2Oscillo[i]) {
              positionOscillo[i]-- ;
              vaEtVientOscillo[i] = 1;
            }
            else if ((vaEtVientOscillo[i] == 0) && (positionOscillo[i] < angle2Oscillo[i])) {
              positionOscillo[i]++ ;
            }
            else if ((vaEtVientOscillo[i] == 1) && (positionOscillo[i] > angle1Oscillo[i])) {
              positionOscillo[i]--;
            }
            Serial.print("oscillo n°");
            Serial.println(i);
          }
        }
        i++;
      }
    }
    void loop() {
      void oscillateur();
    }
    Mais j'ai ce code erreur que je ne comprend pas
    Code:
    sketch_jul05a:16: error: invalid types 'uint16_t {aka unsigned int}[uint8_t {aka unsigned char}]' for array subscript
    
         if (delaisMouvementOscilloMillis[i] >= 1000) {
    
                                           ^
    
    sketch_jul05a:17: error: invalid types 'uint16_t {aka unsigned int}[uint8_t {aka unsigned char}]' for array subscript
    
           if (millis() - tempsPrecedentOscillo[i] >= delaisMouvementOscilloMillis[i]) { // mouvement des oscillateur  toutes les "delaisMouvementOscilloMillis"
    
                                                                                    ^
    
    sketch_jul05a:20: error: invalid types 'uint8_t {aka unsigned char}[uint8_t {aka unsigned char}]' for array subscript
    
             if (positionOscillo[i] == angle1Oscillo[i]) {
    
                                                      ^
    
    sketch_jul05a:24: error: invalid types 'uint8_t {aka unsigned char}[uint8_t {aka unsigned char}]' for array subscript
    
             else if (positionOscillo[i] == angle2Oscillo[i]) {
    
                                                           ^
    
    sketch_jul05a:28: error: invalid types 'uint8_t {aka unsigned char}[uint8_t {aka unsigned char}]' for array subscript
    
             else if ((vaEtVientOscillo[i] == 0) && (positionOscillo[i] < angle2Oscillo[i])) {
    
                                                                                         ^
    
    sketch_jul05a:31: error: invalid types 'uint8_t {aka unsigned char}[uint8_t {aka unsigned char}]' for array subscript
    
             else if ((vaEtVientOscillo[i] == 1) && (positionOscillo[i] > angle1Oscillo[i])) {
    
                                                                                         ^
    
    exit status 1
    invalid types 'uint16_t {aka unsigned int}[uint8_t {aka unsigned char}]' for array subscript
    Si quelqu’un peut m'explique le problème svp .

    Merci d'avance

    -----

  2. #2
    albanxiii
    Modérateur

    Re : optimisation code arduino

    Bonjour,

    Vous déclarez ces variables comme des uint_quelquechose, et vous vous en servez comme de tableaux d'uint_quelquechose.

    @+
    Not only is it not right, it's not even wrong!

  3. #3
    pm42

    Re : optimisation code arduino

    Et d'ailleurs, c'est ce que dit le compilateur

  4. #4
    djbouns

    Re : optimisation code arduino

    Bonjour tout les deux,

    je veux juste que "i" = 1, 2 ou 3.
    C'est un tableau ?
    Si oui, faut que je cherche sur le net car je ne connait pas du tout ça :/

  5. A voir en vidéo sur Futura
  6. #5
    djbouns

    Re : optimisation code arduino

    un endroit ou je pourrais trouver un cours / exemple svp ?

  7. #6
    albanxiii
    Modérateur

    Re : optimisation code arduino

    Re,

    Cherchez "cours langage C" dans n'importe quel moteur de recherche, m'enfin !

    En deux mots, et avec des types plus habituels :

    Code:
    int n;    /* déclare une variable de type int (entier) */
    int p[3]; /* déclare une variable de type tableau de int, de taille 3. 
                 Pour utiliser chaque élément du tableau il faut 
                 préciser lequel c'est, par p[0] ou p[1] ou p[2]. 
                 Ou bien si i est un int valant entre 0 et 2, p[i]. */
    Not only is it not right, it's not even wrong!

  8. #7
    djbouns

    Re : optimisation code arduino

    Citation Envoyé par albanxiii Voir le message
    Re,

    Cherchez "cours langage C" dans n'importe quel moteur de recherche, m'enfin !
    bonjour

    bien sur que j'ai trouver des resultat pour le tableau mais pas utiliser dans une fonction donc je ne comprenait pas.
    Mais combiner a vos 5 lignes le chemin c'est éclairci merci.
    Je laisse tourner mais cela fonctionne pour le moment
    et j’applique cela a toute mes fonctions ... y a du boulo

    Merci a tous

Discussions similaires

  1. [Programmation] Débutante programation Arduino : optimisation d'un programme
    Par gwendoline dans le forum Électronique
    Réponses: 11
    Dernier message: 16/08/2017, 20h44
  2. probléme de code arduino
    Par invitee9ac00b8 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 25/02/2017, 17h24
  3. ARDUINO, pont en H, code
    Par invitefed6c128 dans le forum Électronique
    Réponses: 74
    Dernier message: 10/04/2015, 13h08
  4. Code arduino
    Par invite5b777b38 dans le forum Électronique
    Réponses: 16
    Dernier message: 28/03/2015, 21h30
  5. optimisation de code Matlab
    Par invitec35bc9ea dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 06/03/2011, 17h50