FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
clavier_afficheur Emptypar Froggy One Aujourd'hui à 11:16

» PANORAMIC V 1
clavier_afficheur Emptypar Klaus Aujourd'hui à 10:28

» Gestion d'un système client-serveur.
clavier_afficheur Emptypar Klaus Hier à 23:59

» @Jack
clavier_afficheur Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
clavier_afficheur Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
clavier_afficheur Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
clavier_afficheur Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
clavier_afficheur Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
clavier_afficheur Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
clavier_afficheur Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
clavier_afficheur Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
clavier_afficheur Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
clavier_afficheur Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
clavier_afficheur Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
clavier_afficheur Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -40%
-40% sur le Pack Gaming Mario PDP Manette filaire + ...
Voir le deal
29.99 €

 

 clavier_afficheur

Aller en bas 
+6
mindstorm
Jean Claude
Yannick
papydall
bignono
loulou08
10 participants
AuteurMessage
loulou08

loulou08


Nombre de messages : 63
Age : 81
Localisation : Champagne-Ardenne
Date d'inscription : 16/05/2010

clavier_afficheur Empty
MessageSujet: clavier_afficheur   clavier_afficheur EmptyJeu 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

 ' ==============================

Revenir en haut Aller en bas
http://panoramicetardinouno.blogspot.fr/
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 17 Oct 2013 - 19:04

C'est sympa comme afficheur!Smile 
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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!)  clavier_afficheur U_THIN%7E1


Dernière édition par papydall le Ven 18 Oct 2013 - 1:19, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

clavier_afficheur Empty
MessageSujet: re   clavier_afficheur EmptyJeu 17 Oct 2013 - 19:32

heu...et comment on affiche 10 ou 100 ou 1000...scratch

Mais c'est vrai que c' est sympa comme affichage.
Bravo loulou08
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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 ! Very Happy

clavier_afficheur Affich10
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 17 Oct 2013 - 20:13

Bravo, beau travail.

Je vois bien une application pour le carte ARDUINO (Sauf erreur).

A+
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
mindstorm

mindstorm


Nombre de messages : 684
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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)
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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!  Smile


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.  lol!

Mon délire ne diminue en rien ton mérite d'avoir essayé  et réussi ton programme qui est fonctionnel.Very Happy

A+


Dernière édition par papydall le Ven 18 Oct 2013 - 11:56, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
mindstorm

mindstorm


Nombre de messages : 684
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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
lol! 
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 18 Oct 2013 - 7:58

Merci pour cet excellent outil (très bien pour simuler l'électronique  Wink )
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
Revenir en haut Aller en bas
loulou08

loulou08


Nombre de messages : 63
Age : 81
Localisation : Champagne-Ardenne
Date d'inscription : 16/05/2010

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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
Revenir en haut Aller en bas
http://panoramicetardinouno.blogspot.fr/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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$
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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 Wink

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.


Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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 Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Invité
Invité




clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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

Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 23 Avr 2015 - 17:26

C'est vrai que c'est une solution aussi.
Dans ce cas là, on peut utiliser:
http://dl.dafont.com/dl/?f=digital_7 (ou http://www.fontspace.com/style-7/digital-7)
http://www.fontspace.com/download/746/d75e8aae1b7c44cdaf20635c512e062c/allen-r-walden_crystal.zip

Après c'est un choix. Soit d'ajouter la police, soit de rajouter 2 petites procédures.

Au fait Loulou08, c'est les vacances ? Plus grand choses sur ton site actuellement pour Arduino ou en Panoramic ...
(Tu ne croyais quand même pas que l'on ne s'en renderait pas compte !! Wink )
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 23 Avr 2015 - 18:11

Il y a aussi les polices db7Segments, ou DigifaceWide, et celle que je préfère Digital-7 Mono
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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 affraid
En tout cas, ça donne plusieurs moyen d'obtenir le résultat escompté.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyJeu 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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12277
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur EmptyVen 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





clavier_afficheur Empty
MessageSujet: Re: clavier_afficheur   clavier_afficheur Empty

Revenir en haut Aller en bas
 
clavier_afficheur
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les inutilitaires-
Sauter vers: