Mai 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendrier |
|
| | clavier_afficheur | |
|
+6mindstorm Jean Claude Yannick papydall bignono loulou08 10 participants | Auteur | Message |
---|
loulou08
Nombre de messages : 63 Age : 81 Localisation : Champagne-Ardenne Date d'inscription : 16/05/2010
| Sujet: clavier_afficheur Jeu 17 Oct 2013 - 18:58 | |
| bonsoir a tous un inutilitaire de plus quoique ? mode d'emploi dans la bordure de la fenetre - Code:
-
error_french height 0,600 top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2 caption 0,"double-cliquer sur un afficheur pour lui donner le focus. cliquer sur une touche " dim digit7,digi,lft,nb_dig label number label 7_segments:gosub 7_segments lft=30:nb_dig=4 for i=1 to nb_dig digi=i*100 digit7_segments(digi,50,lft) on_double_click digi,number lft=lft+170 width 0,lft+30 next i
color digi+8,22,220,22 digit7=digi label clavier_numerique : gosub clavier_numerique dim N%,V%,P%,H%,W%,T%,L%,CR%,CV%,CB%,CT$ dim FN$,FS%,FB%,FI%,FU%,RF%,GF%,BF%
' ====== end :' == ' ====== number: digit7=number_double_click for i=1 to nb_dig digi=i*100 color digi+8,162,162,162 next i color digit7+8,20,220,22 return
7_segments:
dim segment$,led$ ,del,point,digist1,digit2,digit3,digit4,i label affiche return sub digit7_segments(digit,tp,lt) container digit: top digit,tp:left digit,lt:width digit,150:height digit,250 color digit,130,130,130:caption digit,"afficheur 7_segments " alpha digit+1:top digit+1,20:left digit+1,40:parent digit+1,digit : caption digit+1,"A" color digit+1,162,162,162 :width digit+1,60:height digit+1,21 alpha digit+2:top digit+2,35:left digit+2,105 :parent digit+2,digit : caption digit+2,"B" color digit+2,162,162,162 :width digit+2,21:height digit+2,75 alpha digit+3:top digit+3,130:left digit+3,105 :parent digit+3,digit: caption digit+3,"C" color digit+3,162,162,162 :width digit+3,21:height digit+3,75 alpha digit+4:top digit+4,200:left digit+4,40:parent digit+4,digit : caption digit+4,"D" color digit+4,162,162,162 :width digit+4,60:height digit+4,21 alpha digit+5:top digit+5,130:left digit+5,15 :parent digit+5,digit : caption digit+5,"E" color digit+5,162,162,162 :width digit+5,21:height digit+5,75 alpha digit+6:top digit+6,35:left digit+6,15 :parent digit+6,digit : caption digit+6,"F" color digit+6,162,162,162 :width digit+6,21:height digit+6,75 alpha digit+7:top digit+7,110:left digit+7,40:parent digit+7,digit : caption digit+7,"G" color digit+7,162,162,162 :width digit+7,60:height digit+7,21
alpha digit+8:top digit+8,220:left digit+8,115 :parent digit+8,digit: caption digit+8,"P" color digit+8,162,162,162 :width digit+8,21:height digit+8,21 end_sub ' =============================== affiche: for i= 0 to 6 led$=mid$(segment$,i+1,1) del=val(led$) if i=0 and del=1 then color digit7+1,10,250,10 if i=0 and del=0 then color digit7+1,162,162,162 if i=1 and del=1 then color digit7+2,10,250,10 if i=1 and del=0 then color digit7+2,162,162,162 if i=2 and del=1 then color digit7+3,10,250,10 if i=2 and del=0 then color digit7+3,162,162,162 if i=3 and del=1 then color digit7+4,10,250,10 if i=3 and del=0 then color digit7+4,162,162,162 if i=4 and del=1 then color digit7+5,10,250,10 if i=4 and del=0 then color digit7+5,162,162,162 if i=5 and del=1 then color digit7+6,10,250,10 if i=5 and del=0 then color digit7+6,162,162,162 if i=6 and del=1 then color digit7+7,10,250,10 if i=6 and del=0 then color digit7+7,162,162,162 next i return ' ==================================== clavier_numerique: label clavier dim num,aff$,tch,lt_cav
num=digi+100 lt_cav=(width(0)/2-100)
' NUM => numero system de depart ' : TP => top clavier ' : : lt_cav => left clavier ' : : : clavier_hexa(num,320,lt_cav)
return '============================= clavier: for i=1 to 16 if clicked(i+num)=1 then tch=i-1 next i select tch case 0 :segment$="1111110":gosub affiche:return case 1 :segment$="0110000":gosub affiche:return case 2 :segment$="1101101":gosub affiche:return case 3 :segment$="1111001":gosub affiche:return case 4 :segment$="0110011":gosub affiche:return case 5 :segment$="1011011":gosub affiche:return case 6 :segment$="1011111":gosub affiche:return case 7 :segment$="1110000":gosub affiche:return case 8 :segment$="1111111":gosub affiche:return case 9 :segment$="1111011":gosub affiche:return case 10 :segment$="1110111":gosub affiche:return case 11 :segment$="0011111":gosub affiche:return case 12 :segment$="1001110":gosub affiche:return case 13 :segment$="0111101":gosub affiche:return case 14 :segment$="1001111":gosub affiche:return case 15 :segment$="1000111":gosub affiche:return end_select return ' =============== sub clavier_hexa(num,tp,lt) dim_local i,j,ii container num+20:top num+20,tp:left num+20,lt caption num+20,"clavier_alphanumérique" height num+20,200: color num+20,200,200,50 for i=1 to 16 ii=ii+1:if ii=5 then j=j+1:ii=1 button i+num:width i+num,21:parent i+num,num+20 top i+num,(j*30)+30: left i+num,(ii*30)+5 caption i+num,hex$(i-1) on_click i+num,clavier next i end_sub
' ==============================
| |
| | | bignono
Nombre de messages : 1127 Age : 66 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: clavier_afficheur Jeu 17 Oct 2013 - 19:04 | |
| C'est sympa comme afficheur! | |
| | | papydall
Nombre de messages : 6998 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: clavier_afficheur Jeu 17 Oct 2013 - 19:24 | |
| C’est joli loulou08. Seul petit regret : les lettres A,C,E et F sont en majuscules (et c’est ce qu’il faut) mais les lettres b et d sont en minuscules (et pour ça, on ne peut rien!)
Dernière édition par papydall le Ven 18 Oct 2013 - 1:19, édité 1 fois | |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 17 Oct 2013 - 19:32 | |
| heu...et comment on affiche 10 ou 100 ou 1000... Mais c'est vrai que c' est sympa comme affichage. Bravo loulou08 | |
| | | papydall
Nombre de messages : 6998 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: clavier_afficheur Jeu 17 Oct 2013 - 19:40 | |
| @Ygeronimi Pour afficher 10, on affiche 1 puis on affiche 0 à la suite. De même pour afficher 1000 , on affiche 1, puis on affiche 0 puis on affiche 0 puis on affiche 0 puis … ouf c’est fini ! | |
| | | Jean Claude
Nombre de messages : 5948 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: clavier_afficheur Jeu 17 Oct 2013 - 20:13 | |
| Bravo, beau travail.
Je vois bien une application pour le carte ARDUINO (Sauf erreur).
A+ | |
| | | papydall
Nombre de messages : 6998 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: clavier_afficheur Jeu 17 Oct 2013 - 20:19 | |
| @loulou08
En ligne 38, tu déclares par DIM les variables digist1 (avec un s), digit2, digit3, digit4 et tu ne l’utilises pas dans le programme. | |
| | | mindstorm
Nombre de messages : 684 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: clavier_afficheur Jeu 17 Oct 2013 - 23:23 | |
| bonsoir a tous juste un mot "super" @ jean claude tu peux trouver sur mon webdav le programme "parallele" ecrit avec l'aide te tous et specialement papydall il permet de connecter un affichage digital avec panoramic la partie interressante est le convertisseur de code binaire (merci papydall)
| |
| | | papydall
Nombre de messages : 6998 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 0:09 | |
| mindstorm , je t’en prie, il n’y a pas de quoi me remercier : on apprend tous les uns des autres.
Dernière édition par papydall le Ven 18 Oct 2013 - 11:52, édité 1 fois | |
| | | papydall
Nombre de messages : 6998 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 1:17 | |
| @loulou08 Le sous-programme affiche : - Code:
-
affiche: for i= 0 to 6 led$=mid$(segment$,i+1,1) del=val(led$) if i=0 and del=1 then color digit7+1,10,250,10 if i=0 and del=0 then color digit7+1,162,162,162 if i=1 and del=1 then color digit7+2,10,250,10 if i=1 and del=0 then color digit7+2,162,162,162 if i=2 and del=1 then color digit7+3,10,250,10 if i=2 and del=0 then color digit7+3,162,162,162 if i=3 and del=1 then color digit7+4,10,250,10 if i=3 and del=0 then color digit7+4,162,162,162 if i=4 and del=1 then color digit7+5,10,250,10 if i=4 and del=0 then color digit7+5,162,162,162 if i=5 and del=1 then color digit7+6,10,250,10 if i=5 and del=0 then color digit7+6,162,162,162 if i=6 and del=1 then color digit7+7,10,250,10 if i=6 and del=0 then color digit7+7,162,162,162 ' next i ' return contient 14 tests IF . En y regardant de plus près pour comprendre sa logique, on peut l’optimiser en un seul test IF !!! qui devient ainsi : - Code:
-
affiche: for i= 0 to 6 led$=mid$(segment$,i+1,1) del=val(led$) if del = 1 then color digit7+1+i,10,250,10 : else : color digit7+1+i,162,162,162 next i return Hé bien ça marche! Le sous-programme clavier : - Code:
-
clavier: for i=1 to 16 if clicked(i+num)=1 then tch=i-1 next i select tch case 0 :segment$="1111110": gosub affiche:return case 1 :segment$="0110000": gosub affiche:return case 2 :segment$="1101101": gosub affiche:return case 3 :segment$="1111001": gosub affiche:return case 4 :segment$="0110011": gosub affiche:return case 5 :segment$="1011011": gosub affiche:return case 6 :segment$="1011111": gosub affiche:return case 7 :segment$="1110000": gosub affiche:return case 8 :segment$="1111111": gosub affiche:return case 9 :segment$="1111011": gosub affiche:return case 10 :segment$="1110111": gosub affiche:return case 11 :segment$="0011111": gosub affiche:return case 12 :segment$="1001110": gosub affiche:return case 13 :segment$="0111101": gosub affiche:return case 14 :segment$="1001111": gosub affiche:return case 15 :segment$="1000111": gosub affiche:return end_select gosub affiche return qui comporte 16 fois les instructions gosub affiche : return peut ne comporter qu'une seule instruction gosub affiche - Code:
-
clavier: for i=1 to 16 if clicked(i+num)=1 then tch=i-1 next i select tch case 0 :segment$="1111110" case 1 :segment$="0110000" case 2 :segment$="1101101" case 3 :segment$="1111001" case 4 :segment$="0110011" case 5 :segment$="1011011" case 6 :segment$="1011111" case 7 :segment$="1110000" case 8 :segment$="1111111" case 9 :segment$="1111011" case 10 :segment$="1110111" case 11 :segment$="0011111" case 12 :segment$="1001110" case 13 :segment$="0111101" case 14 :segment$="1001111" case 15 :segment$="1000111" end_select gosub affiche return
Par ailleurs, je voie que tu mets un peu partout tantôt un LABEL, tantôt un DIM. Je te déconseille cette manière de coder. Cela prouve que tu n’as pas pris le temps nécessaire pour structurer ton programme et que tes idées viennent en fonction de l’avancement de ton code. La maintenance de ton programme deviendra assez difficile si un jour tu te décides à l’améliorer. Utilise autant que faire se peut les procédures SUB qui peuvent être indépendantes de tout programme qui l’utiliserait en les paramétrant. Là tu y mettras tes variables locales. Et enfin aère un peu le code : il gagnera en lisibilité. Quelqu’un a dit : « Un bon algorithme est comme un couteau tranchant —il fait exactement ce que l’on attend de lui, avec un minimum d’efforts. L’emploi d’un mauvais algorithme pour résoudre un problème revient à essayer de couper un steak avec un tournevis : vous finirez sans doute par obtenir un résultat digeste, mais vous accomplirez beaucoup plus d’efforts que nécessaire, et le résultat aura peu de chances d’être esthétiquement satisfaisant.»
Ce sont des conseils amicaux et tu n'est pas obligé de les suivre. Mon délire ne diminue en rien ton mérite d'avoir essayé et réussi ton programme qui est fonctionnel. A+
Dernière édition par papydall le Ven 18 Oct 2013 - 11:56, édité 1 fois | |
| | | mindstorm
Nombre de messages : 684 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 7:18 | |
| bonjour a tous MERCI papydall d'etre si modeste MERCI papydall de prendre le temps de relire les codes pour nous donner le petit plus MERCI de nous presenter des codes mathematiques incroyable bon tu as compris | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 7:58 | |
| Merci pour cet excellent outil (très bien pour simuler l'électronique ) Je te mets ma version qui a des similitudes avec les propositions de Papydall: (Je ne reprends pas ses explications, je dois partir au travail) - Code:
-
' ==================================== ' Afficheur 7 ségments par loulou08 ' Source écrit en Basic Panoramic ' ====================================
label number, clavier
dim digit7,digi,lft,nb_dig,segment$, led$,del,point,i,num,aff$,tch,lt_cav dim N%,V%,P%,H%,W%,T%,L%,CR%,CV%,CB%,CT$ dim FN$,FS%,FB%,FI%,FU%,RF%,GF%,BF%
error_french height 0,600 : top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2 caption 0,"double-cliquer sur un afficheur pour lui donner le focus. cliquer sur une touche "
lft=30:nb_dig=4
for i=1 to nb_dig digi=i*100 : digit7_segments(digi,50,lft) on_double_click digi,number lft=lft+170 : width 0,lft+30 next i
color digi+8,22,220,22 digit7=digi : num=digi+100 : lt_cav=(width(0)/2-100)
' ==================================== ' NUM => numero system de depart ' TP => top clavier ' lt_cav => left clavier ' : : : clavier_hexa(num,320,lt_cav)
end ' ======
' =============================== number: digit7=number_double_click for i=1 to nb_dig digi=i*100 : color digi+8,162,162,162 next i color digit7+8,20,220,22 return
' =============================== sub digit7_segments(digit,tp,lt) container digit: top digit,tp:left digit,lt:width digit,150:height digit,250 color digit,130,130,130:caption digit, "Afficheur " + str$(digit/100) alpha digit+1:top digit+1,20:left digit+1,40:parent digit+1,digit color digit+1,162,162,162 :width digit+1,60:height digit+1,21 alpha digit+2:top digit+2,35:left digit+2,105 :parent digit+2,digit color digit+2,162,162,162 :width digit+2,21:height digit+2,75 alpha digit+3:top digit+3,130:left digit+3,105 :parent digit+3,digit color digit+3,162,162,162 :width digit+3,21:height digit+3,75 alpha digit+4:top digit+4,200:left digit+4,40:parent digit+4,digit color digit+4,162,162,162 :width digit+4,60:height digit+4,21 alpha digit+5:top digit+5,130:left digit+5,15 :parent digit+5,digit color digit+5,162,162,162 :width digit+5,21:height digit+5,75 alpha digit+6:top digit+6,35:left digit+6,15 :parent digit+6,digit color digit+6,162,162,162 :width digit+6,21:height digit+6,75 alpha digit+7:top digit+7,110:left digit+7,40:parent digit+7,digit color digit+7,162,162,162 :width digit+7,60:height digit+7,21 alpha digit+8:top digit+8,220:left digit+8,115 :parent digit+8,digit color digit+8,162,162,162 :width digit+8,21:height digit+8,21 end_sub ' =============================== sub affiche() for i= 0 to 6 led$=mid$(segment$,i+1,1) del=val(led$) if del = 1 then color digit7+1+i,10,250,10 : else : color digit7+1+i,162,162,162 next i end_sub
'============================= clavier: for i=1 to 16 if clicked(i+num)=1 then tch=i-1 next i select tch case 0 :segment$="1111110" case 1 :segment$="0110000" case 2 :segment$="1101101" case 3 :segment$="1111001" case 4 :segment$="0110011" case 5 :segment$="1011011" case 6 :segment$="1011111" case 7 :segment$="1110000" case 8 :segment$="1111111" case 9 :segment$="1111011" case 10 :segment$="1110111" case 11 :segment$="0011111" case 12 :segment$="1001110" case 13 :segment$="0111101" case 14 :segment$="1001111" case 15 :segment$="1000111" end_select affiche() return
' =============== sub clavier_hexa(num,tp,lt) dim_local i,j,ii container num+20:top num+20,tp:left num+20,lt caption num+20,"clavier_alphanumérique" height num+20,200: color num+20,200,200,50 for i=1 to 16 ii=ii+1:if ii=5 then j=j+1:ii=1 button i+num:width i+num,21:parent i+num,num+20 top i+num,(j*30)+30: left i+num,(ii*30)+5 caption i+num,hex$(i-1) on_click i+num,clavier next i end_sub ' ==============================
Dernière édition par Jicehel le Ven 18 Oct 2013 - 11:20, édité 1 fois | |
| | | loulou08
Nombre de messages : 63 Age : 81 Localisation : Champagne-Ardenne Date d'inscription : 16/05/2010
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 9:59 | |
| Bonjour je vous remercie d' avoir étudie mon programme je prends note de vos conseils avisés
Pour ''b et c'' c'est le problème de l'afficheur 7 segments il faut un afficheur 14 ou 16 segments comme j'ai pris la solution de facilité en prenant un ALPHA comme voyant pour éviter les fichiers ''BMP'' (pas pratique sur un Forum) on ne peux pas incliner un ALPHA oui j'avais une idée pour la carte Arduino
Merci a tous et bonne journée | |
| | | papydall
Nombre de messages : 6998 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 10:20 | |
| Bonjour tout le monde.
Le code de Jicehel (qui fait exactement la même chose que celui de loulou08) est mieux structuré, son étude et sa maintenance sera plus facile. Personnellement je procède ainsi ou presque.
NB : ligne 8, il manque une virgule entre les 2 variables segment$ et led$ | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: clavier_afficheur Ven 18 Oct 2013 - 11:23 | |
| Merci papydall, j'avais corrigé la déclaration car je n'avais pas fait attention aux digit1, 2, 3 et 4. En lisant les commentaires, je m'en suis rendu compte et je les avais supprimés du listing publié en retirant une virgule de trop En tout cas, loulou08, si tu as d'autres contrôles du même acabit, je suis très preneur, c'est super pratique et esthétique. | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 12:43 | |
| J'ai une petite question, j'ai repris le code de loulou08 sur son site avec les progress_bar, mais je n'arrive pas à un affichage très propre, les segments ne s'affichent pas assez rapidement (en utilisant les progress bar). Je dois donc mal m'y prendre ou j'ai oublié une astuce. - Code:
-
error_french dim nun_afficheur,compt% nun_afficheur=100 : digit7_segments(nun_afficheur,50,130,"afficheur 7_segments ") for compt% = 9 to 0 step -1 affiche(nun_afficheur,compt%) pause 200 : display : pause 200 : display pause 600 : display next compt% ' ======= end :' == ' =======
' sub digit7_segments(digit,tp,lt,titre$) dim_local i container digit: top digit,tp:left digit,lt:width digit,150:height digit,250 caption digit, titre$ for i=1 to 7 progress_bar digit+i: parent digit+i,digit : hide digit+i min digit+i,0:max digit+i,1 if i = 1 or i = 4 or i = 7 left digit+i,40 : width digit+i, 60 if i = 1 then top digit+i,20 if i = 4 then top digit+i,200 if i = 7 then top digit+7,110 else if i = 2 or i = 3 then left digit + i, 105 if i = 5 or i = 6 then left digit + i, 15 if i = 2 or i = 6 then top digit + i, 35 if i = 3 or i = 5 then top digit + i, 130 width digit+i,75 end_if if i = 2 or i = 3 or i = 5 or i=6 then vertical digit+i show digit + i next i alpha digit+8:top digit+8,220:left digit+8,115 :parent digit+8,digit: caption digit+8,"P" color digit+8,220,220,220 :width digit+8,21:height digit+8,21 end_sub
sub affiche(digit,valeur) dim_local del, led$,i,segment$
if valeur > 10 then led$=right$(str$(int(valeur)),1) : valeur = val(led$) select valeur case 0 :segment$="1111110" case 1 :segment$="0110000" case 2 :segment$="1101101" case 3 :segment$="1111001" case 4 :segment$="0110011" case 5 :segment$="1011011" case 6 :segment$="1011111" case 7 :segment$="1110000" case 8 :segment$="1111111" case 9 :segment$="1111011" end_select for i= 1 to 7 led$=mid$(segment$,i,1) : del=val(led$) if del=1 position digit+i,1 else position digit+i,0 end_if next i display end_sub | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 14:08 | |
| Bonjour Jicehel, J'avais un petit programme équivalent, si ça te conviens... - Code:
-
DIM n% , nn% , x% , aff$(10) , px%(7) , py%(7)
aff$(0)="1011111" : aff$(1)="0000011" : aff$(2)="1110110" : aff$(3)="1110011" : aff$(4)="0101011" aff$(5)="1111001" : aff$(6)="1111101" : aff$(7)="1000011" : aff$(8)="1111111" : aff$(9)="1111011"
px%(1)=5 : py%(1)=0 : px%(2)=5 : py%(2)=28 : px%(3)=5 : py%(3)=56 : px%(4)=0 : py%(4)=5 px%(5)=0 : py%(5)=32 : px%(6)=35 : py%(6)=5 : px%(7)=35 : py%(7)=28+5
HEIGHT 0,140 : WIDTH 0,500 : COLOR 0,0,0,0 PICTURE 1 : PARENT 1,0 : LEFT 1,20 : TOP 1,20 : HEIGHT 1,60 : WIDTH 1,450 : COLOR 1,0,0,0 2D_TARGET_IS 1 : 2D_FILL_COLOR 0,255,0 affichage(0123456789)
END
SUB affichage(x$) FOR nn%=1 TO LEN(x$) x%=VAL(MID$(x$,nn%,1)) FOR n%=1 TO 7 IF MID$(aff$(x%),n%,1)="1" IF n%=1 OR n%=2 OR n%=3 2D_RECTANGLE px%(n%)+(nn%*45-45),py%(n%),px%(n%)+(nn%*45-45)+30,py%(n%)+4 ELSE 2D_RECTANGLE px%(n%)+(nn%*45-45),py%(n%),px%(n%)+(nn%*45-45)+4,py%(n%)+23 END_IF END_IF NEXT n% NEXT nn% END_SUB A toi de l'adapter ! Bon courage | |
| | | Invité Invité
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 14:21 | |
| Bonjour, j'ai modifié ainsi: - Code:
-
error_french dim nun_afficheur,compt% nun_afficheur=100 : digit7_segments(nun_afficheur,50,130,"afficheur 7_segments ") for compt% = 9 to 0 step -1 affiche(nun_afficheur,compt%) wait 200 wait 600 : display next compt% ' ======= end :' == ' =======
=============================================================================== sub digit7_segments(digit,tp,lt,titre$) dim_local i container digit: top digit,tp:left digit,lt:width digit,150:height digit,250 caption digit, titre$ for i=1 to 7 progress_bar digit+i: parent digit+i,digit : hide digit+i min digit+i,0:max digit+i,1 if i = 1 or i = 4 or i = 7 left digit+i,40 : width digit+i, 60 if i = 1 then top digit+i,20 if i = 4 then top digit+i,200 if i = 7 then top digit+7,110 else if i = 2 or i = 3 then left digit + i, 105 if i = 5 or i = 6 then left digit + i, 15 if i = 2 or i = 6 then top digit + i, 35 if i = 3 or i = 5 then top digit + i, 130 width digit+i,75 end_if if i = 2 or i = 3 or i = 5 or i=6 then vertical digit+i show digit + i next i alpha digit+8:top digit+8,220:left digit+8,115 :parent digit+8,digit: caption digit+8,"P" color digit+8,220,220,220 :width digit+8,21:height digit+8,21 :wait 500 end_sub
==============================
sub affiche(digit,valeur) dim_local del, led$,i,segment$ for i = 1 to 7 position i+digit,0 next i if valeur > 10 then led$=right$(str$(int(valeur)),1) : valeur = val(led$) select valeur case 0 :segment$="1111110" case 1 :segment$="0110000" case 2 :segment$="1101101" case 3 :segment$="1111001" case 4 :segment$="0110011" case 5 :segment$="1011011" case 6 :segment$="1011111" case 7 :segment$="1110000" case 8 :segment$="1111111" case 9 :segment$="1111011" end_select
for i= 1 to 7 led$=mid$(segment$,i,1) : del=val(led$) if del=1 position digit+i,1 else position digit+i,0 end_if next i wait 1000 display end_sub |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 16:42 | |
| Oui, j'ai resimplifié un peu et j'ai mis un temps d'attente "incompréssible" dans la sub Comme ça le "pause 400" de la boucle principal c'est juste pour avoir un décompte à la seconde, mais le pause 600 en fin de boucle, c'est juste pour que cela fonctionne dans tous les cas d'appels par le programme principal (si on retire le "pause 400", on voit quand même l'afficheur afficher le nombre demandé). - Code:
-
error_french dim nun_afficheur,compt% nun_afficheur=100 : digit7_segments(nun_afficheur,50,130,"afficheur 7_segments ") for compt% = 9 to 0 step -1 affiche(nun_afficheur,compt%) pause 400 next compt% caption 0,"Terminé" ' ======= end :' == ' =======
=============================================================================== sub digit7_segments(digit,tp,lt,titre$) dim_local i container digit: top digit,tp:left digit,lt:width digit,150:height digit,250 caption digit, titre$ for i=1 to 7 progress_bar digit+i: parent digit+i,digit : hide digit+i min digit+i,0:max digit+i,1 if i = 1 or i = 4 or i = 7 left digit+i,40 : width digit+i, 60 if i = 1 then top digit+i,20 if i = 4 then top digit+i,200 if i = 7 then top digit+7,110 else if i = 2 or i = 3 then left digit + i, 105 if i = 5 or i = 6 then left digit + i, 15 if i = 2 or i = 6 then top digit + i, 35 if i = 3 or i = 5 then top digit + i, 130 width digit+i,75 end_if if i = 2 or i = 3 or i = 5 or i=6 then vertical digit+i show digit + i next i alpha digit+8:top digit+8,220:left digit+8,115 :parent digit+8,digit: caption digit+8,"P" color digit+8,220,220,220 :width digit+8,21:height digit+8,21 :wait 500 end_sub
==============================
sub affiche(digit,valeur) dim_local del, led$,i,segment$ for i = 1 to 7 position digit+i,0 next i if valeur > 10 then led$=right$(str$(int(valeur)),1) : valeur = val(led$) select valeur case 0 :segment$="1111110" case 1 :segment$="0110000" case 2 :segment$="1101101" case 3 :segment$="1111001" case 4 :segment$="0110011" case 5 :segment$="1011011" case 6 :segment$="1011111" case 7 :segment$="1110000" case 8 :segment$="1111111" case 9 :segment$="1111011" end_select for i= 1 to 7 led$=mid$(segment$,i,1) : del=val(led$) if del=1 then position digit+i,1 next i pause 600 end_sub Je suis quand même surpris qu'il faille 600ms pour pouvoir afficher les ségments en utilisant le progress bar. Il faudrait voir en compilant. Bon sinon, on peut toujours faire des Alpha comme initialement et là, c'est beaucoup plus rapide à l'execution. Donc le premier est plus beau mais il nécessite qu'il y ait au moins 600 ms entre 2 affichage et le second est moins beau mais fonctionne très rapidement. - Code:
-
error_french dim nun_afficheur,compt% nun_afficheur=100 : digit7_segments(nun_afficheur,50,130,"afficheur 7_segments ") for compt% = 9 to 0 step -1 affiche(nun_afficheur,compt%) pause 100 next compt% caption 0,"Terminé" ' ======= end :' == ' =======
=============================================================================== sub digit7_segments(digit,tp,lt,titre$) dim_local i container digit: top digit,tp:left digit,lt:width digit,150:height digit,250 caption digit, titre$ for i=1 to 7 alpha digit+i: parent digit+i,digit : hide digit+i if i = 1 or i = 4 or i = 7 left digit+i,40 : width digit+i, 60 : :height digit+i,21 if i = 1 then top digit+i,20 if i = 4 then top digit+i,200 if i = 7 then top digit+7,110 else if i = 2 or i = 3 then left digit + i, 105 if i = 5 or i = 6 then left digit + i, 15 if i = 2 or i = 6 then top digit + i, 35 if i = 3 or i = 5 then top digit + i, 130 height digit+i,75 : width digit+i, 21 end_if show digit + i next i alpha digit+8:top digit+8,220:left digit+8,115 :parent digit+8,digit: caption digit+8,"P" color digit+8,220,220,220 :width digit+8,21:height digit+8,21 :wait 500 end_sub
==============================
sub affiche(digit,valeur) dim_local del, led$,i,segment$
if valeur > 10 then led$=right$(str$(int(valeur)),1) : valeur = val(led$) select valeur case 0 :segment$="1111110" case 1 :segment$="0110000" case 2 :segment$="1101101" case 3 :segment$="1111001" case 4 :segment$="0110011" case 5 :segment$="1011011" case 6 :segment$="1011111" case 7 :segment$="1110000" case 8 :segment$="1111111" case 9 :segment$="1111011" end_select for i= 1 to 7 led$=mid$(segment$,i,1) : del=val(led$) if del=1 then color digit+i,10,240,10 : else: color digit+i,220,220,220 next i end_sub | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 16:51 | |
| Je n'ai pas étudié tout le post, et je suis peut-être à côté de la plaque, mais il n'y a pas une police de caractères type 'segments', ce qui faciliterait bien les choses pour l'affichage ? avec la taille et la couleur appropriée. | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 17:26 | |
| | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 18:11 | |
| Il y a aussi les polices db7Segments, ou DigifaceWide, et celle que je préfère Digital-7 Mono | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 19:07 | |
| Après reste à l'intégrer en data au programme et à gérer si elle est installée ou non et faire l'installation si nécessaire En tout cas, ça donne plusieurs moyen d'obtenir le résultat escompté. | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: clavier_afficheur Jeu 23 Avr 2015 - 20:25 | |
| C'est vrai, tu as raison, si on veut diffuser le programme il faut que la police soit installée, et ce n'est pas standard, finalement il vaut sans doute dessiner les chiffres, par programme, c'est plus universel. | |
| | | Klaus
Nombre de messages : 12277 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: clavier_afficheur Ven 24 Avr 2015 - 0:16 | |
| Pour intégrer un fichier dans un exécutable, il y a aussi la solution d'utiliser des "ressources". Ce sont justement des fichiers intégrés dans un exécutable ou dans une DLL, et Windows a les moyens (via un API) de les utiliser, extraire, supprimer etc.
Certes, Panoramic ne donne pas accès à ces fonctions. Mais KGF.dll a les outils nécessaires. On peut ajouter, par un programme Panoramic (si, si !) un ou plusieurs fichiers dans un exécutable sous forme de ressource, et cet exécutable peut ensuite utiliser ou extraire ces ressources et les restituer sous forme de fichiers. C'est un moyen plus "élégant" de transporter des images, sons etc, mais en fait n'importe quoi, y compris d'autres exécutables ou DLLs. On peut même y inclure un programme d'installation qui, une fois extrait et lancé par la commande EXECUTE, va installer, disons une police, un ActiveX, une application, ...
Tout est possible. Certes, pas en Panoramic pur, mais les utilisateurs de KGF.dll n'y verront qu'un inconvénient mineur... | |
| | | Contenu sponsorisé
| Sujet: Re: clavier_afficheur | |
| |
| | | | clavier_afficheur | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |