frequence ou vitesse

PieM

Senior Member
ben tout pendant que le signal reçu n'est pas conforme, il ne peut donner des indications correctes!
0000120 ça veut dire qu'il est 00h01m20s soit en heure locale 02h 01 mn 20 s
V : signal insuffisant
après toutes les données sont non valides à cause du V

Il faut être positionné dans une zone de meilleure réception.
Sur votre gps de voiture c'est pareil...

le programme en 22 est corrigé.

un autre programme qui indique sur afficheur serie la latitude, le nb de satellites vus
et sur la seconde ligne: longitude et DOP

Rich (BB code):
;****************************************
;***** GPS NEO6M  *****1703- PieM
; trame GGA long. et lat.  Nb sat et DOP
; Afficheur serie 2x16
;****************************************
#Picaxe 14M2

symbol baud_GPS = T4800_8     'com GPS
symbol baud_aff = N2400_8  'com afficheur
symbol UART_in = C.0    'liaison lecture GPS
symbol UART_out = B.4      'liaison ecriture GPS via 5V > 3V
symbol UART_aff = B.5      'liaison afficheur

setfreq m8
setint %00000000,%00000001    'interruption sur C.0

'===================================================================
'serout UART_out, baud_out, ("$PUBX,41,1,0007,0003,4800,0*13",CR,LF)
'serout UART_out, baud_out, ("$PUBX,41,1,0007,0003,9600,0*10",CR,LF)

main:
do
   if bit0 = 1 then gosub affich ' si trame recue en interruption
   setint %00000000,%00000001 'rearmement interruption
loop

'----------------------------------------------------------------------
affich:
   bptr= 17       'position pointeur lat/long
   serout UART_aff,baud_aff,(254,128,@bptrinc,@bptrinc," ",@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,"     ") ' affiche latitude
   bptr = bptr+3  'saut virgule et 00
   serout UART_aff,baud_aff,(254,193,@bptrinc," ",@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,"  ") ' affiche longitude

   bptr= 44 ' position pointeur Nb sat et Dop
   serout UART_aff,baud_aff,(254,142,@bptrinc,@bptrinc) ' affiche nb satellites
   inc bptr 'saut de la virgule
   serout UART_aff,baud_aff,(254,205,@bptrinc,@bptrinc,@bptrinc) ' affiche DOP
pause 500   
bit0 = 0 

return

interrupt:
   bptr= 10    'lecture de la trame GGA
  serin UART_in, baud_GPS,("GGA,"),@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc
bit0 = 1
return
 
Last edited:

JRTEC

Senior Member
ben tout pendant que le signal reçu n'est pas conforme, il ne peut donner des indications correctes!
0000120 ça veut dire qu'il est 00h01m20s soit en heure locale 02h 01 mn 20 s
V : signal insuffisant
après toutes les données sont non valides à cause du V

Il faut être positionné dans une zone de meilleure réception.
Sur votre gps de voiture c'est pareil...

le programme en 22 est corrigé.

un autre programme qui indique sur afficheur serie la latitude, le nb de satellites vus
et sur la seconde ligne: longitude et DOP

Code:
[COLOR=Green];****************************************
;***** GPS NEO6M  *****1703- PieM
; trame GGA long. et lat.  Nb sat et DOP
; Afficheur serie 2x16
;****************************************[/COLOR]
[COLOR=Navy]#Picaxe [/COLOR][COLOR=Black]14M2[/COLOR]

[COLOR=Blue]symbol [/COLOR][COLOR=Black]baud_GPS [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Blue]T4800_8     [/COLOR][COLOR=Green]'com GPS[/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Black]baud_aff [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Blue]N2400_8  [/COLOR][COLOR=Green]'com afficheur[/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Black]UART_in [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Blue]C.0    [/COLOR][COLOR=Green]'liaison lecture GPS[/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Black]UART_out [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Blue]B.4      [/COLOR][COLOR=Green]'liaison ecriture GPS via 5V > 3V[/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Black]UART_aff [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Blue]B.5      [/COLOR][COLOR=Green]'liaison afficheur[/COLOR]

[COLOR=Blue]setfreq m8
setint [/COLOR][COLOR=Navy][B]%00000000[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Navy][B]%00000001    [/B][/COLOR][COLOR=Green]'interruption sur C.0 

'===================================================================
'serout UART_out, baud_out, ("$PUBX,41,1,0007,0003,4800,0*13",CR,LF)
'serout UART_out, baud_out, ("$PUBX,41,1,0007,0003,9600,0*10",CR,LF)[/COLOR]

[COLOR=Black]main:[/COLOR]
[COLOR=Blue]do
   if [/COLOR][COLOR=Purple]bit0 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy][B]1 [/B][/COLOR][COLOR=Blue]then gosub [/COLOR][COLOR=Black]affich [/COLOR][COLOR=Green]' si trame recue en interruption
   [/COLOR][COLOR=Blue]setint [/COLOR][COLOR=Navy][B]%00000000[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Navy][B]%00000001 [/B][/COLOR][COLOR=Green]'rearmement interruption[/COLOR]
[COLOR=Blue]loop
 [/COLOR]
[COLOR=Green]'----------------------------------------------------------------------[/COLOR]
[COLOR=Black]affich:
   [/COLOR][COLOR=Purple]bptr[/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy][B]17       [/B][/COLOR][COLOR=Green]'position pointeur lat/long
   [/COLOR][COLOR=Blue]serout [/COLOR][COLOR=Black]UART_aff,baud_aff,[/COLOR][COLOR=Blue]([/COLOR][COLOR=Navy][B]254[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Navy][B]128[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Red]" "[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Red]"     "[/COLOR][COLOR=Blue]) [/COLOR][COLOR=Green]' affiche latitude
   [/COLOR][COLOR=Purple]bptr [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]bptr[/COLOR][COLOR=DarkCyan]+[/COLOR][COLOR=Navy][B]3  [/B][/COLOR][COLOR=Green]'saut virgule et 00
   [/COLOR][COLOR=Blue]serout [/COLOR][COLOR=Black]UART_aff,baud_aff,[/COLOR][COLOR=Blue]([/COLOR][COLOR=Navy][B]254[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Navy][B]193[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Red]" "[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Red]"  "[/COLOR][COLOR=Blue]) [/COLOR][COLOR=Green]' affiche longitude

   [/COLOR][COLOR=Purple]bptr[/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy][B]44 [/B][/COLOR][COLOR=Green]' position pointeur Nb sat et Dop
   [/COLOR][COLOR=Blue]serout [/COLOR][COLOR=Black]UART_aff,baud_aff,[/COLOR][COLOR=Blue]([/COLOR][COLOR=Navy][B]254[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Navy][B]142[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Blue]) [/COLOR][COLOR=Green]' affiche nb satellites
   [/COLOR][COLOR=Blue]inc [/COLOR][COLOR=Purple]bptr [/COLOR][COLOR=Green]'saut de la virgule
   [/COLOR][COLOR=Blue]serout [/COLOR][COLOR=Black]UART_aff,baud_aff,[/COLOR][COLOR=Blue]([/COLOR][COLOR=Navy][B]254[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Navy][B]205[/B][/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Blue]) [/COLOR][COLOR=Green]' affiche DOP[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy][B]500   [/B][/COLOR]
[COLOR=Purple]bit0 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy][B]0 [/B][/COLOR]

[COLOR=Blue]return

[B][U]interrupt:
   [/U][/B][/COLOR][COLOR=Purple]bptr[/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy][B]10    [/B][/COLOR][COLOR=Green]'lecture de la trame GGA
  [/COLOR][COLOR=Blue]serin [/COLOR][COLOR=Black]UART_in, baud_GPS,[/COLOR][COLOR=Blue]([/COLOR][COLOR=Red]"GGA,"[/COLOR][COLOR=Blue])[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc[/COLOR][COLOR=Black],[/COLOR][COLOR=Purple]@bptrinc
bit0 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy][B]1[/B][/COLOR]
[COLOR=Blue]return[/COLOR]
Ok ! je comprends mieux avec vos eclaicissements que la com se fait entre le module GPS et le picaxe

oui mais la il y a une liaison afficheur serie je presume

Vous reliez le B5 au SDA ou SCL

j ai bien regarde la : http://electromag1.wifeo.com/lcd-i2c-expandeur-pcf8574.php ( c est ma bible rires !! ) et je n ai pas trouve de reponse

Je vais encore paraitre ingnorant mais qu est ce que la DOP ?
PAr avance merci
 

PieM

Senior Member
Il y a dans ce dernier programme une com RS232 entre le GPS et le Picaxe, bien évidemment, et une com RS232 entre picaxe et l'afficheur que j'ai mis (un axe 133 je crois)
B.5 est donc relié au IN de l'afficheur.
SDA SCL c'est pour une liaison I2C !

DOP: relire #36
 

PieM

Senior Member
ok pour le DOP , j avais zappe

apres pour le reste je decroche
bon on raccroche:

tu as un picaxe
tu as un GPS
tu as déjà relié le GPS au picaxe puisque tu sais le lire via sertxd.

quel afficheur as-tu ?
 

PieM

Senior Member
bon donc tu sais déjà l'utiliser, et tu connais la commande pour afficher ce que tu veux ?
 

JRTEC

Senior Member
non je n ai jamais utilise cela je l ai en stock et je l ai sortie pensant pouvoir de mon cote fabriquer la mequette qui correspondait au # 41

j ai par contre des afficheurs LCD 1602 pour une utilisation comme ici http://electromag1.wifeo.com/minuterie-compteuse-decompteuse-picaxe-14m2-et-lcd1602.php

Mon soucis : si j ai une valeur type w0 je sais comment la faire afficher

Mais dans le programme du #41 , je ne " retrouve pas mes petits " je veux dire que je ne reconnais pas les constantes que je veux faire afficher

Exemple :

bptr= 17 'position pointeur lat/long
serout UART_aff,baud_aff,(254,128,@bptrinc,@bptrinc," ",@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc," ") ' affiche latitude

Dans ce cas je ne reconnais rien
 

PieM

Senior Member
OK! ce qu'il faut comprendre, c'est que pour simplifier, je n'ai pas stocké les valeurs dans des variables type b2 ou w quecchose.
les valeurs des données, texte ou chiffres sont en mémoire RAM
qd tu dis d'écrire la valeur de b0, en fait tu vas chercher le contenu de la mémoire à la position 0
idem pour w3 qui va chercher les données en position 6 et 7 (car w3 c'est b6 et b7)

Ici, lors de la lecture du GPS, on va stocker les valeurs envoyée par le GPS directement en mémoire.
si j'écris bptr = 10, je me positionne à la place 10 de la mémoire.
ensuite le serin xxxxx, xxxx (@bptr) va stocker le byte reçu , dans la mémoire en position 10
bptr est l'adresse, @bptr est le contenu de la memoire à cette adresse
je pourrai ensuite faire:
bptr = bptr+1 pour passer en position 11
et continuer avec un serin xxxxx, xxxx (@bptr) etc...
Mais il y a une astuce qui evite de faire ça:
c'est d'utiliser @bptrinc au lieu de @bptr, ce qui a pour effet d'incrémenter à chaque foi le pointeur bptr

donc écrire :
bptr = 10
puis
serin xxxxx, xxxx (@bptr,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,)
va mettre successivement les 7 bytes reçus par serin , dans la mémoire RAM en position 10,11,12,13,14,15,16

dans mon programme, je stocke plus de 50 valeurs envoyées par le GPS sans utiliser des variables qui auraient été en nombre insuffisant de toute façon.

si j'ai besoin de la valeur reçue en 4e position et l'affecter à b0:
bptr = 13
b0 = @bptr

Mon programme ne fait rien d'autre.
Comme je ne fais que de l'affichage, je peux utiliser directement les valeur données par mes @bptr sans passer par des variables. J'ai directement le résultat qu'aurait donné un bintoascii.
Par contre, pour avoir des valeurs réelle permettant des calculs, il faut utiliser la transformation ASCII > binaire, ce que je fais avec le calcul de la vitesse en #22

C'est peut être un peu compliqué à comprendre cette histoire de pointeurs, mais c'est très important.
Cela permet en outre d'utiliser comme on veut toute le mémoire RAM disponible.
Par contre on ne peut utiliser directement une valeur @bptr dans un calcul: il faut la stocker dans une variable

Sur les X2, il est possible d'utiliser une autre partie de la mémoire, le scratchpad, avec ptr pour le pointeur et @ptr pour le contenu.
 

JRTEC

Senior Member
c est complexe quand meme


Pour debuter et attraper la vitesse

pourriez developper un peuplus ceci

"
si j'ai besoin de la valeur reçue en 4e position et l'affecter à b0:
bptr = 13
b0 = @bptr"
 
Last edited:

PieM

Senior Member
c est complexe quand meme


Pour debuter et attraper la vitesse

si je relis comme il faut le #21

La , on enregistre les données non ?


do

serin UART_in, baud_in, ( "$GPRMC," ), b1,b2,b3,b4,b5,b6,b7,#w13,#w12,b8,#w11,#w10,b9,b10,b11,b12

et la on affiche la vitesse

sertxd("Vit:",b10,b11,b12," ",cr, lf )
Oui sauf que cette méthode du forum anglais, utilisant des variables word pour longitude et latitude peut donner des valeurs fausse car 43.0002 va donner 43.2 et qu'il faut un grand nombre de variables aux dépends du reste du programme. (ne reste que w7 à w10!)
 

JRTEC

Senior Member
pourriez developper un peuplus ceci

"
si j'ai besoin de la valeur reçue en 4e position et l'affecter à b0:
bptr = 13
b0 = @bptr"
 

PieM

Senior Member
c est complexe quand meme


Pour debuter et attraper la vitesse

pourriez developper un peuplus ceci

"
si j'ai besoin de la valeur reçue en 4e position et l'affecter à b0:
bptr = 13
b0 = @bptr"
ben tout simplement car j'ai stocké mes valeurs à partir de la position 10 (bptr=10)
donc si j'ai besoin de la 4e après elle sera en position 13
 

JRTEC

Senior Member
d accord

alors on stocke tout avec bptr

et apres on pioche a la demande

Donc si je me refere a #22
"
bptr= 44 'debut de trame vitesse
if @bptr <> "," then
'bptr= 44
w0 = @bptrinc - 48 * 100
w0 = @bptrinc - 48 * 10 + w0
w0 = @bptrinc - 48 + w0 * 1852 'calcul des noeuds en m/h
peek 48, w1
w1= w1 - 48 * 185 'calcul des 1/10 noeuds en m/h
w0= w1+w0 "

La avec W0 j aurai la constante de vitesse reele dispo

AI je bon ?
 

PieM

Senior Member
d accord

alors on stocke tout avec bptr

et apres on pioche a la demande

Donc si je me refere a #22
"
bptr= 44 'debut de trame vitesse
if @bptr <> "," then
'bptr= 44
w0 = @bptrinc - 48 * 100
w0 = @bptrinc - 48 * 10 + w0
w0 = @bptrinc - 48 + w0 * 1852 'calcul des noeuds en m/h
peek 48, w1
w1= w1 - 48 * 185 'calcul des 1/10 noeuds en m/h
w0= w1+w0 "

La avec W0 j aurai la constante de vitesse reele dispo

AI je bon ?

Oui.
il y a un test <> "," car si la vitesse est nulle, il y a une série de ,,, à la place de la vitesse
(ça dépend des GPS)
 

JRTEC

Senior Member
d accord

si je comprends bien c est une trame de type GPRMC


j ai trouve une description ici :http://aprs.gids.nl/nmea/


et elle me dit cela :
$GPRMC

Recommended minimum specific GPS/Transit data

eg1. $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62
eg2. $GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68


225446 Time of fix 22:54:46 UTC
A Navigation receiver warning A = OK, V = warning
4916.45,N Latitude 49 deg. 16.45 min North
12311.12,W Longitude 123 deg. 11.12 min West
000.5 Speed over ground, Knots
054.7 Course Made Good, True
191194 Date of fix 19 November 1994
020.3,E Magnetic variation 20.3 deg East
*68 mandatory checksum


eg3. $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W*70
1 2 3 4 5 6 7 8 9 10 11 12


1 220516 Time Stamp
2 A validity - A-ok, V-invalid
3 5133.82 current Latitude
4 N North/South
5 00042.24 current Longitude
6 W East/West
7 173.8 Speed in knots
8 231.8 True course
9 130694 Date Stamp
10 004.2 Variation
11 W East/West
12 *70 checksum


eg4. $GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh
1 = UTC of position fix
2 = Data status (V=navigation receiver warning)
3 = Latitude of fix
4 = N or S
5 = Longitude of fix
6 = E or W
7 = Speed over ground in knots
8 = Track made good in degrees True
9 = UT date
10 = Magnetic variation degrees (Easterly var. subtracts from true course)
11 = E or W
12 = Checksum

avec une vitesse en KNOTS soit des noeuds nautiques

Par contre pour le btpr , on attaque a 10 et on enregistre si je comprends la valeur vitessa a partir de 44 soit 34 de difference

et la j ai beau compter je ne comprends pas comment on attrape le signal vitesse
 
Last edited:

PieM

Senior Member
C'est normal car toutes ces trames ne correspondent pas à celle du NEO6!
les formats ne sont pas standards et changent en fonction des constructeurs

les longitudes et latitudes sont données en ddmm.xxxx xxxx représentant des 1/10000 de minute.
et pour l'heure il n'y a pas de 1/100 de s
le format est
$GPRMC,hhmmss,A,llll.llll,a,yyyyy.yyyy,a,xxx.x,zzz.z,ddmmyy,tttt.t,a*hh

llll.llll latitude
yyyyy.yyyy longitude
xxx.x vitesse en noeuds

Après RMC, il y a 34 caractères pour arriver au xxx.x
Attention de compter aussi les "," !

J'utilise le premier pulse de la transmission pour provoquer l'interruption, qui elle va recevoir à partir de hhmmss...
 

JRTEC

Senior Member
Bonjur je n ai pas pu revenir avant

J ai essaye de faire un montage

Afficheur LCD 1602 picaxe 14M2 et NEO6

Voici une vue du schema ( manque l alim 5v que j ai su ma platine a essai )

et ci dessous le code que j ai compile en prenant a droite et a gauche des info , mais vu que je suis parti du programme en #41 mais que j a n ai pas d afficheur serie , ma compilation ne marche pas

je n arrive pas a comprendre comment transcrire les information recue


Code:
' vitesse GPS Jrtec NEO 6 Picaxe 14 





'*************************************************************************************************

#picaxe 14M2 	'directive utilisation pisaxe 14M2
#Terminal 9600


'***** Initialisation LCD*******************

	dirsB=%011111	
	dirsC=%111000
	
'*****Données d'initialisation de l'afficheur Type HD44780 ***********

	
	SYMBOL  RS        = C.1         ; 0 = Command   1 = Data
	SYMBOL  E         = C.2         ; 0 = Idle      1 = Active
	SYMBOL  DB4       = B.1         ; LCD Data Line 4
	SYMBOL  DB5       = B.2         ; LCD Data Line 5
	SYMBOL  DB6       = B.3         ; LCD Data Line 6
	SYMBOL  DB7       = B.5         ; LCD Data Line 7
	SYMBOL  RSCMDmask = %00000000 ; Select Command register
	SYMBOL  RSDATmask = %00000001 ; Select Data register
	SYMBOL  cpt       = b1
	SYMBOL  car		= b2
	SYMBOL  rsbit     = b3
		
	'Nibble commands - To initialise 4-bit mode
 
	DATA 0,( $33 )    ; %0011---- %0011----   8-bit / 8-bit
	DATA 1,( $32 )    ; %0011---- %0010----   8-bit / 4-bit
	
	'Byte commands - To configure the LCD
	 
	DATA 2,( %00101000 )    ;  %001LNF00   Display Format
	DATA 3,( %00001100 )    ;  %00001DCB   Display On
	DATA 4,( %00000110 )    ;  %000001IS   Cursor Move
	&#8216;                       ; L : 0 = 4-bit Mode    1 = 8-bit Mode
	&#8216;                       ; N : 0 = 1 Line        1 = 2 Lines
	&#8216;                       ; F : 0 = 5x7 Pixels    1 = N/A
	&#8216;                       ; D : 0 = Display Off   1 = Display On
	&#8216;                       ; C : 0 = Cursor Off    1 = Cursor On
	&#8216;                       ; B : 0 = Cursor Steady 1 = Cursor Flash
	&#8216;                       ; I : 0 = Dec Cursor    1 = Inc Cursor
	 &#8216;                      ; S : 0 = Cursor Move   1 = Display Shift
	DATA 5,( $01 )   	; Clear Screen
		
'***** Envoi de ces données au LCD ***************
PowerOnReset:
	FOR cpt = 0 TO 5
		READ cpt,car
		GOSUB SendInitCmdByte
	NEXT 
		
'***** DEBUT PROGRAMME PERSO ************************

	DATA 6,("Vitesse     km/h")	'Texte sur l'afficheur ligne1 (13c)
	

	gosub texte 	'Texte ligne 1 et 2
	
	pause 40000		'pause de 5 s à la mise sous tension
	
DO	
		
	
	gosub affiche	'Affichage des données
	
		

LOOP	
	
'***** 
symbol baud_GPS = T4800_8     'com GPS

symbol UART_in = C.0    'liaison lecture GPS
symbol UART_out = B.4      'liaison ecriture GPS via 5V > 3V


setfreq m8
setint %00000000,%00000001    'interruption sur C.0 

'===================================================================
'serout UART_out, baud_out, ("$PUBX,41,1,0007,0003,4800,0*13",CR,LF)
'serout UART_out, baud_out, ("$PUBX,41,1,0007,0003,9600,0*10",CR,LF)

main:
do
   
   setint %00000000,%00000001 'rearmement interruption
loop
 
'----------------------------------------------------------------------


interrupt:
   bptr= 10    'lecture de la trame GGA
  serin UART_in, baud_GPS,("GGA,"),@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc
bit0 = 1
return


















'***** Affichage des données ************************************
affiche:
	car= $80 | $0A	'curseur début ligne1 col 10
	gosub SendCmdByte
	
	
	
	car= $80 | $48	'curseur début ligne2 col 8
	gosub SendCmdByte
		
	car=W0		'
	GOSUB SendDataByte	
	
	car=W1		' 
	GOSUB SendDataByte 
	

	return
	
'***** Incrémentation et positionnement jalonnage ***********
 
 
 
 
 
 
 
 
 
 
 
 
	
'***** Ecriture du texte fixe sur afficheur *********************************************************	
texte:	'position du curceur ligne 1 et ecriture du label

	car= $80 | $00	'curseur début ligne1
	gosub SendCmdByte
	 	
	FOR cpt = 6 TO 18	'lecture texte ligne1 
		READ cpt,car
		GOSUB SendDataByte
	NEXT	
'******** idem  pour ligne 2 ********
 
	car= $80 | $40	'curseur début ligne2	
	gosub SendCmdByte
	
	FOR cpt =20 TO 35	'lecture texte ligne2 
		READ cpt,car
		GOSUB SendDataByte
	NEXT	
	return
	
'

'***** Sous programmes d'écriture du LCD************ 
SendInitCmdByte:
 
	PAUSE 60                        ; Delay 15mS 
 
SendCmdByte:
 
	rsbit = RSCMDmask               ; RSCDmask = 0 ;Send to Command register
 
SendDataByte:
 
	pinsB = car & $F0 / 4 | rsbit   ; Put MSB out first
 	PULSOUT E,1                     ; Give  pulse on E
	
	pinsB = car & $0F * 4 | rsbit   ; Put LSB out second
	PULSOUT E,1                     ; Give  pulse on E
		 
	rsbit = RSDATmask               ; RSDATmask = 1 ; Send to Data register next
	
	RETURN
 

Attachments

PieM

Senior Member
Bonjour,
Une chose à la fois STP!
La première chose est de faire un montage correct entre le 14M2 et l'afficheur! http://electromag1.wifeo.com/lcd-alphanumeriques-et-picaxe.php
Reprendre le document de Michel sans modifier les liaisons, sinon ça ne marchera jamais.

ensuite utiliser son programme et envoyer quelques caractères pour vérifier que ça marche bien.

il est évident que le programme donné en #41 ne peut fonctionner avec une liaison // . Il sera à adapter dans un second temps.
 

MGU

Senior Member
Bonjour,

Il y a aussi les adaptateurs I2C, pas cher, avec le réglage de contraste. On utilise les broches I2C du picaxe, il n'y a pas de choix, mais on utilise deux broches au lieu de six.
http://electromag1.wifeo.com/lcd-i2c-expandeur-pcf8574.php

Le bon code est le dernier de la page, l'initialisation est plus compacte que sur les pages des premiers LCD parallèles 4bits

J'ai acheté le même GPS, pas encore testé.

MM
 

JRTEC

Senior Member
Bonjour,
Une chose à la fois STP!
La première chose est de faire un montage correct entre le 14M2 et l'afficheur! http://electromag1.wifeo.com/lcd-alphanumeriques-et-picaxe.php
Reprendre le document de Michel sans modifier les liaisons, sinon ça ne marchera jamais.

ensuite utiliser son programme et envoyer quelques caractères pour vérifier que ça marche bien.

il est évident que le programme donné en #41 ne peut fonctionner avec une liaison // . Il sera à adapter dans un second temps.
Bonjur et merci de vos reponse

J ai brancher le GPS sur les bornes B4 et C0 en reference au # 22 pensantque cela etait important

je vais modifie le branchement de l ecran pour test et debrancher le GPS
 

JRTEC

Senior Member
Bonjour,

Il y a aussi les adaptateurs I2C, pas cher, avec le réglage de contraste. On utilise les broches I2C du picaxe, il n'y a pas de choix, mais on utilise deux broches au lieu de six.
http://electromag1.wifeo.com/lcd-i2c-expandeur-pcf8574.php

Le bon code est le dernier de la page, l'initialisation est plus compacte que sur les pages des premiers LCD parallèles 4bits

J'ai acheté le même GPS, pas encore testé.

MM
Bonjour et merci pour la reponse

j en ai commander des adaptateur mais je les ai perdu ... du le montage comme le jalonnage
 

MGU

Senior Member
Bonjour à tous,

J'essaie de faire fonctionner ce module Ubox NEO-6M .

La led du module clignote et il sort des trames de 3v d'amplitude. Mais avec un identifiant, même réduit à "$GP", rien ne sort et le serin reste bloqué.
J'ai essayé tous les identifiants
Sans identifiants, j'ai bien une série de caractères incohérents.
Les tests sont faits avec les codes donnés en #21 par PieM (merci).

Je lui ai fait prendre l'air, pour voir... rien...
J' en viens à douter de ce module, qui n'a pourtant subit aucun mauvais traitement.

Je ne sais pas ce qu'a fait jojojo de celui qu'il a reçu.

Je n'ai rien envoyé vers le NEO (RX), il y a peut être une configuration à faire ?

MM
 
Last edited:

PieM

Senior Member
bonjour Michel,

Essaie avec une com à 9600 bauds. (passer à 16MHz)
Théoriquement le NEO6 est livré avec cette fréquence de base , ce qui n'est pas le cas avec le mien...
Pour éventuellement passer en 4800 bauds, envoyer la commande:
serout uart_out,T9600_16, ("$PUBX,41,1,0007,0003,4800,0*13",CR,LF) via le pont diviseur 5V > 3V.
 
Last edited:

MGU

Senior Member
Bonjour PieM,

Ce module aurait par défaut une fréquence de 9600 bauds (note fournisseur chinois), j'ai donc essayé avec le 14M2 serin T9600_8, même problème.
Je peux tenter une reconfiguration, mais si quelqu'un a une expérience avec ce module :"GY-NEO6MV2 NEO-6M GPS Module Board with Antenna ", je suis preneur.
Merci pour le serout

MM
 

PieM

Senior Member
Bonjour PieM,

Ce module aurait par défaut une fréquence de 9600 bauds (note fournisseur chinois), j'ai donc essayé avec le 14M2 serin T9600_8, même problème.
Je peux tenter une reconfiguration, mais si quelqu'un a une expérience avec ce module :"GY-NEO6MV2 NEO-6M GPS Module Board with Antenna ", je suis preneur.
Merci pour le serout

MM
Bizarre! C'est exactement le module en ma possession.
Le module reçoit donc bien les signaux satellites. Ton débit avec le terminal est correct ?

C'est vrai que la doc dit que la config de base est 9600 bauds mais le mien n'a fonctionné que si j'étais à 4800 ...
 

MGU

Senior Member
J'ai essayé avec le terminal et avec un LCD série, idem..
A l'oscillo, je vois bien une trame, au rythme du clignotement de la led, (fréquence env 1 s)

MM
 

PieM

Senior Member
J'ai essayé avec le terminal et avec un LCD série, idem..
A l'oscillo, je vois bien une trame, au rythme du clignotement de la led, (fréquence env 1 s)

MM
en fonction de la durée des créneaux, on doit pouvoir retrouver le débit ... 1 bit = 104µs à 9600 bauds
 
Last edited:

MGU

Senior Member
en fonction de la durée des créneaux, on doit pouvoir retrouver le débit ... 1 bit = 104µs à 9600 bauds
Merci, je vais essayé de mesurer ça

Avec mon vieux metrix, j'arrive à voir des créneaux de 100µs (à l&#8217;étalonnage près), c'est donc bien du 9600

MM
 
Last edited:

MGU

Senior Member
Ouf...

Et donc, ça fonctionne...

Mais pas en T9600_8, non, seulement en T9600_16 ... Pourquoi ?? Un pb de timing dans la liaison série?
Et donc Terminal 19200

Bref, je reçois les trames suivantes:
GLL, RMC, VTG, GSA, GSV, et à la mise sous tension, TXT et GGA

Je reverrai tout celà demain
Et merci PieM, je me voyais mal parti

MM
 

PieM

Senior Member
super!

Oui effectivement, sans doute un pb de timing dans la liaison.
Finalement tu reçois toutes les trames, contrairement à moi !
 

MGU

Senior Member
super!

Oui effectivement, sans doute un pb de timing dans la liaison.
Finalement tu reçois toutes les trames, contrairement à moi !
Je pense que c'est normal, il est précisé qu'à 4800 baud, la trame VTG n'est pas transmise.

J'ai allégé un peu le code original de PieM, l'utilisation de la RAM indexée (je sais pas si c'est le bon terme) fonctionne superbement.
Il suffit de modifier l'identifiant pour lire une trame quelconque:

Code:
; *******************************
; ***** GPS NEO6M  *****
; *******************************
#Picaxe 14M2
#Terminal 38400

symbol baud_in = T9600_32
symbol UART_in = B.4  ' vers Tx NEO6
setfreq m32
'===================================================================
main:
do   
	gosub lecture
	gosub affich
loop

affich:
   bptr= 10 ' debut de trame 
    sertxd(@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,cr,lf )
return

lecture:
   bptr= 10
  serin UART_in, baud_in, ( "GGA," ),@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc

return

Résultat:

NEO.JPG

Après, on sélectionne les bons bptr, et on en fait ce qu'on veut.

(Et dire que j'ignorais tout de la "Correction de la hauteur de la géoïde en Mètres par rapport à l'ellipsoïde WGS84"...)

MM
 
Last edited:

PieM

Senior Member
Je pense que c'est normal, il est précisé qu'à 4800 baud, la trame VTG n'est pas transmise.
Ah ben ça je ne l'avais jamais lu! Merci.
Vais essayer de le configurer en 9600.
Etonnant que la trame GGA donne le Fix au 1/100e de secondes...

Et dire que j'ignorais tout de la "Correction de la hauteur de la géoïde en Mètres par rapport à l'ellipsoïde WGS84"...
Pffff! M'enfin! comment as tu pu vivre comme ça jusqu'à présent?
 

MGU

Senior Member
Ah ben ça je ne l'avais jamais lu! Merci.
Bonjour,
Ce qui est sûr, c'est que tout n'est pas transmis en 4800. Et il me semble avoir lu (où ?) que VTG était concerné.
Je vais essayer de retrouver.

MM
 

MGU

Senior Member
Bonjour,

Suite des essais.
Un programme pour extraire la vitesse en km/h de la trame VTG.
Quelques constatations:
Le champs est de la forme 0.532 soit un nombre à trois décimales , alors que dans les docs, on a 010.2, avec une décimale.
Le format s'adapte à la valeur de la vitesse ? Faudrait monter ça sur pile, dans une voiture, et voir.
Avec trois décimales, la valeur est instable en statique.
Les champs cap vrai et cap magnétique sont vides, sans doute normal en statique

Code:
; *******************************
; ***** GPS NEO6M  *****
;Extraction du champs vitesse en km/h de la trame VTG
; *******************************
#Picaxe 14M2
#Terminal 38400
#no_data

symbol baud_in = T9600_32
symbol UART_in = B.4  ' vers Tx NEO6
	pause 300
	serout C.0,N2400,(254,1)
	setfreq m32
	do   
		gosub lecture
		gosub affich
		gosub vitesse	
	loop

affich:
   bptr= 30 ' debut de trame 
    sertxd(@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,cr,lf )
return

lecture:
   bptr= 30
  serin UART_in, baud_in,("VTG,"),@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc
	return

vitesse:
	bptr=30
	do loop until @bptrinc="N"	;recherche balise
	inc bptr	
	b1=@bptrinc
	b2=@bptrinc
	b3=@bptrinc
	b4=@bptrinc
	b5=@bptrinc
	setfreq m4
	serout C.0,N2400,(254,128,"vites=",b1,b2,b3,b4,b5," km/h")
	setfreq m32
return
MM
 

PieM

Senior Member
Bonjour,
Sur le mien, impossible de passer en 9600 bauds. Il n'accepte aucune commande en $PUBX. Sans doute un peu bridé, lié à ses origines chinoises !...
Je pense que dans cette trame VTG, le format doit s'adapter. Il faut donc detecter le "."
Le problème de cette trame est qu'il n'y a aucun indicateur de validité de la réception.

Comme vitesse et cap sont calculés à partir de positions successives, cette dernière n'étant pas stable en statique, vitesse et cap, si c'est calculé, peut être n'importe quoi.
pour le cap magnétique, il faut que le récepteur ait la table de déviation. Je ne sais si c'est le cas du NEO
 

MGU

Senior Member
Bonjour,

Bizarre, il me semble que nos modules ont la même origine asiatique.
NEO6M.JPG

Dans ce pdf: https://www.u-blox.com/sites/default/files/products/documents/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf

On lit que la configuration par défaut est de 9600 b/s (broches de configuration à 1). Les modifs sont sauvegardées par la batterie.
Si le config originale a été modifiée, on devrait la retrouver en enlevant cette batterie temporairement.

Pour la simple visualisation de la vitesse le format n'est pas un problème, le LDC affiche les 5 caractères, point compris. Pour l'utilisation, il faut décoder la valeur, ce qui n'est pas un gros problème.

MM
 

PieM

Senior Member
Même origine mais peut être pas même fabricant..
La pile est soudée et je n'ai pas trop envie d'intervenir sur cette platine, Dans l'immédiat ça suffit à mon besoin.
Concernant la doc il a qqchose de plus complet ici
voir page 54 les trames réelles envoyées par le NEO6
 

MGU

Senior Member
Même origine mais peut être pas même fabricant..
Je pensais que c'était exactement la même.

Pour moi, c'est de la pure curiosité, je n'en ai aucun besoin. Je vais peut être faire une petite page, ça peut servir à d'autres.

MM
 

JRTEC

Senior Member
Bonjour,
Une chose à la fois STP!
La première chose est de faire un montage correct entre le 14M2 et l'afficheur! http://electromag1.wifeo.com/lcd-alphanumeriques-et-picaxe.php
Reprendre le document de Michel sans modifier les liaisons, sinon ça ne marchera jamais.

ensuite utiliser son programme et envoyer quelques caractères pour vérifier que ça marche bien.

il est évident que le programme donné en #41 ne peut fonctionner avec une liaison // . Il sera à adapter dans un second temps.
Bonjour

suite a ce message j ai refait mon montage et avec le code suivant :

Code:
dirsB=%1111111 'défini les ports B en sorties

SYMBOL RS = B.0            ; 0 = Command 1 = Data
SYMBOL E = B.1             ; 0 = Idle 1 = Active
SYMBOL DB4 = B.2           ; LCD Data Line 4
SYMBOL DB5 = B.3           ; LCD Data Line 5
SYMBOL DB6 = B.4           ; LCD Data Line 6
SYMBOL DB7 = B.5           ; LCD Data Line 7
SYMBOL RSCMDmask = %00000000    ; Select Command register
SYMBOL RSDATmask = %00000001    ; Select Data register
SYMBOL cpt = b11
SYMBOL char = b12
SYMBOL rsbit = b13

'Nibble commands - To initialise 4-bit mode

DATA 0,( $33 ) ; %0011---- %0011---- 8-bit / 8-bit
DATA 1,( $32 ) ; %0011---- %0010---- 8-bit / 4-bit

'Byte commands - To configure the LCD

DATA 2,( %00101000 ) ; %001LNF00 Display Format
DATA 3,( %00001100 ) ; %00001DCB Display On
DATA 4,( %00000110 ) ; %000001IS Cursor Move
&#8216; ;             L : 0 = 4-bit Mode 1 = 8-bit Mode
&#8216; ;             N : 0 = 1 Line 1 = 2 Lines
&#8216; ;             F : 0 = 5x7 Pixels 1 = N/A
&#8216; ;             D : 0 = Display Off 1 = Display On
&#8216; ;             C : 0 = Cursor Off 1 = Cursor On
&#8216; ;             B : 0 = Cursor Steady 1 = Cursor Flash
&#8216; ;             I : 0 = Dec Cursor 1 = Inc Cursor
&#8216; ;             S : 0 = Cursor Move 1 = Display Shift
DATA 5,( $01 ) ; Clear Screen

    PowerOnReset:

         FOR cpt = 0 TO 5
         READ cpt,char
         GOSUB SendInitCmdByte
      NEXT


SendInitCmdByte:
PAUSE 15 ; Delay 15mS
SendCmdByte:
rsbit = RSCMDmask ; Send to Command register
SendDataByte:
pins = char & $F0 / 4 | rsbit ; Put MSB out first
PULSOUT E,1 ; Give a 10uS pulse on E
pins = char & $0F * 4 | rsbit ; Put LSB out second
PULSOUT E,1 ; Give a 10uS pulse on E
rsbit = RSDATmask ; Send to Data register next
RETURN
resultat infructueux j ai 2 ligne de carrés noir

Du coup de colere je suis reparti en LCD 1602 I2C en m inspirant du code d ici http://electromag1.wifeo.com/lcd-i2c-expandeur-pcf8574.php mais comme je ne suis que en 2 ligne j ai fait cela

Code:
;Utilisation expandeur PCF8574 sur LCD MM 04 05 2015
;Ecriture de textes, variables, accentués

;    SCL sur C.1
;    SDA sur C.2
;   tension var sur C.4
#picaxe 08M2
dirsC =%000111
symbol rsbit=bit0
symbol cpt=b1
symbol car=b2
symbol dat=b3
symbol vari= w13
    setfreq M32
    pullup %0110    ;activation des R pullup sur C.1 et C.2 pour I2C            
; Initialisation I2C 4 bits , etc ********
    hi2csetup i2cmaster,%01001110, i2cslow_32, i2cbyte        
; Initialisation LCD *********
    for cpt=0 to 5
        lookup cpt,($33,$32,$28,$c,$6,$01),car
        gosub EnvoiByteCommInit
    next
    pause 100    ;temps init du LCD
    
;  Affichage texte ***********************            
    car= 132    'curseur début ligne1
    gosub EnvoiByteComm    
    for cpt=0 to 6
    lookup cpt,("Bonjour"),car
    GOSUB EnvoiByteData    
    next    
    car= 196    'curseur  ligne2
    gosub EnvoiByteComm    
    for cpt=0 to 7
    lookup cpt,("Enfin !!"),car
    GOSUB EnvoiByteData    
    next 
    return    
                
; Sub envoi vers LCD via I2C *************
EnvoiByteCommInit:
    pause 15
EnvoiByteComm:
    rsbit=0
EnvoiByteData:
;1ére moitié
    dat=car & $F0 | %1000 | rsbit ;%1000 pour l'éclairage
    hi2cout (dat)
    pause 1       
    dat=dat | %1100
    hi2cout (dat)    ;pulse sur E cad P2
    pause 1
    dat=dat | %1000 & %1011   ;fin pulse
    hi2cout (dat)
    pause 1   
;2éme moitié
    dat=car & $0F * 16 | %1000 | rsbit
    hi2cout (dat)
    pause 1   
    dat=dat | %1100
    hi2cout (dat)
    pause 1
    dat=dat | %1000 & %1011
    hi2cout (dat)    
    rsbit=1
    return
et l ai j obtiens un n importe quoi en affichage des ysmbole identiques mais incronprehensibles

la je ne sais plus quoi faire
 
Last edited:
Top