does not name a type (erreur lors de compilation...)

Bonsoir,

Je ne vois pas pourquoi j'ai ce message d'erreur :confused:
J'ai joint une capture d'écran , si vous voyez l'erreur je suis preneur...

Cordialement.

Je dirais que c'est la conséquence d'une erreur de syntaxe ailleurs....

donnes plutôt ton code.

Tsss, faut qu'il cherche un peu.... :stuck_out_tongue:

tahitibob35:
Tsss, faut qu'il cherche un peu.... :stuck_out_tongue:

T'es méchant x)

dfgh:
donnes plutôt ton code.

Voici :slight_smile: :

#include <Servo.h> 
 
//Prototype

float mouvement();


//Déclaration des moteurs 
Servo m1, m2, m3, m4;

// pin de signal aux moteurs (esc)(POUR LA UNO)
float pin6=6;
float pin9=9;
float pin10=10;
float pin11=11;

// pin de signal des potentiomètres ( POUR LA NANO )

float pot=A0;
float pot2=A1;
float pot3=A2;
float pot4=A3;
float potcommun=A4;

//Variable d'état final pour l'envoie
float potfinal;
float potfinal2;
float potfinal3;
float potfinal4;

//Tableau pour l'envoie car NRF24L01 n'envoie que sous forme de tableau...
float puissance[8];
puissance[0]=potfinal;
puissance[1]=potfinal2;
puissance[2]=potfinal3;
puissance[3]=potfinal4;
puissance[4]=pot;
puissance[5]=pot2;
puissance[6]=pot3;
puissance[7]=pot4;






void setup()
      {
pinMode(pin6,OUTPUT);
pinMode(pin9,OUTPUT);
pinMode(pin10,OUTPUT);
pinMode(pin11,OUTPUT);
pinMode(pot, INPUT);
pinMode(pot2, INPUT);
pinMode(pot3, INPUT);
pinMode(pot4, INPUT);
pinMode(potcommun, INPUT);

// Là on écrit quel moteur est rattaché à quel pin (esc)
m1.attach(6);
m2.attach(9);
m3.attach(10);
m4.attach(11);

// un délai de 1 ms pour ne pas trop faire chauffer l'arduino
delay(1);
     }


void loop()
     {       

float mouvement();


  }

//***************************************************************************************************************************************************************************//

//Liste des variables à envoyer: pot,pot2,pot3,pot4,potcommun
//Liste de variables présentent dans la uno: potfinal potfinal etc


  //*************************************************************************************************************************************************************************//

}




float mouvement()
  {
if (pot3 > 5 && pot2 <= 4 && pot <= 4 && pot4 <=4)
    {
  m2.write(potfinal3);
  m3.write(potfinal3);
  m1.write(potcommun);
  m4.write(potcommun);
    }
  else if( pot4 > 5 && pot2<= 4 && pot <= 4 && pot3 <= 4)
    {
  m4.write(potfinal4);
  m2.write(potfinal4);
  m3.write(potcommun);
  m1.write(potcommun);
    }
  else if( pot2 > 5 && pot4 <= 4 && pot <= 4 && pot3 <= 4)
    {
  m4.write(potfinal2);
  m1.write(potfinal2);
  m2.write(potcommun);
  m3.write(potcommun);
    }
   else if( pot > 5 && pot4 <= 4 && pot2 <= 4 && pot3 <= 4 )
    {
  m3.write(potfinal);
  m1.write(potfinal);
  m4.write(potcommun);
  m2.write(potcommun);
    }
 else if(   pot <= 5 && pot4 <= 5 && pot2 <= 5 && pot3 <= 5 )
    {
  m4.write(potcommun);
  m2.write(potcommun);
  m3.write(potcommun);
  m1.write(potcommun);
    }

as tu le droit d'appeler une fonction et de remplir ton tableau là ou tu le fais ?

Un peu de lecture pour savoir comment initialiser un tableau https://www.arduino.cc/en/Reference/Array
Tu as aussi une accolade fermante mal placée.

fdufnews:
Un peu de lecture pour savoir comment initialiser un tableau https://www.arduino.cc/en/Reference/Array
Tu as aussi une accolade fermante mal placée.

Wouaw ! :open_mouth: je pensais qu'on devait faire comme en C...J'avais jamais vu ça...Je crois qu'il manque une accollade fermante à la fin...c'est de ça dont tu parles ?

dfgh:
as tu le droit d'appeler une fonction et de remplir ton tableau là ou tu le fais ?

J'ai appris à faire ça sur Openclassroom donc je pensais que ça se faisait... voici le lien :s
Edit: j'ai fais un test sur code block et le problème venait du fait qu'il ne fallait commencer à affecter des valeurs aux cases du tableau que dans une fonction et non aux déclarations :slight_smile:

C'est du C.

Ces lignes là:

puissance[0]=potfinal;
puissance[1]=potfinal2;
puissance[2]=potfinal3;
puissance[3]=potfinal4;
puissance[4]=pot;
puissance[5]=pot2;
puissance[6]=pot3;
puissance[7]=pot4;

doivent être placées dans une fonction
Si tu initialises ton tableau à sa déclaration alors il faut utiliser les accolades.

J'ai fais ce que tu as dis et j'ai un petit peu avancé mais voici encore un nouveau problème que je n'arrive pas à résoudre...je ne pense pas que tu puisses m'aider car là il s'agit d'un problème de librairies.. :frowning:

voici le code :

#include <SPI.h>
#include "Mirf.h"
#include "MirfHardwareSpiDriver.h"
#include "MirfSpiDriver.h"
#include "nRF24L01.h"


#include <Servo.h> 
 
//Prototype

float mouvement();
int initialisationNRF24L01();
float emission();

//Déclaration des moteurs 
Servo m1, m2, m3, m4;

// pin de signal aux moteurs (esc)(POUR LA UNO)
float pin6=6;
float pin9=9;
float pin10=10;
float pin11=11;

// pin de signal des potentiomètres ( POUR LA NANO )

float pot=A0;
float pot2=A1;
float pot3=A2;
float pot4=A3;
float potcommun=A4;

//Variable d'état final pour l'envoie
float potfinal;
float potfinal2;
float potfinal3;
float potfinal4;

//Tableau pour l'envoie car NRF24L01 n'envoie que sous forme de tableau...
float puissance[8]={potfinal,potfinal2,potfinal3,potfinal4,pot,pot2,pot3,pot4};







void setup()
      {
pinMode(pin6,OUTPUT);
pinMode(pin9,OUTPUT);
pinMode(pin10,OUTPUT);
pinMode(pin11,OUTPUT);
pinMode(pot, INPUT);
pinMode(pot2, INPUT);
pinMode(pot3, INPUT);
pinMode(pot4, INPUT);
pinMode(potcommun, INPUT);

// Là on écrit quel moteur est rattaché à quel pin (esc)
m1.attach(6);
m2.attach(9);
m3.attach(10);
m4.attach(11);

// un délai de 1 ms pour ne pas trop faire chauffer l'arduino
delay(1);

//initialisation de la radiofréquence
int initialisationNRF24L01();
     }


void loop()
     {       
float mouvement();

     }

float mouvement()
  {
if (pot3 > 5 && pot2 <= 4 && pot <= 4 && pot4 <=4)
    {
  m2.write(potfinal3);
  m3.write(potfinal3);
  m1.write(potcommun);
  m4.write(potcommun);
    }
  else if( pot4 > 5 && pot2<= 4 && pot <= 4 && pot3 <= 4)
    {
  m4.write(potfinal4);
  m2.write(potfinal4);
  m3.write(potcommun);
  m1.write(potcommun);
    }
  else if( pot2 > 5 && pot4 <= 4 && pot <= 4 && pot3 <= 4)
    {
  m4.write(potfinal2);
  m1.write(potfinal2);
  m2.write(potcommun);
  m3.write(potcommun);
    }
   else if( pot > 5 && pot4 <= 4 && pot2 <= 4 && pot3 <= 4 )
    {
  m3.write(potfinal);
  m1.write(potfinal);
  m4.write(potcommun);
  m2.write(potcommun);
    }
 else if(   pot <= 5 && pot4 <= 5 && pot2 <= 5 && pot3 <= 5 )
    {
  m4.write(potcommun);
  m2.write(potcommun);
  m3.write(potcommun);
  m1.write(potcommun);
    }
  }
int initialisationNRF24L01()
{
  Mirf.cePin = 8; // CE sur broche 8 
  Mirf.csnPin = 7; // CSN sur broche 7 
  Mirf.spi = &MirfHardwareSpi; // utilisation du port SPI hardware 
  Mirf.init(); // initialise le module SPI 
  Mirf.channel = 0; // utilisation canal 0 pour communiquer (128 canaux disponible, de 0 à 127) 
  Mirf.payload = sizeof(unsigned int); // = 2, déclaration taille du message à transmettre, max 32 octets 
  // RF_SETUP=0000abcd : a=1–>2Mb/s, a=0–>1Mb/s; puissance émission bc=00–>-18 dBm, bc=01–>-12dBm, bc=10–>-6dBm, bc=11–>0dBm; 
  // d=0 pas de gain sur le bruit en réception 
  Mirf.configRegister(RF_SETUP, 0x06); // 1 Mb/s et 0 dBm (puissance maximum) 
  Mirf.config(); // configure le canal et la taille du message 
  Mirf.setTADDR((byte *)"ardu2"); // définition adresse sur 5 octets de la 2ème carte Arduino 
  Mirf.setRADDR((byte *)"ardu1"); // définition adresse sur 5 octets de la 1ere carte Arduino
}


float emission()
{
while(Mirf.isSending()) 
  { 
    // en cours d’émission 
    delay(5); 
  } 
  
 Mirf.send(puissance[0]); 
 Mirf.send(puissance[1]);
 Mirf.send(puissance[2]); 
 Mirf.send(puissance[3]);
 Mirf.send(puissance[4]); 
 Mirf.send(puissance[5]);
 Mirf.send(puissance[6]); 
 Mirf.send(puissance[7]);
   
}

La question que je me pose c'est pourquoi est-ce que tu déclares partout des float alors que tout ce que tu manipules devrait être de type int ou unsigned int.

En plus, je pense qu'il y a une grosse confusion entre numéro de pin et valeur retournée

float pot=A0;
float pot2=A1;
float pot3=A2;
float pot4=A3;

.....

if (pot3 > 5 && pot2 <= 4 && pot <= 4 && pot4 <=4)

A lire les déclarations, on suppose que pot, pot2, ... sont les numéros de pins sur lesquelles sont connectés des potentiomètres.
Dans le if on a l'impression que pot, pot2, ... sont sensés contenir des valeurs.
Pour récupérer la valeur d'un potentiomère branché sur une entrée analogique il faut utiliser analogRead();

Et là:

Servo m1, m2, m3, m4;
....
float potfinal3;

......


 m2.write(potfinal3);

m2 déclare un objet Servo.
potfinal3 est un flottant
alors que m2.write() attend un int en argument

fdufnews:
La question que je me pose c'est pourquoi est-ce que tu déclares partout des float alors que tout ce que tu manipules devrait être de type int ou unsigned int.

En plus, je pense qu'il y a une grosse confusion entre numéro de pin et valeur retournée

float pot=A0;

float pot2=A1;
float pot3=A2;
float pot4=A3;

.....

if (pot3 > 5 && pot2 <= 4 && pot <= 4 && pot4 <=4)




A lire les déclarations, on suppose que pot, pot2, ... sont les numéros de pins sur lesquelles sont connectés des potentiomètres.
Dans le if on a l'impression que pot, pot2, ... sont sensés contenir des valeurs.
Pour récupérer la valeur d'un potentiomère branché sur une entrée analogique il faut utiliser analogRead();

Et là:


Servo m1, m2, m3, m4;
....
float potfinal3;

......

m2.write(potfinal3);



m2 déclare un objet Servo.
potfinal3 est un flottant
alors que m2.write() attend un int en argument

les pots ce sont des potentiomètres qui ont été traitée dans un autre fichier, enfaîte les pots sont des valeurs que je vais envoyer et le code que je t'ai donné est censé récupérer ces pots. Mais enfaîte tu m'as fait réaliser quelque chose qui je pense règle mon problème ! :slight_smile: Merci en tout cas je vais rebosser ce code :slight_smile: