Bonjour,
J'ai fait une mise à jour du programme nunchuk, il fonctionne sur un nunchuk chinois. Il a pas été testé sur nunchuk original.
Il corrige également le pb de blocage écran TFT après utilisation du nunchuk.
J'ai découpé le nunchuk en 3 positions:
- de 0 à 1/3 => les moteurs font des pas de 0.1mm
- de 1/3 à 2/3 => les moteurs font des pas de 1 mm
- de 2/3 au max => cela avance en vitesse rapide.
Quand on relâche les boutons C ou Z cela remet à zéro les compteurs XYZ.
Toute la conf nunchuck est dans le fichier NunchukConfig.h
Permet de diminuer la clock I2C au cas où des nunchuk serait vraiment lent.
#define CLOCK_I2C 400000U //100000U ou 400000U
Debug permet de déboguer le programme à différents niveaux.
Il suffit de se mettre dans repetier en mode logs. Par contre le debug peut bloquer l’écran tft, le sérial0 étant partagé entre l’USB et le TFT.
A utiliser qu’en cas de problème.
#define DEBUG_NUNCHUK 0// 0 =>no debug ,1 =>All Debug,2 =>NunchukDeviceClass,3 =>NunchukClass,4=>CalcMove;
//---------------------------Axe Z-----------------------------//
#define AXE_Z_STEP_1 0.1f => pas du premier tiers
#define AXE_Z_SPEED_1 10 => vitesse d’avance
#define AXE_Z_TRESHOLD_1 60 => seuil max de déclenchement du premier tiers
#define AXE_Z_DELAY_1 500 => délai en ms avant qu’il avance d’un pas de 0.1 mm
//-------------------------------------------------------------//
#define AXE_Z_STEP_2 1
#define AXE_Z_SPEED_2 10
#define AXE_Z_TRESHOLD_2 120
#define AXE_Z_DELAY_2 1000
//-------------------------------------------------------------//
#define AXE_Z_STEP_3 0.1f
#define AXE_Z_SPEED_3 15
#define AXE_Z_TRESHOLD_3 121 => inactif
#define AXE_Z_DELAY_3 0 => inactif
//-------------------------------------------------------------//
#define MIDDLE_THRESHOLD (3u) seuil de point milieu nunchuck avant qu’il fasse avancer les moteurs
Le firmware est dispo ici Firmware
Je laisse le soin à Kachidoki de regarder cette mise à jour.
Mise à Jour Firmware Nunchuk
- RoMaker
- Administrateur du site
- Messages : 5063
- Enregistré le : 02 janv. 2017 20:24
- Localisation : Montpellier
- Contact :
Re: Mise à Jour Firmware Nunchuk
Merci beaucoup pour cette maj, j'ai pas trouvé le temps de la tester j'essaye ça au plus vite
Re: Mise à Jour Firmware Nunchuk
Je viens de faire le test, avec un Nunchuk chinois, ça marche mais plus rien ne fonctionne avec un Nunchuk original.Maru a écrit : ↑10 mars 2019 20:53 Bonjour,
J'ai fait une mise à jour du programme nunchuk, il fonctionne sur un nunchuk chinois. Il a pas été testé sur nunchuk original.
Il corrige également le pb de blocage écran TFT après utilisation du nunchuk.
J'ai découpé le nunchuk en 3 positions:
- de 0 à 1/3 => les moteurs font des pas de 0.1mm
- de 1/3 à 2/3 => les moteurs font des pas de 1 mm
- de 2/3 au max => cela avance en vitesse rapide.
Quand on relâche les boutons C ou Z cela remet à zéro les compteurs XYZ.
Toute la conf nunchuck est dans le fichier NunchukConfig.h
Permet de diminuer la clock I2C au cas où des nunchuk serait vraiment lent.
#define CLOCK_I2C 400000U //100000U ou 400000U
Debug permet de déboguer le programme à différents niveaux.
Il suffit de se mettre dans repetier en mode logs. Par contre le debug peut bloquer l’écran tft, le sérial0 étant partagé entre l’USB et le TFT.
A utiliser qu’en cas de problème.
#define DEBUG_NUNCHUK 0// 0 =>no debug ,1 =>All Debug,2 =>NunchukDeviceClass,3 =>NunchukClass,4=>CalcMove;
//---------------------------Axe Z-----------------------------//
#define AXE_Z_STEP_1 0.1f => pas du premier tiers
#define AXE_Z_SPEED_1 10 => vitesse d’avance
#define AXE_Z_TRESHOLD_1 60 => seuil max de déclenchement du premier tiers
#define AXE_Z_DELAY_1 500 => délai en ms avant qu’il avance d’un pas de 0.1 mm
//-------------------------------------------------------------//
#define AXE_Z_STEP_2 1
#define AXE_Z_SPEED_2 10
#define AXE_Z_TRESHOLD_2 120
#define AXE_Z_DELAY_2 1000
//-------------------------------------------------------------//
#define AXE_Z_STEP_3 0.1f
#define AXE_Z_SPEED_3 15
#define AXE_Z_TRESHOLD_3 121 => inactif
#define AXE_Z_DELAY_3 0 => inactif
//-------------------------------------------------------------//
#define MIDDLE_THRESHOLD (3u) seuil de point milieu nunchuck avant qu’il fasse avancer les moteurs
Le firmware est dispo ici Firmware
Je laisse le soin à Kachidoki de regarder cette mise à jour.
Aucun mouvement ne fonctionne et rien non plus avec l'écran TFT.
De retour avec le Firmware 0.95, fonctionnement correct.
Régis
Re: Mise à Jour Firmware Nunchuk
Bonjour Maru et bienvenue sur le forum.
J'ai lancé un coup de Beyond Compare entre les deux versions, et le moins qu'on puisse dire, c'est que ce n'est pas qu'une simple mise à jour !
Alors j'ai pas encore creusé en profondeur, mais j'ai déjà plusieurs remarques, dont la première qui est probablement plus pour Romain :
J'ai lancé un coup de Beyond Compare entre les deux versions, et le moins qu'on puisse dire, c'est que ce n'est pas qu'une simple mise à jour !
Alors j'ai pas encore creusé en profondeur, mais j'ai déjà plusieurs remarques, dont la première qui est probablement plus pour Romain :
- La version que je maintiens sur github et gitlab est basée sur la dernière version de Repetier : 1.0.3. Cette mise à jour 0.96 semble basée sur la version 1.0.2.
- Il y a une non homogénéité dans les appellations, on utilise le terme Nunchuk, et non pas Nunchuck. Le mélange des deux peut conduire à des confusions lors de la relecture de code.
- D'un point de vue strictement programmeur, la charte de codage de Repetier n'est pas respectée, indentation, tabulation, nommage, termes en français etc... De même que ça manque de factorisation, tu as par exemple trois fois (presque) le même code qui est dupliqué pour les calculs des axes.
- Dans la "NunchukClass::loop", tu instancies un objet "nunchuk" de type classe "Nunchuck", qui est assez énorme. Outre le 'c' qui s'est introduit, on a du mal à comprendre son rôle face à la "NunchukClass" (couche appli), surtout que j'ai l'impression qu'elle reprend le boulot de la "NunchukDeviceClass" (couche physique). C'est quoi exactement cette nouvelle classe, une surcouche à la couche physique ? De plus, cet objet instancie lui-même plusieurs tableaux de classe "axe". Tout ça va obliger le MCU à faire de l'allocation dynamique à chaque tour de boucle (j'ai compté grossièrement 130 octets en RAM). De tête on utilise un peu moins des trois quarts de la RAM, donc on ne devrait pas être confronté au problème de la fragmentation mémoire, mais le CPU perd un temps fou pour pas grand chose. Je me demande comment le motion planner arrive encore à tourner à vitesse normale.
- J'ai l'impression que tu rempli le buffer par petits segments à chaque tour de boucle, ce qui doit probablement introduire une latence dans les changement de direction ?
Re: Mise à Jour Firmware Nunchuk
Bonjour Kachidoki
Effectivement c'est un 1.0.2 mais c'est celle que distribue Romain sur son site.
C'est quoi l'adresse du gitlab ou du github.
Je pensais avoir corrigé tous les termes nunchuck apparemment non
Concernant la classe, il est vrai que lorsqu'on développe sur pc on utilise plutôt des classes que l'on passe dans les méthodes pour faciliter la maintenance du code, on n'est pas limité par la ram et le processeur .
Effectivement c'est un 1.0.2 mais c'est celle que distribue Romain sur son site.
C'est quoi l'adresse du gitlab ou du github.
Je pensais avoir corrigé tous les termes nunchuck apparemment non
Concernant la classe, il est vrai que lorsqu'on développe sur pc on utilise plutôt des classes que l'on passe dans les méthodes pour faciliter la maintenance du code, on n'est pas limité par la ram et le processeur .