J'ai comme projet de faire une souris télécommandée et autonome pour mon chat.
J'ai acheté une Arduino Nano Every oficielle et je n'arrive pas à compiler le code.
J'ai des messages d'erreur pointent vers la librairie "IRremote.h" de sheriff qui me sert pour télécommander la souris.
Voici les messages d'erreur (le début seulement) :
Arduino : 1.8.12 (Linux), Carte : "Arduino Nano Every, None (ATMEGA4809)"
In file included from /home/electrocat/Arduino/libraries/IRremote/IRremoteInt.h:111:0,
from /home/electrocat/Arduino/libraries/IRremote/IRremote.h:24,
from /home/electrocat/Arduino/libraries/IRremote/IRremote.cpp:23:
/home/electrocat/Arduino/libraries/IRremote/IRremote.cpp: In function 'void TIMER2_COMPA_vect()':
/home/electrocat/Arduino/libraries/IRremote/boarddefs.h:95:32: error: no match for 'operator|=' (operand types are 'PORT_t {aka PORT_struct}' and 'int')
# define BLINKLED_ON() (PORTB |= B00100000)
/home/electrocat/Arduino/libraries/IRremote/IRremote.cpp:193:10: note: in expansion of macro 'BLINKLED_ON'
else BLINKLED_ON() ; // if no user defined LED pin, turn default LED pin for the hardware on
^~~~~~~~~~~
/home/electrocat/Arduino/libraries/IRremote/boarddefs.h:96:33: error: no match for 'operator&=' (operand types are 'PORT_t {aka PORT_struct}' and 'int')
# define BLINKLED_OFF() (PORTB &= B11011111)
/home/electrocat/Arduino/libraries/IRremote/IRremote.cpp:195:10: note: in expansion of macro 'BLINKLED_OFF'
else BLINKLED_OFF() ; // if no user defined LED pin, turn default LED pin for the hardware on
^~~~~~~~~~~~
In file included from /home/electrocat/Arduino/libraries/IRremote/IRremoteInt.h:111:0,
from /home/electrocat/Arduino/libraries/IRremote/IRremote.h:24,
from /home/electrocat/Arduino/libraries/IRremote/irRecv.cpp:1:
/home/electrocat/Arduino/libraries/IRremote/irRecv.cpp: In member function 'void IRrecv::enableIRIn()':
/home/electrocat/Arduino/libraries/IRremote/boarddefs.h:234:3: error: 'TCCR2A' was not declared in this scope
TCCR2A = _BV(WGM21); \
^
/home/electrocat/Arduino/libraries/IRremote/irRecv.cpp:127:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
TIMER_CONFIG_NORMAL();
^~~~~~~~~~~~~~~~~~~
/home/electrocat/Arduino/libraries/IRremote/boarddefs.h:234:3: note: suggested alternative: 'TCB2'
TCCR2A = _BV(WGM21); \
^
/home/electrocat/Arduino/libraries/IRremote/irRecv.cpp:127:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
TIMER_CONFIG_NORMAL();
Alors que sur une Arduino Uno je n'ai aucune erreur, mais j'ai besoin d'une carte plus petite.
J'ai déjà essayé avec différent programmeurs (compilateurs) mais rien ne change.
Et voici mon code (Les parties qui utilisent le recepteur IR seulement :
#include <IRremote.h>
const char DIN_RECEPTEUR_INFRAROUGE = 2;
IRrecv MonRecepteurInfraRouge(DIN_RECEPTEUR_INFRAROUGE);
decode_results MessageRecu;
void loop() {
if (mode == "Tele") { // Si il faut passer en mode télécommandé //
vitesse_plus_mt_droit = 0; //
vitesse_moins_mt_droit = 0; //
vitesse_plus_mt_gauche = 0; //
vitesse_moins_mt_gauche = 0;
mode = prog_IR();
}
else if (mode == "Auto") { // Si il faut passer en autonome
mode = prog_US();
}
else if (mode == "Stop") { // Si il faut passer en stop
Serial.println ("STOP !!!");
analogWrite(plus_mt_droit, 0);
analogWrite(moins_mt_droit, 0);
analogWrite(plus_mt_gauche, 0);
analogWrite(moins_mt_gauche, 0);
}
if (MonRecepteurInfraRouge.decode(&MessageRecu)) {
if (MessageRecu.value == 0xFFB04F) { // #
mode ="Tele";
}
if (MessageRecu.value == 0xFF6897) { // *
mode = "Auto";
}
MonRecepteurInfraRouge.resume();
}
}
Mieux vaut oublier pour l'instant les soi-disant "Nouvelles Nano" si l'on compte utiliser des librairies 'pointues' comme celle-ci, des librairies taillées sur mesure pour un ou plusieurs microcontrolleurs bien définis.
Ces "Nouvelles Nano" ne bénéficient pas encore de l'adaptation ou de portage de librairies à l'échelle ou cela été fait pour ESP8266 et ESP32
An Improved Arduino Nano If you used Arduino Nano in your projects in the past, the Nano Every is a pin-equivalent substitute. Your code will still work, and you will NOT need to re-wire those motors you planned in your original design. The main differences are: a better processor, and a micro-USB connector.
Écrivez leur en disant que vous voulez la retourner pour publicité mensongère... on sait jamais, mais j’ai des doutes...
bon en pratique c’est plus un mensonge par omission, il faut s’attendre en effet à ce que les librairies non officielles présentent des différences ou incompatibilités, surtout dès qu’on utilise des resources matérielles comme les timers. Leur engagement est plutôt de fournir les bibliothèques de base....
Enfin rien ne vous empêche de vous pencher sur la spec du nouveau processeur et de proposer une version de la bibliothèque IR c’est ça aussi l’open source....
Une nano classique c'est toujours 20€ depuis 10 ans chez arduino mais ailleurs c'est seulement 2€.
Et c'est eactement la même chose.
Juste si tu es sous Windows il faudra charge un pilote (driver) pour le ch340G.
Si tu es sous linux il n'y a rien à faire : linux se débrouille tout seul.
je suis un peu dégoutté car j'ai fait achat pour rien...
Non , juste un achat prématuré.... ces cartes sont intéressantes mais il faut les considérer comme 'pas finies'....
Un jour ou l'autre elles seront plus largement exploitables et leurs avantages seront constatables.
En fait j'avais déjà acheté une nano chinoise mais je n'arrivait plus à téléverser le code (messages d'erreur avrdude not in sync PS : si vous vous avez des idées pour résoudre le problème, elles sont las bienvenues !) et j'avais déjà cherché sur le forum de l'aide mais rien ne changeait, doc j'ai voulu acheté une nano officielle et finalement j'ai pris une nano every car son prix était beaucoup plus bas.
En tout cas maintenant je me renseignerai plus avant d'acheter !
@J-M-L
Je vais leur écrire pour leur dire de revoir la doc !
si vous êtes sous windows, il faut installer un driver pour le CH340 afin qu'elle soit reconnue.
vous aviez regardé le post qui est tout en haut du forum "ARDUINO : problèmes de téléversement" ?
OK , merci pour le retour mais il faut peut être préciser que là tu parles de la carte Nano 'chinoise' ( cf message #7) pas de la carte Nano Every du titre du fil de discussion.
Une lecture 'en diagonale' pourrait laisser penser que les Nano Every 'dernier cri' ont un vieux bootloader !!
Electrocat:
Je viens de re-rechercher et après un sacré bout de temps je suis tombé sur ce topic, et le message #20 à résolu mon problème.
ce n'est quand même pas satisfaisant.. maintenant que vous savez que votre carte est fonctionnelle, installez un bootloader "moderne" dessus... ça vous simplifiera la vie !
Oui, enfin apparemment, il me met "Gravure de la séquence d’initialisation terminée." mais j'ai les mêmes messages d'erreur avrdude not in sync quand j'essai de téléverser le code blink alors que je fais exactement comme dans les tutos.