Super_Cinci: Exemple pour l'aiguille de vitesse, qui doit tourner sur 324°pour 0 à 180km/h ...
Je vois qu'il n'y'a pas que le tableau de bord qui est "tuné" dans cette voiture XD
Le code ci-dessus marche super, je n'ai pas encore testé les aiguilles à rayon de 40px, mais il me tarde de le faire!
Je vois que tu efface la ligne précédente avant de tracer la nouvelle. Tu n'as pas de possibilité de travailler en double buffer ?
volatile byte a0_x[26]={50, 50, 50, 50, 50, 49, 49, 49, 48, 48, 48, 47, 46 ,46, 45, 45, 44, 43, 42, 41, 40, 40, 39, 38, 36, 35};
volatile byte a0_y[26]={ 0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 25, 27, 28, 29, 31, 32, 33, 34, 35};
...
v_index = (vitesse + 10) % 25;
2 remarques ici. Tu t'en rendras certainement compte tout seul mais comme les vacances sont terminées, je suis vénère d'être rentré alors j'ai envie de faire ch... tout le monde pour des trucs totalement puérils ]:D (comme sur l'autoroute où je roule a 120 sur la voie de gauche quand y'a des grosses BMW derrière moi :grin:) - volatile est un mauvais choix ici. volatile s'utilise pour des variables qui peuvent être modifiées en dehors du court normal du programme, par exemple une variable globale utilisée entre une routine d'interruption et le corps du programme, pour éviter que le compilateur optimise l'accès en ne lisant qu'une fois la variable. Dans ton cas, les valeurs sont figées et donc c'est plutôt le mot clefs "const" que tu devrais utiliser. - l'index étant calculé %25, les valeurs possible sont de 0 à 24. Donc la taille du tableau devrait être a0_xy25 au lieu de a0_xy26 puis que l'index [25] ne sera jamais utilisé.
Tu peux aussi éviter le %25 qui implique une division entière ce qui coûte pas mal d'instructions (essaye de mesurer son exécution) Puisque tu fais déjà une série de tests par rapport à 15, 40, .... dans chaque test tu peux calculer index comme une simple addition ou soustraction.
lcd_line(x0 - 4, y0 - 4, x00, y00, PUT); // dessin de l'aiguille en 5 segments
lcd_line(x0 + 4, y0 + 4, x00, y00, PUT);
lcd_line(x0 - 4, y0 + 4, x00, y00, PUT);
lcd_line(x0 + 4, y0 - 4, x00, y00, PUT);
lcd_line(x0, y0, x00, y00, PUT);
Les tracés multiples décalés de +/- 4 pixels c'est pour faire plus épais ?
A quand la vidéo ?