Bonjour,
je débute dans l'arduino et j'essaye de creer une radio fm avec un tea5767 et un écran lcd nokia5110
j'ai chargé le code et les 2 bibliotheques
cependant lors de la compilation ça bloque C:\Users\farre\OneDrive\Documents\Arduino\radio fm_copy_v2\radio fm\radio fm.ino:113:1: error: a function-definition is not allowed here before '{' token
{
pourriez vous m'aider ?
merci d'avance
Bonjour,
Pas de réponses possibles, la boule de cristal est en panne.
Il faudrait au minimum poster le code dans le respect de la charte.
Bonjour beansimca
Il te manque une accolade } quelque part. Si tu ne trouves pas, mets ton code en ligne.
Cordialement
jpbbricole
Bonjour,
merci pour ta réponse, je viens de faire une vérification et j'ai rajouter au niveau des lignes 60/66 des accolades , mais ça ne fonctionne pas car j 'ai toujours le même problème.
Voici ci dessous le code
cordialement
// put your setup code here, to run once:
/////////////////////////////////////////////////////////////////
// Arduino FM Radio Project //
// Get the latest version of the code here: //
// 📥 http://educ8s.tv/arduino-fm-radio-project //
/////////////////////////////////////////////////////////////////
#include <TEA5767N.h> //https://github.com/mroger/TEA5767
#include <LCD5110_Graph.h> //http://www.rinkydinkelectronics.com/library.php?id=48
LCD5110 lcd(8,9,10,12,11);
TEA5767N radio = TEA5767N();
extern unsigned char BigNumbers[];
extern unsigned char TinyFont[];
extern uint8_t splash[];
extern uint8_t signal5[];
extern uint8_t signal4[];
extern uint8_t signal3[];
extern uint8_t signal2[];
extern uint8_t signal1[];
int analogPin = 0;
int val = 0;
int frequencyInt = 0;
float frequency = 0;
float previousFrequency = 0;
int signalStrength = 0;
void setup() {
radio.setMonoReception();
radio.setStereoNoiseCancellingOn();
initScreen();
showSplashScreen();
Serial.begin(9600);
}
void loop() {
for(int i;i<30;i++)
{
val = val + analogRead(analogPin);
delay(1);
}
val = val/30;
frequencyInt = map(val, 2, 1014, 8700, 10700); //Analog value to frequency from 87.0 MHz to 107.00 MHz
float frequency = frequencyInt/100.0f;
if(frequency - previousFrequency >= 0.1f || previousFrequency - frequency >= 0.1f)
{
lcd.clrScr();
radio.selectFrequency(frequency);
printSignalStrength();
printStereo();
printFrequency(frequency);
previousFrequency = frequency;
}
{
lcd.clrScr();
printSignalStrength();
printStereo();
printFrequency(frequency);
delay(50);
val = 0;
}
}
void initScreen()
{
lcd.InitLCD();
lcd.setFont(BigNumbers);
lcd.clrScr();
}
void showSplashScreen()
{
lcd.drawBitmap(0, 0, splash, 84, 48);
lcd.update();
delay(3000);
lcd.clrScr();
lcd.update();
}
void printFrequency(float frequency) {
String frequencyString = String(frequency,1);
if(frequencyString.length() == 4)
{
lcd.setFont(BigNumbers);
lcd.print(frequencyString,14,12);
lcd.update();
}
else
{
lcd.setFont(BigNumbers);
lcd.print(frequencyString,0,12);
lcd.update();
}
}
void printStereo() {
boolean isStereo = radio.isStereo();
if(isStereo)
{
lcd.setFont(TinyFont);
lcd.print("STEREO",55,2);
}
}
void printSignalStrength() {
signalStrength = radio.getSignalLevel();
String signalStrenthString = String(signalStrength);
if(signalStrength >=15)
{
lcd.drawBitmap(1, 1, signal5, 17 , 6);
}else if(signalStrength >=11 && signalStrength <15)
{
lcd.drawBitmap(1, 1, signal4, 17 , 6);
}
else if(signalStrength >=9 && signalStrength <11)
{
lcd.drawBitmap(1, 1, signal3, 17 , 6);
}
else if(signalStrength >=7 && signalStrength <9)
{
lcd.drawBitmap(1, 1, signal2, 17 , 6);
}
else if(signalStrength <7)
{
lcd.drawBitmap(1, 1, signal1, 17 , 6);
}
void loop() {
// put your main code here, to run repeatedly:
}
Bonjour,
Regarde bien l'indentation (et au besoin réindente ton code avec ctrlt ou cmdt).
On voit bien qu'il manque une accolade à la fin de le fonction printSignalStrength()
Bonsoir beansimca
Tu as plusieurs trucs bizarres:
if(frequency - previousFrequency >= 0.1f || previousFrequency - frequency >= 0.1f)
{
//lcd.clrScr();
//radio.selectFrequency(frequency);
printSignalStrength();
printStereo();
printFrequency(frequency);
previousFrequency = frequency;
}
{
//lcd.clrScr();
printSignalStrength();
printStereo();
printFrequency(frequency);
delay(50);
val = 0;
}
Il ne manquerai pas un else entre ces deux accolades esseulées?
Dans ton sketch, tu as 2 void loop().
void printSignalStrength() { n'a pas d'accolade } de terminaison.
Une façon d'écrire les if, les fonctions, les for... bref tout ce qui nécessite 2 accolades au début et à la fin { et } est de mettre ces paires d'accolades sur le même plan vertical ainsi:
Avant:
void printSignalStrength() {
....
}
Après:
void printSignalStrength()
{
....
}
Ca permet de trouver ce genre d'erreur plus facilement et, perso, je trouve la lecture du programme plus aisée.
Cordialement
jpbbricole
Bonjour beansimca,
Enlève la boucle Loop laissée par erreur à la fin de ton sketch et ajoute une accolade fermante à la fin du sketch.
J'ai fais le test en choisissant une Nano et ça compile.
Cordialement.
merci à tous pour votre aide, le problème de l'accolade est résolu.
mais j'ai un nouveau soucis qui ne doit pas être très grave car Fitness04 a réussi à compiler le code
voici le nouveau message d'erreur
:`C:\Users\farre\AppData\Local\Temp\cc7yKDIb.ltrans0.ltrans.o: In function `printSignalStrength':
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:120: undefined reference to `signal5'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:120: undefined reference to `signal5'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:124: undefined reference to `signal4'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:124: undefined reference to `signal4'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:128: undefined reference to `signal3'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:128: undefined reference to `signal3'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:132: undefined reference to `signal2'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:132: undefined reference to `signal2'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:136: undefined reference to `signal1'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:136: undefined reference to `signal1'
C:\Users\farre\AppData\Local\Temp\cc7yKDIb.ltrans0.ltrans.o: In function `showSplashScreen':
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:82: undefined reference to `splash'
C:\Users\farre\OneDrive\Documents\Arduino\radio fm/radio fm.ino:82: undefined reference to `splash'
collect2.exe: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1`
le code que j'utilise viens d'un site internet, je pense que c'est un probleme d'adressage mais je ne vois pas comment le résoudre.
si vous avez une piste....merci d'avance
Les références indéfinies correspondent à des variables définis dans un autre fichier (elles sont indiquées comme extern dans ton code). Est-ce que le fichier en question est présent dans le répertoire de ton projet?
Bonjour Beansimca, bonjour à tous,
Il te manque les deux fichiers :
- icon.c
- splash.c
dans le répertoire du sketch.
Je pense que tu as fait un copier - coller du sketch trouvé sur ce site : Arduino FM Radio Project - educ8s.tv - Watch Learn Build
mais que tu n'as pas, du coup, tous les fichiers.
Il faut que tu télécharge le Zip complet "Download" après la rubrique "CODE AND SCHEMATIC" et que tu le dézippes dans un répertoire nommé : FMRadio
Tu devrais avoir sous ce répertoire :
- FMRadio.ino
- icons.c
- splash.c
Essaies et tu verras que ca compile sans erreurs.
merci à tous, grâce à vos indications , j'ai pu compiler mon projet.
cependant , la carte arduino nano que je viens acheter est un clone et à priori, il y a un problème de pilote , l'applicatif arduino ne reconnais pas le carte !
il me reste plus qu'a acheter un original ![]()
ça me servira de leçon
Les clones sont largement aussi bon que les "officiels"
Faut pas déprimer à la première embûche ![]()
C'est peut-être juste un driver manquant voir ici
Bonsoir,
je reviens vers vous car j'ai reçu ma nouvelle carte arduino originale
je l'ai branché et mauvaise surprise la carte n'est pas reconnue par le pc (comme le générique)
lorsque je branche ma carte UNO sur le pc , le port apparait dans le gestionnaire des périphériques , mais rien pour pour la NANO !
j'ai fait des recherches sur internet pour pallier au problème et je suis complètement perdu
si quelqu'un pouvait m'aider
merci d'avance
Salut.
Pour la NANO officielle : installer le driver FTDI qui normalement doit se trouver dans le répertoire Drivers de l'installation ARDUINO.
Pour la NANO clone : installer le Driver CH341
merci pour le renseignement
j'ai réussi à compiler et à télécharger....ouf ! ![]()
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.