FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par JL35 Hier à 16:25

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Radar pour futur projet

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
gigi75

avatar

Nombre de messages : 95
Age : 45
Date d'inscription : 13/04/2013

MessageSujet: Radar pour futur projet   Jeu 14 Aoû 2014 - 19:57

Bonjour,

Je partage ce bout de code pour de futurs projets.
C'est un radar où dans l'attente de connexions avec le monde réel (Robotique, autre,) des échos sont crées aléatoirement.
Ce code est vide, dans l'attente de toute idée.

Gilles

Code:
' Radar 360° avec échos aléatoires pour projet robotique



' déclaration variable

' variable coordonées
dim x,y
' ligne de balayage
dim x1,y1,x2,y2
' rand d'echo
dim rand
' variable standard de boucle
dim i
' position des échos
dim dist
dim px
px=180
' tempo des echos
dim tp
' probabilité des échos
dim pr
pr=40
' données prédéfinis variables
x=0
 
' déclaration label
label balayage, sortie
 
 
' construction fenêtre principale
maximize 0 : color 0,255,255,255 : caption 0,"Radar 1.0"
 
 
 
' affichage dans fenêtre
button 102 : left 102,300 : width 102,110 : top 102,66 : font_color 102,145,145,145 : font_bold 102 : caption 102,"Exit" : on_click 102, sortie

' création du radar

2d_pen_width 5 : 2d_pen_color 2,2,2 : 2d_circle 750,300,200

 
' balayage
balayage:
for i=1 to 500 step 0.03
x=int(190*(cos(i)))
y=int(190*(sin(i)))
2d_pen_width 5 : 2d_pen_color 0,0,0: 2d_line 750,300,750+x,300+y
wait 20
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,750+x,300+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,751+x,301+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,749+x,299+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,749+x,301+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,751+x,299+y
' traitement écho
rand=int((rnd(pr)))
dist=int((rnd(px)))
if rand=10
  beep
  x=int((190-dist)*(cos(i)))
  y=int((190-dist)*(sin(i)))
  2d_pen_width 5 : 2d_pen_color 255,0,0: 2d_circle 750+(x-1),300+(y-1),2
end_if
next i
end

' fin du programme
sortie:
terminate
end

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Radar pour futur projet   Jeu 14 Aoû 2014 - 20:23

Pas mal ! Qu'est-ce que tu veux connecter comme radar, et par quel interface ?

EDIT

Je vois que tu as mis tout ton traitement avant le END, dans la procédure principale qui en principe ne sert qu'à créer l'environnement d'exécution (les objets visuels, chargement de fichiers de paramètres, ...). Un bouton ou une ligne dans un menu devrait déclencher le traitement. Je me suis permis d'adapter ton programme à cette structure. Voici le résultat (pas de panique, la modif est minime !) :
Code:
' Radar 360° avec échos aléatoires pour projet robotique



' déclaration variable

' variable coordonées
dim x,y
' ligne de balayage
dim x1,y1,x2,y2
' rand d'echo
dim rand
' variable standard de boucle
dim i
' position des échos
dim dist
dim px
px=180
' tempo des echos
dim tp
' probabilité des échos
dim pr
pr=40
' données prédéfinis variables
x=0

' déclaration label
label balayage, sortie


' construction fenêtre principale
maximize 0 : color 0,255,255,255 : caption 0,"Radar 1.0"



' affichage dans fenêtre
button 102 : left 102,300 : width 102,110 : top 102,66 : font_color 102,145,145,145 : font_bold 102 : caption 102,"Exit" : on_click 102, sortie
button 103 : left 103,300 : width 103,110 : top 103,96 : font_color 103,145,145,145 : font_bold 103 : caption 103,"Start" : on_click 103, balayage

' création du radar

2d_pen_width 5 : 2d_pen_color 2,2,2 : 2d_circle 750,300,200

end

' balayage
balayage:
for i=1 to 500 step 0.03
x=int(190*(cos(i)))
y=int(190*(sin(i)))
2d_pen_width 5 : 2d_pen_color 0,0,0: 2d_line 750,300,750+x,300+y
wait 20
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,750+x,300+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,751+x,301+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,749+x,299+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,749+x,301+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line 750,300,751+x,299+y
' traitement écho
rand=int((rnd(pr)))
dist=int((rnd(px)))
if rand=10
  beep
  x=int((190-dist)*(cos(i)))
  y=int((190-dist)*(sin(i)))
  2d_pen_width 5 : 2d_pen_color 255,0,0: 2d_circle 750+(x-1),300+(y-1),2
end_if
next i
end

' fin du programme
sortie:
terminate
end


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
gigi75

avatar

Nombre de messages : 95
Age : 45
Date d'inscription : 13/04/2013

MessageSujet: Re: Radar pour futur projet   Ven 15 Aoû 2014 - 1:37

Klaus,

Je vais connecter un servo moteur avec un detecteur ultrason juste pour simuler un vrai radar.
Le but est d'apporter de l'aide pour plus tard en apportant quelques brique de passion pour d'autre.

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Radar pour futur projet   Ven 15 Aoû 2014 - 1:41

Intéressant. Et prometteur...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
gigi75

avatar

Nombre de messages : 95
Age : 45
Date d'inscription : 13/04/2013

MessageSujet: Re: Radar pour futur projet   Sam 16 Aoû 2014 - 11:46



Bonjours,

Encore du radar,et encore.
Jack a parler de robotique, etc. Faisons honneur.
Jack pour la connexion Arduino sans DLL, serait le pied, en soket aussi. Jack si tu le souhaite je t'envoie une Arduino YUN (Carte arduino avec WIFI).
arduino yun

Je continue donc les radar puisque c'est la base pour éviter qu'un robot se cogne partout.

Le radar d'aujourd'hui capte des échos pour l'instant aléatoire (Il ne fait que ca pour l'instant)

Le but est de trouver la meilleure sortie, et aussi de dessiner la carte en 3D des échos.

Je partage toujours avec grand plaisir ces petits programmes qui ne servent à rien maintenant mais des briques pour panoramic dans le futur.
Pour les critiques je suis preneur, chaques critiques est une pierre de plus dans les fondations.

Pour les Sub, je débuterais bientôt. je continue doucement.

Merci à Jack, et à la communauté Panoramic.

Code:
 ' description programme
 ' Un balayage en une passe trouve des échos, puis analyse l'image pour trouver la sortie la mieux adaptée
 ' Un tirage aléatoire des échos dans l'attente de connecter un interface servo ave un radar ultrason
 ' Création d'un dessin 3D de la scene




 ' déclaration de variable
 dim i : ' boucle
 dim y,x : ' Coordonnées balayage
 dim y1,x1 : ' Coordonnées centre radar
 dim degree : ' Variable degrée
 dim af : ' Variable affichage texte echo
 dim posiecho : ' Position aléatoire de l'echo (En remplacement interface)
 dim distance : ' Distance de l'echo aléatoire (En remplacement interface)
 dim rand : ' Probabilité d'echo (En remplacement interface)
 dim dist : ' Variable de distance echo (En remplacement interface)
 dim afpo : ' Variable position affichage echo (top)
 dim inecho : ' Incrementation echo
 dim tempoecho : ' Tempo affichage Echo (Pour eviter d'être écrasé)
 dim presecho : ' Echo trouvé
 dim xx,yy : ' Retard écho
 dim dist1 : ' Vrai distance
 dim alerte : ' echo distance minimale
 dim line1, line2, line3, line4 : ' position ligne périmètre
 ' valeur variable
 y1=650
 X1=325
 degree=0
 posiecho=8
 distance=200
 afpo=30
 inecho=2
 tempoecho=1
 presecho=0
 alerte=20
 ' déclaration de label
label sortie, balayage, analyse

 ' déclaration fenêtre principale
button 100 : left 100,10 : width 100,110 : top 100,650 : font_color 100,145,145,145 : font_bold 100 : caption 100,"Exit" : on_click 100, sortie
button 101 : left 101,10 : width 101,110 : top 101,600 : font_color 101,145,145,145 : font_bold 101 : caption 101,"Start" : on_click 101, balayage
button 102 : left 102,10 : width 102,110 : top 102,550 : font_color 102,145,145,145 : font_bold 102 : caption 102,"Analyse" : on_click 102, analyse
hide 102
maximize 0 : color 0,200,200,255 : caption 0, "Reperage radar"
alpha 1 : left 1,580 : top 1,650 : font_color 1,0,0,1 : font_bold 1 : ' affichage degree

 ' création du cadre radar
2d_pen_width 5
2d_rectangle 300,50,1000,600
end

balayage:
for i=4.716 to 11 step 0.03
degree=degree+1.7142864
caption 1, "Degrées :" + str$(int(degree))
x=int(268*(cos(i)))
y=int(268*(sin(i)))
2d_pen_width 5 : 2d_pen_color 0,0,0: 2d_line y1,x1,y1+x,x1+y
wait 20
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1+1+x,x1+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1+1+x,x1+1+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1-1+x,x1-1+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1-1+x,x1+1+y
2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1+1+x,x1-1+y
 ' Traitement echo si echo
rand=int((rnd(posiecho)))
dist=int((rnd(distance)))
if rand=5 and presecho=0
 dist=int((rnd(distance)))
 dist1=200-dist
 alerte=200-dist
 xx=int((268-dist)*(cos(i)))
 yy=int((268-dist)*(sin(i)))
 presecho=1
end_if
if presecho>0
 presecho=presecho+1
end_if

if presecho=15
  if dist1<21
  alpha inecho : font_color inecho,255,0,0 : left inecho,10 : top inecho,afpo : font_bold inecho : caption inecho, "Echo n°:"+str$(inecho)+"-degrée :"+ str$(int(degree))+" Dist="+str$(int(dist1)) + "  Echo rapproché"
  2d_pen_width 5 : 2d_pen_color 255,0,0: 2d_circle y1+(xx-1),x1+(yy-1),2
  else
  2d_pen_width 5 : 2d_pen_color 0,0,0: 2d_circle y1+(xx-1),x1+(yy-1),2
  alpha inecho : font_color inecho,255,0,0 : left inecho,10 : top inecho,afpo : font_bold inecho : caption inecho, "Echo n°:"+str$(inecho)+"-degrée :"+ str$(int(degree))+" Dist="+str$(int(dist1))
  font_color inecho,0,0,0
  end_if
 inecho=inecho+1
 afpo=afpo+15
 presecho=0
 beep
end_if
next i
show 102
hide 101
end

analyse:
beep
end

sortie:
terminate
end





Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Radar pour futur projet   Sam 16 Aoû 2014 - 12:07

Ca prend forme ! J'ai quelques remarques à te faire, au sujet de la structure de ton code.

1. essaye de faire une indentation plus rigoureuse. Le code sera d'autant plus lisible et plus facile à maintenir.
2. les routines évènement (celles déclenchées par un ON_xxx comme un ON_CLICK, par exemple) sont des sous-programmes qui sont exécutées comme si elles avaient été appelées par la commande GOSUB. Il faut donc impérativement les terminer par RETURN et non par END, car sinon, tu perturbes la gestion interne de la pile des retours dans Panoramic. Certes, dans l'état actuel du programme, tu ne t'en rends pas encore compte. Mais lorsque tu utiliseras GOSUB à l'intérieur de ces routines, tu auras des surprises...
3. évite la commande WAIT sauf cas très particuliers. Elle est totalement bloquante et empêche Windows de gérer ses évènements pendant cette période. Autant dire qu'au niveau application, tout est figé et l'attente ne sert à rien, sauf à faire passer le temps. Utilise plutôt la commande PAUSE à la place.

Je me suis permis de reformater ton code en tenant compte de ces idées. J'ai mis des commentaires explicatifs dans le source:
Code:
' description programme
 ' Un balayage en une passe trouve des échos, puis analyse l'image pour trouver la sortie la mieux adaptée
 ' Un tirage aléatoire des échos dans l'attente de connecter un interface servo ave un radar ultrason
 ' Création d'un dessin 3D de la scene




 ' déclaration de variable
 dim i : ' boucle
 dim y,x : ' Coordonnées balayage
 dim y1,x1 : ' Coordonnées centre radar
 dim degree : ' Variable degrée
 dim af : ' Variable affichage texte echo
 dim posiecho : ' Position aléatoire de l'echo (En remplacement interface)
 dim distance : ' Distance de l'echo aléatoire (En remplacement interface)
 dim rand : ' Probabilité d'echo (En remplacement interface)
 dim dist : ' Variable de distance echo (En remplacement interface)
 dim afpo : ' Variable position affichage echo (top)
 dim inecho : ' Incrementation echo
 dim tempoecho : ' Tempo affichage Echo (Pour eviter d'être écrasé)
 dim presecho : ' Echo trouvé
 dim xx,yy : ' Retard écho
 dim dist1 : ' Vrai distance
 dim alerte : ' echo distance minimale
 dim line1, line2, line3, line4 : ' position ligne périmètre
 ' valeur variable
 y1=650
 X1=325
 degree=0
 posiecho=8
 distance=200
 afpo=30
 inecho=2
 tempoecho=1
 presecho=0
 alerte=20
 ' déclaration de label
label sortie, balayage, analyse

 ' déclaration fenêtre principale
button 100 : left 100,10 : width 100,110 : top 100,650 : font_color 100,145,145,145 : font_bold 100 : caption 100,"Exit" : on_click 100, sortie
button 101 : left 101,10 : width 101,110 : top 101,600 : font_color 101,145,145,145 : font_bold 101 : caption 101,"Start" : on_click 101, balayage
button 102 : left 102,10 : width 102,110 : top 102,550 : font_color 102,145,145,145 : font_bold 102 : caption 102,"Analyse" : on_click 102, analyse
  hide 102
maximize 0 : color 0,200,200,255 : caption 0, "Reperage radar"
alpha 1 : left 1,580 : top 1,650 : font_color 1,0,0,1 : font_bold 1 : ' affichage degree

 ' création du cadre radar
2d_pen_width 5
2d_rectangle 300,50,1000,600
end

balayage:
  for i=4.716 to 11 step 0.03
    degree=degree+1.7142864
    caption 1, "Degrées :" + str$(int(degree))
    x=int(268*(cos(i)))
    y=int(268*(sin(i)))
    2d_pen_width 5 : 2d_pen_color 0,0,0: 2d_line y1,x1,y1+x,x1+y
    pause 20 : ' <<<====== attention: wait est totalement bloquant ! wait 20
    2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1+1+x,x1+y
    2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1+1+x,x1+1+y
    2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1-1+x,x1-1+y
    2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1-1+x,x1+1+y
    2d_pen_width 5 : 2d_pen_color 255,255,255: 2d_line y1,x1,y1+1+x,x1-1+y
    ' Traitement echo si echo
    rand=int((rnd(posiecho)))
    dist=int((rnd(distance)))
    if rand=5 and presecho=0
      dist=int((rnd(distance)))
      dist1=200-dist
      alerte=200-dist
      xx=int((268-dist)*(cos(i)))
      yy=int((268-dist)*(sin(i)))
      presecho=1
    end_if
    if presecho>0
      presecho=presecho+1
    end_if
    ' tu aurais pu faire simplement:
    ' if presecho>0 then presecho=presecho+1

    if presecho=15
      if dist1<21
        alpha inecho : font_color inecho,255,0,0 : left inecho,10 : top inecho,afpo : font_bold inecho : caption inecho, "Echo n°:"+str$(inecho)+"-degrée :"+ str$(int(degree))+" Dist="+str$(int(dist1)) + "  Echo rapproché"
        2d_pen_width 5 : 2d_pen_color 255,0,0: 2d_circle y1+(xx-1),x1+(yy-1),2
      else
        2d_pen_width 5 : 2d_pen_color 0,0,0: 2d_circle y1+(xx-1),x1+(yy-1),2
        alpha inecho : font_color inecho,255,0,0 : left inecho,10 : top inecho,afpo : font_bold inecho : caption inecho, "Echo n°:"+str$(inecho)+"-degrée :"+ str$(int(degree))+" Dist="+str$(int(dist1))
        font_color inecho,0,0,0
      end_if
      inecho=inecho+1
      afpo=afpo+15
      presecho=0
      beep
    end_if
  next i
  show 102
  hide 101
  return : ' end <<<====toujours terminer un sous-programme par RETURN !

analyse:
  beep
  return : ' end <<<====toujours terminer un sous-programme par RETURN !

sortie:
  terminate
  ' end <<<=====  ce END ne sera jamais exécuté. TERMINATE est la dernière commande exécutée.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
gigi75

avatar

Nombre de messages : 95
Age : 45
Date d'inscription : 13/04/2013

MessageSujet: Re: Radar pour futur projet   Sam 16 Aoû 2014 - 12:19

Merci Klaus pour l'aide, je regarde le code modifié.

Sympas
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
gigi75

avatar

Nombre de messages : 95
Age : 45
Date d'inscription : 13/04/2013

MessageSujet: Re: Radar pour futur projet   Sam 16 Aoû 2014 - 12:23

J'ai compris pour les Return,
La différence entre pause et wait aussi.

Merci.

PS: Déjà j'essaye de ne plus utiliser de GOTO, source PAPY je crois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Radar pour futur projet   Sam 16 Aoû 2014 - 12:37

C'est à ça que ça sert, le forum. Aider à faire progresser mutuellement...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Radar pour futur projet   

Revenir en haut Aller en bas
 
Radar pour futur projet
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 3D pour un projet en Stage
» Radars sur Nüvi 1490T help !!!
» 3790 MAJ logiciel et cartes
» 3590LMT, 1ére sortie....
» 760 lmt camping car

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: