Dans un souci de compacite je dois troquer un méga pour un nano.
Je modifie mes pins et hop je charge sans souci a part qu'il le dit que la mémoire est juste et que ca peut faire des bug. Effectivemebt le programme ne se charge pas complètement et il n'affiche que quelques ligne avec des caractères aleatoire. Il me rzdre tout de même 220octets jai supprime des chose j'ai gagne 200 octets mais même si ca affiche mieux ca ne marche toujours pas. Bref il me semble en effet que j'ai un problème de mémoire. 2 questions se posent a moi
1 le nano pourrait til ne pas être compatible avec mon prog ? Je vois pas pourquoi mais bon jai bien choisi le nano 328p old bootloader driver ch340 je crois. Jai modifie mes pins...
2 est ce que je pourrai passer au teensy lc ? Est ce un choix possible ? Le lc a til le scl sda ?
Merci
Il faut tenter de rendre le programme compatible Nano
les cartes Teensy (6 modèles différents) ont toutes au moins un port I2C (donc SDA,SCL), certaines y compris avec ARM, tolèrent le 5V sur leurs entrées. Elles représentent une bonne extension au système Arduino avec un support sérieux.
recenser les lignes de programme consommant inutilement de la RAM
d'autres sur ce forum sauront mieux que moi traiter cette quesion, ils l'ont déjà fait.
Perso cela ne me sera pas d'une grande utilité mais tant que tu ne postera pas ton code je ne vois pas comment il sera possible à d'autres de t'aider.
Tu devrai pouvoir optimiser ton code, ce serait surprenant qu'il soit parfait.
Les fonctions arduino ne sont pas optimisées --> ce n'est pas le but d'Arduino. Certaines d'entre elles peuvent peut être être remplacée par du code plus simple adapté au seul 328p.
Il existe une autre carte format nano et brochage nano à base de SamD21 (le micro ARM 32 bits de la Zero).
Par rapport à la solution proposée il y aura probablement des reprise de code à faire et le SamD21 ne possède aucune E/S 5V tolérante.
pepe:
Le projet Arduino n'est pas à proprement parler une entreprise de développement et de fabrication de cartes
A ce que je sache c'est leur principale source de revenu et il me semble que la guerre fratricide a eu pour cause la maîtrise de ces revenus.
Je n'ai peut-être rien compris ?
Actuellement Arduino ne fait plus aucune innovation sur les avr donc même si ce que font les concurrents est basique mais utile on ne vas pas cracher dans la soupe.
Pire Arduino ne signale pas à ses clients qu'il abandonne des produits.
Quand un produit est en fin de vie , un vrai fournisseur l'annonce et casse les prix, éventuellement il propose des commandes "balais".
Arduino n'annonce rien, arrête la production du produit et maintient plein pot les prix de lancement tant qu'il n'a pas épuisé ses stocks.
Sur le "Store Arduino" il y a deux zones : USA et dépendances, Europe et dépendances.
Allez y faire un tour et vous verrez que certains produits sont déclarés "Retired" dans une zone et dans l'autre toujours en production ou "currently sold out" ce qui ne signifie pas "Retired" .
Le produit n'est déclaré "Retired" que si dans la zone concernée les stocks sont vides.
Je ne sais pas comment vous appelez ces méthodes mais pour moi c'est au minimum du mépris et c'est très probablement scier la branche sur laquelle on est assis quand les clients se rendront compte qu'ils ont été bernés.
Une possible explication a l'abandon des avr est le "très probable rachat" d'Arduino par ARM --> il faut vite évacuer ces produits non ARM.
Très "probable" rachat :
Sur le site moneyhouse (équivalent Suisse de société.com) on peut voir que la société Arduino AG a 3 administrateurs : un certain Fabio Volante (est-celui qui travaillait avec Musto ?) et deux membres de la haute direction d'ARM.
C'est le conseil d'administration qui nomme le président de la société et avec 2 administrateurs sur 3 provenant d'ARM Banzi peut être révoqué à tout moment.
Malgré tous les démentis on peut raisonnablement douter de l'indépendance actuelle d'Arduino. https://www.moneyhouse.ch/fr/company/arduino-ag-4525473031
68tjs:
Perso cela ne me sera pas d'une grande utilité mais tant que tu ne postera pas ton code je ne vois pas comment il sera possible à d'autres de t'aider.
merci mais pour le moment je posais la question de facon generale, j'ai deja epuré une aprtie du code et ca ne change rien a mon probleme le programme ne fonctionne pas meme en enlevant la moitié
je ne connaissait pas ces clones petits format merci pour les pistes
j'ai acheté un teensy LC et je pensais pouvoir regler mon probleme mais non, bien que les bibliotheques soient compatible, une partie de mon code (que je n'ai pas ecrit) ne fonctionne pas dessus
error: expected constructor, destructor, or type conversion before '(' token
ISR (PCINT2_vect) {
je ne sais pas pourquoi. et je ne trouve rien a ce su.jet que j'arrive a comprendre.....
Je posterai la partie qui pose probleme.
En fait c'est la routine qui concerne mon encodeur rotatif. En ssuprimant cette partie le programme se compile comme il faut. J'utilise des bibliothèques compatible a coté de ça donc ça passe. J'avoue ne rien comprendre a cette partie du code, autant je suis arrivé a me débrouiller sur le reste, la partie encodeur pfff je n'y arrive pas. J'ai reglé mes soucis de lag electroniquement, bien que j'ai trouvé un autre code plus fluide mais peu précis. Peut etre que je pourrai adapter ce bout de code dans le miens mais je n'y suis pas arrivé... Des que je peux je poste la partie de code qui me pose un souci
Merci
merci pour ces precisions, je vais quand meme tester cela apres avoir fait fonctioné l'encodeur.
merci pour la bibli j'etais justement en train de ragarder comment l'adapter
voici mon code au cas ou vous avez une idée de comment changer cette partie pour le teensy
//Rotary encoder stuff. This will always run in the background allowing you to use the knob
//as the primary control mechanism
ISR (PCINT2_vect) {
// If interrupt is triggered by the button
if (!digitalRead(A1)) {
button = true;
}
// Else if interrupt is triggered by encoder signals
else {
// Read A and B signals
boolean A_val = digitalRead(A2);
boolean B_val = digitalRead(A3);
// Record the A and B signals in seperate sequences
seqA <<= 1;
seqA |= A_val;
seqB <<= 1;
seqB |= B_val;
// Mask the MSB four bits
seqA &= 0b00001111;
seqB &= 0b00001111;
// Compare the recorded sequence with the expected sequence
if (seqA == 0b00001001 && seqB == 0b00000011) {
cnt1++;
left = true;
}
if (seqA == 0b00000011 && seqB == 0b00001001) {
cnt2++;
right = true;
}
}
}