IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

warning: invalid conversion from 'int' to 'int*' [-fpermissive]


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de vidalv
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 15
    Par défaut warning: invalid conversion from 'int' to 'int*' [-fpermissive]
    Bonjour à tous, je voudrais résoudre un problème de warning sur un code Arduino, lors de la compilation j'obtiens :
    warning: invalid conversion from 'int' to 'int*' [-fpermissive]

    Dans le code je déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    #define INTER_A  (3)
    #define INTER_B  (5)
    #define INTER_C  (7)
    #define INTER_D  (9)
     
    #define LED_A    (4)
    #define LED_B    (6)
    #define LED_C    (8)
    #define LED_D    (10)
     
    int etatDilA[] = {0, 0, 0, 0};
     
    int cycle = 0;
     
    void setup() {
     
      pinMode(INTER_A, INPUT_PULLUP);
      pinMode(INTER_B, INPUT_PULLUP);
      pinMode(INTER_C, INPUT_PULLUP);
      pinMode(INTER_D, INPUT_PULLUP);
     
      pinMode(LED_A, OUTPUT);
      digitalWrite(LED_A, LOW);
      pinMode(LED_B, OUTPUT);
      digitalWrite(LED_B, LOW);
      pinMode(LED_C, OUTPUT);
      digitalWrite(LED_C, LOW);
      pinMode(LED_D, OUTPUT);
      digitalWrite(LED_D, LOW);
     
      Serial.begin(9600);
      Serial.println(F(" "));
      Serial.println(F(" Test Lecture de 4 bits.... byte "));
      Serial.println(F(" "));
    }
     
    void loop() {
      Serial.println(F("cycle ABCD == "));
     
      etatDilA[0] = digitalRead(INTER_A);
      etatDilA[1] = digitalRead(INTER_B);
      etatDilA[2] = digitalRead(INTER_C);
      etatDilA[3] = digitalRead(INTER_D);
     
      int valeur[] =  {etatDilA[0], etatDilA[1], etatDilA[2], etatDilA[3]};
     
      Serial.print(F(" DIL position = "));
      Serial.print(etatDilA[0]);
      Serial.print(etatDilA[1]);
      Serial.print(etatDilA[2]);
      Serial.print(etatDilA[3]);
      Serial.println(F(" "));
     
      Serial.print(F(" valeur Bit Tableau :: "));
      Serial.print(valeur[0]); //bit 3,2,1,0
      Serial.print(valeur[1]);
      Serial.print(valeur[2]);
      Serial.print(valeur[3]);
      Serial.println(F(" "));
      delay(1000);
     
      allume_Led(valeur[0]);
     
    }
     
    void allume_Led(int valeur[0]) {
      digitalWrite(LED_D, bitRead(valeur[3], 1)); //bit 3,2,1,0
      digitalWrite(LED_C, bitRead(valeur[2], 1));
      digitalWrite(LED_B, bitRead(valeur[1], 1));
      digitalWrite(LED_A, bitRead(valeur[0], 1));
    }
    La fonction allume_Led renvoie ce warning, avez-vous une idée ?
    Merci.

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 904
    Par défaut
    déclarez la fonction comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void allume_Led(int v) {
    puisque vous lui passez un int en paramètre.. je ne pense pas que c'est ce que vous voulez...

    si vous voulez passer le tableau en paramètre alors on déclare comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void allume_Led(int valeur[]) {
    et on appelle comme celaOn peut aussi préciser la taille du tableau si on veut aider le compilateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void allume_Led(int valeur[4]) {

  3. #3
    Membre averti Avatar de vidalv
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 15
    Par défaut Résolu !
    Bonjour et Merci Jay M !!!

    En effet je déclare : void allume_Led(int valeur[]) {......
    et je pensais que l'appel se faisant en donnant la position, erreur de ma part !!!
    avec : allume_Led(valeur); c'est parfait, plus de Warning à la compil.
    Cool.

    Encore merci.

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 904
    Par défaut
    je pensais que l'appel se faisant en donnant la position, erreur de ma part !!!
    Quand vous écrivez vous accédez au contenu de la case 0 du tableau, donc un int.
    Comme la fonction attendait un tableau (un pointeur sur le premier int du tableau, d'où un int*) le compilateur n'était pas d'accord vous passiez un int là où il attendait un int* et donc vous aviez le
    warning: invalid conversion from 'int' to 'int*' [-fpermissive]

    c'est donc plus qu'un warning, votre code avait un bug. Vous transformiez le contenu du premier élément du tableau en pointeur mémoire et ensuite vous alliez donc faire un peu n'importe quoi avec ce pointeur

Discussions similaires

  1. invalid conversion from int to int* fpermissive
    Par Cedflam dans le forum C++
    Réponses: 1
    Dernier message: 08/04/2019, 10h35
  2. invalid conversion from ‘Position*’ to ‘int’ !?
    Par User Name dans le forum Débuter
    Réponses: 16
    Dernier message: 26/06/2011, 23h57
  3. invalid conversion from int to int
    Par asprog dans le forum Débuter
    Réponses: 13
    Dernier message: 25/01/2011, 16h17
  4. Conversion from int to Long
    Par lahmar.abdel1 dans le forum Langage
    Réponses: 9
    Dernier message: 26/03/2010, 14h06
  5. Réponses: 2
    Dernier message: 24/12/2005, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo