Go Down

Topic: BitmapU8GlibCreator (Read 7525 times) previous topic - next topic

Jul 18, 2012, 03:44 pm Last Edit: Sep 04, 2012, 09:25 pm by mr-pantalon Reason: 1
Salut à tous,

J'ai récemment eu l'idée d'apprendre à utiliser mon Arduino Uno avec un écran Graphique (GLCD), du coup je me suis orienté vers l'U8Glib mais arrivé au stade de la création de bitmap au format hexadécimal, je me suis rendu compte que l'opération était longue et fastidieuse si on s'efforce de faire le travail avec la calculette Windows x).
Du coup je me suis dit "Mais pourquoi pas faire un Soft pour ça !?",
et voila comment je me suis lancé dans un programme écrit en c++11 avec Qt ce qui donne :

BitmapU8GlibCreator


voila quelque screen :

screen1 :
http://uploads.siteduzero.com/files/391001_392000/391564.png

screen2:
http://uploads.siteduzero.com/files/391001_392000/391563.png

screen3 :
http://uploads.siteduzero.com/files/391001_392000/391565.png

screen4 :
http://uploads.siteduzero.com/files/391001_392000/391568.jpg

Ajout récent : X pour changer de couleur rapidement.

La nouvelle version est sortie :

Cette version est une réécriture complète de l'ancienne version, elle a été rebaptiser graphene pour l'occasion.Cette version n'a pas pour but d'ajouter de nouvelle fonction (sauf le zoom), elle a pour but de me facilité l'ajout prochaine de nouvelle fonction (le dessins avancer (faire des cercle,des carre écrire du texte ...).
Lien:



Windows 32 bit Installer : http://www.mediafire.com/?1is5rvr0x6ccsga
Windows 32 bit Portable : http://www.mediafire.com/?qef8soldfck9htf
Windows 64 bit Installer : http://www.mediafire.com/?cvkhxsdhy0ipc33
Windows 64 bit Portable : http://www.mediafire.com/?7pjfrk7vu73272x

Linux 64 bit : http://www.mediafire.com/?01bdpsylb9f1wv1
Linux 32 bit : arrive bientot !

sous linux l'installation de Qt et de freetype est necessaire

2 bug sont connus :
windows:
   - La conversion de font avec la version installer peut échouer si vous n'êtes pas administrateur.

linux:
   - (ce n'est oas vraiment un bug) sous ubuntu avec le thème par défaut le menu aura une couleur proche du texte ce qui peut gêner la visibilité pour une solution : <lien url="http://www.siteduzero.com/forum-83-801171-7686248-qmenu-personalisee.html">http://www.siteduzero.com/forum-83-801171-7686248-qmenu-personalisee.html</lien>

Voila merci de rapporter bug et suggestion.

Post anglais : http://arduino.cc/forum/index.php/topic,114815.msg864055.html#msg864055

piflechien54

Proverbe Tibétain : Un mensonge est un saut du haut du toit


jihelbi

La suite... Un convertisseur de police TrueType ???

JLB


LA version 1.5 est sortie avec la conversion de police true type !!

Heloderma-kris

Merci c'est super pour ce qui comme moi veule faire des interface tactile !!!

Merci ! si tu as des suggestions ou des bugs a signalé n'ésite pas !

skywodd

Salut,

Génial comme programme, trés pratique, merci ;)

Du coup j'ai fait un petit article dessus pour présenter ton travail :
http://skyduino.wordpress.com/2012/08/11/arduino-u8glibcreator-le-dessin-sur-glcd-sans-prise-de-tete/


Merci ! si tu as des suggestions ou des bugs a signalé n'ésite pas !

Quelques remarques / améliorations possible :
- Boutons N&B en bas qui dépasse de quelques pixels :P
- Tu utilise un format de fichier maison (.mrb ?) non documenté -> pas top, reste sur du vrai bitmap ce serais beaucoup mieux ;)
- Ouvrir une bitmap et importer une bitmap = même chose ...
- De même exporter une bitmap et sauvegarder une bitmap = même chose
- "Voir le code hexa" -> click en droit en anglais, ça fait c*n quand même ;)
- Pas de bouton "Tout copier dans le presse papier" dans la fenêtre "voir le code hexa" -> dommage
- Tu devrais limiter le nombre de valeurs hexa par ligne à (largeur_image / 8) sinon avr-gcc sortira une erreur de compilation sur de grande image
- Fonction pour générer un .h -> ce serait bien qu'elle génère au choix : soit le .h pour drawBitmap (en RAM), soit le .h pour drawBitmapP (en PROGMEM)
- De même que générer les prototypes drawBitmap ou drawBitmapP qui vont bien (avec les largeur/hauteur pré-calculé)
- Exporter en XBM, c'est vraiment utile ?
- Afficher la taille de la zone de dessin (= de l'image) en bas à coté des boutons serait pas mal
- Pouvoir choisir la palette de couleur, U8Glib géré aussi des écrans couleurs, pas seulement N&B ;)
- Choix de la largeur / hauteur d'une nouvelle image dans une même fenêtre, et correction auto du multiple de 8 par le multiple supérieur
- Affichage de la "grille" (ligne séparant les différents pixels), sinon c'est relou de dessiner point par point sur un petit écran sans zoomer
- Outils de dessin avancé (ligne, rectangle, cercle, elipse, texte, ...) et de sélection
- ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

#9
Aug 27, 2012, 10:20 pm Last Edit: Aug 28, 2012, 11:55 am by mr-pantalon Reason: 1
Salut, merci pour l'article tes remarque vont être pris en compte dans une futur v2 (plantage du pc sans récupération des donnée = réécriture de 0,et sa va mettre un peu de temps rentrée iminante oblige  :~ et le fait que j'ai un projet d'ide qui utilisera cmake et qui s'affranchira des sketch ).

Super_Cinci

Salut!

Excellent travail! C'est presque exactement ça qu'il me faut pour mes GLCD, en fait, pour gagner du temps, j'utilise la CGRAM pour y coller des morceaux d'image de 8x8 px, ça va beaucoup plus vite ensuite pour l'affichage (un code caractère perso me colle instantanément 64 pixels d'image... (très pratique pour des icônes par exemple). Selon comment tu peux gérer ton LCD, il y a peut-être quelque chose à prendre : moi, c'est un TC6963C qui fait tourner la dalle LCD (je me demande si tu n'as pas le même...). J'utilise la page texte pour le fond et la page graphique pour ce qui bouge. le TC6963C affiche les deux pages en les superposant :


seuls les aiguilles et les textes en gros caractères sont du graphique, les icônes sont des caractères persos en mode texte (4 caractères par icône 16x16). Du coup, si une aiguille passe sur du texte, ça ne l'efface pas, toujours ça de moins à gérer. Avec le mode "EXOR", les pages graphique et le texte s'inversent sur les pixels communs.

Si ça te donne des idées... tu découpe tes bitmaps en carrés de 8x8 pour en faire des caractères persos, une fois implantés dans la CGRAM, l'affichage sera plus fluide... Par contre, inconvénient : les caractères de la page texte sont sur une grille de 8x8, donc on ne peut pas les mettre où on veut...

Salut merci de ta réponse je vais y réfléchir a cette méthode.

Je passe juste dire que la prochaine version sera baptiser "Graphene", elle aura exactement les même fonction que U8GlibCreator (je vais quand même peut être rajouter le undo et le redo) étant donner que c'est une réécriture complète qui me permettra plus tard de rajouter d'avantage de fonction comme dessiner des rectangle des cercle du texte directement dans le programme.Cette version sera disponible sur Linux 32 bit,64 bit,Windows 32 bit,64 bit (avec les versions de Qt recompiler pour l'occasion) directement a la sortie.

un ptit screen de l'avancement :


Super_Cinci

Très prometteur, tout ça!

Je suppose que tu as fait une fonction spéciale pour réencoder l'image? c'est surtout ce bout de code qui m'intéresse, car je si sais générer un fichier bitmap avec les fonctions de bases de visualstudio, il faut encore le redimensionner et le convertir en hexa NB simple...

De mon côté, j'ai rempli l'EEPROM de mon pauvre atmega168 de 55 patterns de caractères persos (soit 440 octets sur les 512 dispos...), ainsi que 34 caractères simples (des lignes) qui sont générés à la volée par du code. Le transfert des 81 caractères (648 octets en tout, soit près de 2800 commandes) dans la CG-RAM du LCD est presque invisible au setup (il faut encore que je mesure le temps que ça prend).

Je suis de près ton avancée! bon courage!

Quote
Très prometteur, tout ça!

Je suppose que tu as fait une fonction spéciale pour réencoder l'image? c'est surtout ce bout de code qui m'intéresse, car je si sais générer un fichier bitmap avec les fonctions de bases de visualstudio, il faut encore le redimensionner et le convertir en hexa NB simple...

De mon côté, j'ai rempli l'EEPROM de mon pauvre atmega168 de 55 patterns de caractères persos (soit 440 octets sur les 512 dispos...), ainsi que 34 caractères simples (des lignes) qui sont générés à la volée par du code. Le transfert des 81 caractères (648 octets en tout, soit près de 2800 commandes) dans la CG-RAM du LCD est presque invisible au setup (il faut encore que je mesure le temps que ça prend).

Je suis de près ton avancée! bon courage!


Merci, et oui j'ai fais une chtite fonction de conversion mais c'est tres simple suffit de chopper 8 pixel de le convertir en un nombre binaire et de le convertir en hexa.

sinon Graphene 1.0 est sortie !

Go Up