Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Ecran tactile ILI9341
Bonjour Satinas
Elle est bien mon orientation, je l'ai tourné exprès pour une fois que j'y arrive tout seul ...
J'ai sorti le voltmètre, compris ou sont les résistances, je suppose qu'il faut mettre le port data niveau haut et mesurer en analogique l'autre côté des résistances.
J'avais réussi a lire les valeurs en analogique sur un lcd 4 lignes mais avant d'utiliser le tactile, je vais créé une routine et afficher la valeur sur l'écran
Tiens voici mon cuiseur d'œuf qui ce modernise
satinas a écrit :Juste un petit problème d'orientation :)
Elle est bien mon orientation, je l'ai tourné exprès pour une fois que j'y arrive tout seul ...
J'ai sorti le voltmètre, compris ou sont les résistances, je suppose qu'il faut mettre le port data niveau haut et mesurer en analogique l'autre côté des résistances.
J'avais réussi a lire les valeurs en analogique sur un lcd 4 lignes mais avant d'utiliser le tactile, je vais créé une routine et afficher la valeur sur l'écran
Tiens voici mon cuiseur d'œuf qui ce modernise
Ecran tactile ILI9341
Bonjour JMarc, Satinas, et tous le forum,
JMarc , je suis vraiment loin derrière toi, mais pour l'instant j'ai pas le temps de m’occupè de cela.
Je fais mon possible pour revenir avec vous le plus vite possible, merci pour satinas, et c'est précieux conseils.
A+
JMarc , je suis vraiment loin derrière toi, mais pour l'instant j'ai pas le temps de m’occupè de cela.
Je fais mon possible pour revenir avec vous le plus vite possible, merci pour satinas, et c'est précieux conseils.
A+
Ecran tactile ILI9341
Bonjour tout le monde
Y a pas de soucis temp-x et merci Satinas pour ta patience
Aller, le fruit de mes recherches
Ecran 5408, j'ai 550homs entre d6 et rs . Pareil entre d7 et rs mais avec des variations si appuyé
550homs entre d7 et wr
Ecran ili 9341,300homs c'est entre d0 et rs et d1 et rs pour les variations, il y a aussi 550 Homs entre d1 et cs
Si je met d0 a 0volt et d1 a 5 volts alors j'ai les y sur cs compris entre 2,2 et 4,4 volts
Les x sur rs entre 0,3 et 1,4 volts
Ces valeurs ne sont pas vraiment stable mais il falais que je vous fasse profiter
Temps-x a écrit :Bonjour JMarc, Satinas, et tous le forum,
JMarc , je suis vraiment loin derrière toi, mais pour l'instant j'ai pas le temps de m’occupè de cela.
Je fais mon possible pour revenir avec vous le plus vite possible, merci pour satinas, et c'est précieux conseils.
A+
Y a pas de soucis temp-x et merci Satinas pour ta patience
Aller, le fruit de mes recherches
Ecran 5408, j'ai 550homs entre d6 et rs . Pareil entre d7 et rs mais avec des variations si appuyé
550homs entre d7 et wr
Ecran ili 9341,300homs c'est entre d0 et rs et d1 et rs pour les variations, il y a aussi 550 Homs entre d1 et cs
Si je met d0 a 0volt et d1 a 5 volts alors j'ai les y sur cs compris entre 2,2 et 4,4 volts
Les x sur rs entre 0,3 et 1,4 volts
Ces valeurs ne sont pas vraiment stable mais il falais que je vous fasse profiter
Ecran tactile ILI9341
Alors sa c'est du cuiseur d’œuf. Ils vont être plus que parfait avec un tel appareil
Bravo pour vos travaux. Et vive la persévérance
@++
Bravo pour vos travaux. Et vive la persévérance
@++
Ecran tactile ILI9341
Bonjour tous le monde
Merci
Donc travaux en cours...
Changement de port pour les commandes, j'ai tout passé sur le portA pour avoir accès a l'analogique
Donc après affichage, je passe trisA en mode entrée, envoi 1 sur portD, choisi le canal 2 puis 3 pour les numérisation, rebelote avec 2 sur portD puis repasse trisA en sorti et affiche le résultat
La colonne de gauche est x et à droite y
venom a écrit ::eek: Alors sa c'est du cuiseur d’œuf. Ils vont être plus que parfait avec un tel appareil
Bravo pour vos travaux. Et vive la persévérance
@++
Merci
Donc travaux en cours...
Changement de port pour les commandes, j'ai tout passé sur le portA pour avoir accès a l'analogique
Donc après affichage, je passe trisA en mode entrée, envoi 1 sur portD, choisi le canal 2 puis 3 pour les numérisation, rebelote avec 2 sur portD puis repasse trisA en sorti et affiche le résultat
La colonne de gauche est x et à droite y
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Ecran tactile ILI9341
Bonjour à tous,
JMarc, on a les 2 mêmes lcds, à part que j'ai un ST7783 au lieu du SPFD5408. Tu as été beaucoup plus perspicace, car tu as détecté que les plaques du tactile analogique ne sont pas sur les mêmes pins. Cela explique pourquoi je n'étais pas arrivé à le faire fonctionner, ne pouvant pas imaginer qu'ils livraient des lcds d'aspect identique, avec des brochages différents :)
Après quelques jours de boulot intensif, le ST7783 marche bien (sur Arduino), mais il est très inférieur au ILI9341. Notamment pour l'orientation beaucoup plus complexe. Sur le ILI9341, on modifie un registre pour passer du mode portrait au mode paysage, et tout suit derrière. Sur l'autre il faut changer 3 registres, et il faut aussi en tenir compte chaque fois qu'on définit une fenêtre à remplir. De plus il n'a pas de scroll hardware (le SPFD5408 a ce scroll).
Bref, ce 2ème lcd va partir à la poubelle, car je vais pas maintenir une bibliothèque de plus, avec un brochage différent, pour un lcd de capacités inférieures. Si quelqu'un est intéressé je lui envoie, mais il ne vaut pas le coup.
Vive Banggood, en fin de compte, il coûtait juste, 1 euro de plus ...
Pour lire le x d'un appui, on polarise la plaque X et on mesure sur la pin analogique de la plaque Y. Pour lire y, on fait l'inverse. Mais avant cela, il faut détecter l'appui en mesurant la pression d'appui. Voila comment Arduino lit cette pression, dans la boucle du main.
En utilisant les pins Vref- et Vref+ de l'ADC du pic, tu dois pouvoir améliorer la précision, si nécessaire. Arduino ne le fait pas.
Tu vas finir par lire couramment le C :)
Bon courage pour la suite
JMarc, on a les 2 mêmes lcds, à part que j'ai un ST7783 au lieu du SPFD5408. Tu as été beaucoup plus perspicace, car tu as détecté que les plaques du tactile analogique ne sont pas sur les mêmes pins. Cela explique pourquoi je n'étais pas arrivé à le faire fonctionner, ne pouvant pas imaginer qu'ils livraient des lcds d'aspect identique, avec des brochages différents :)
Après quelques jours de boulot intensif, le ST7783 marche bien (sur Arduino), mais il est très inférieur au ILI9341. Notamment pour l'orientation beaucoup plus complexe. Sur le ILI9341, on modifie un registre pour passer du mode portrait au mode paysage, et tout suit derrière. Sur l'autre il faut changer 3 registres, et il faut aussi en tenir compte chaque fois qu'on définit une fenêtre à remplir. De plus il n'a pas de scroll hardware (le SPFD5408 a ce scroll).
Bref, ce 2ème lcd va partir à la poubelle, car je vais pas maintenir une bibliothèque de plus, avec un brochage différent, pour un lcd de capacités inférieures. Si quelqu'un est intéressé je lui envoie, mais il ne vaut pas le coup.
Vive Banggood, en fin de compte, il coûtait juste, 1 euro de plus ...
Pour lire le x d'un appui, on polarise la plaque X et on mesure sur la pin analogique de la plaque Y. Pour lire y, on fait l'inverse. Mais avant cela, il faut détecter l'appui en mesurant la pression d'appui. Voila comment Arduino lit cette pression, dans la boucle du main.
En utilisant les pins Vref- et Vref+ de l'ADC du pic, tu dois pouvoir améliorer la précision, si nécessaire. Arduino ne le fait pas.
Code : Tout sélectionner
ILI9341 SPFD5408/ST7783
_xm lcd_rs lcd_rs (analogique)
_xp lcd_d0 lcd_d6
_ym lcd_d1 lcd_d7
_yp lcd_cs lcd_wr (analogique)
uint16_t TouchScreen::pressure(void) {
// Set X+ to ground
pinMode(_xp, OUTPUT);
digitalWrite(_xp, LOW);
// Set Y- to VCC
pinMode(_ym, OUTPUT);
digitalWrite(_ym, HIGH);
// Hi-Z X- and Y+
digitalWrite(_xm, LOW);
pinMode(_xm, INPUT);
digitalWrite(_yp, LOW);
pinMode(_yp, INPUT);
int z1 = analogRead(_xm);
int z2 = analogRead(_yp);
return (1023-(z2-z1));
}
Tu vas finir par lire couramment le C :)
Bon courage pour la suite
Ecran tactile ILI9341
Bonjour Satinas
Merci pour tes infos, memes si je ne les traites pas immédiatement, j'en prend note pour plus tard.
je n'ai pas bien compris la pression de l'appuis, c'est d'ailleur mon probleme pour l'instant de meme que la valeur x ou y de droite et gauche ne sont pas identique. effectivement je n'ai pas la meme valeur si appuis avec le stylet ou bien si appuis avec le doit mais effectivement j'ai l'ecart inverse si j'inverse la polarisation donc il doit y avoir une formule pour faire la moyenne
tien un bout de code car maintenant je commande les boutons valid et start sans probleme
Merci pour tes infos, memes si je ne les traites pas immédiatement, j'en prend note pour plus tard.
je n'ai pas bien compris la pression de l'appuis, c'est d'ailleur mon probleme pour l'instant de meme que la valeur x ou y de droite et gauche ne sont pas identique. effectivement je n'ai pas la meme valeur si appuis avec le stylet ou bien si appuis avec le doit mais effectivement j'ai l'ecart inverse si j'inverse la polarisation donc il doit y avoir une formule pour faire la moyenne
tien un bout de code car maintenant je commande les boutons valid et start sans probleme
Code : Tout sélectionner
movlw b'00001100'
movwf TRISA
movlw b'00000010' ;D1=>A2 = RS
movwf LATD
clrf ADCON1
movlw B'00010010'
movwf ADCON2
movlw B'00001001' ; canal 2 RS
movwf ADCON0
Tempo_10us .5 ;5X10us
bsf ADCON0,GO
Tempo_ms .15 ; 15 ms
movlw 0x06 ; port A en mode numérique
movwf ADCON1 ; dans registre de contrôle
clrf TRISA
movf ADRESH,w
movwf mesure_x1
;******************************************
movlw b'00001100'
movwf TRISA
movlw b'00000001' ;D0=>A2
movwf LATD
clrf ADCON1
movlw B'00010010'
movwf ADCON2
movlw B'00001001' ; canal 2
movwf ADCON0
Tempo_10us .5 ;5X10us
bsf ADCON0,GO
Tempo_ms .15 ; 15 ms
movlw 0x06 ; port A en mode numérique
movwf ADCON1 ; dans registre de contrôle
clrf TRISA
movf ADRESH,w
movwf mesure_x2
Ecran tactile ILI9341
Mesures faites sur le lcd ILI9341
plage de mesure adc en x -> 110 à 830
plage de mesure adc en y -> 80 à 830 (80 à 120 zone boutons en dehors du lcd)
Pour lire la pression, je le comprends comme ça :
- On met x+ à 0V et y- à Vcc
- On mesure z1 sur x-. Si pas d'appui l'adc trouve 0V donc z1 = 0, si appui, z1 augmente
- On mesure z2 sur y+. Si pas d'appui l'adc trouve Vcc donc z2 = 850, si appui, z2 diminue
Donc si appui (z2-z1) diminue progressivement de 850 à 300 environ.
Pour avoir une valeur croissante avec la pression d'appui, on fait 1023-(z2-z1)
Code : Tout sélectionner
110 830
y-
80 -------------
| |
120 |-------------|
| |
| |
x- | | x+
| |
| |
| |
| |
830 -------------
y+
plage de mesure adc en x -> 110 à 830
plage de mesure adc en y -> 80 à 830 (80 à 120 zone boutons en dehors du lcd)
Pour lire la pression, je le comprends comme ça :
- On met x+ à 0V et y- à Vcc
- On mesure z1 sur x-. Si pas d'appui l'adc trouve 0V donc z1 = 0, si appui, z1 augmente
- On mesure z2 sur y+. Si pas d'appui l'adc trouve Vcc donc z2 = 850, si appui, z2 diminue
Donc si appui (z2-z1) diminue progressivement de 850 à 300 environ.
Pour avoir une valeur croissante avec la pression d'appui, on fait 1023-(z2-z1)
Ecran tactile ILI9341
Bonjour a tous
Satinas, maintenant que cela s'affiche, j'effectue les modifications et essais que tu m'as demandé
Donc la routine d'envoi des commandes et des données pour que cela serve aux forumeurs
J'ai aussi déconnecté la broche rst et cela fonctionne également
et la macro pour l'initialisation faite au minimum
Satinas, maintenant que cela s'affiche, j'effectue les modifications et essais que tu m'as demandé
Donc la routine d'envoi des commandes et des données pour que cela serve aux forumeurs
Code : Tout sélectionner
Envoi_cmd
bcf LCD_RS
movwf LCD_DATA
bcf LCD_WR
nop
bsf LCD_WR
return
Envoi_data_8
bsf LCD_RS
movwf LCD_DATA
bcf LCD_WR
nop
bsf LCD_WR
clrf LCD_DATA
return
J'ai aussi déconnecté la broche rst et cela fonctionne également
et la macro pour l'initialisation faite au minimum
Code : Tout sélectionner
INITIALISATION_TFT macro
;****************************************************************
; Debut initialisation par JMarc
;*****************************************************************
Tempo_10ms .100
bcf LCD_CS
bsf LCD_WR
bsf LCD_RD
bsf LCD_RST
Tempo_10ms .20
bcf LCD_RST ; reset hard
Tempo_10ms .10
bsf LCD_RST
Tempo_10ms .20 ; 200 millisecondes
movlw 0x01 ; reset soft
call Envoi_cmd
Tempo_10ms .10
movlw 0x3A ; colmod
call Envoi_cmd
movlw 0x55 ; 16 bits/pixel 65K couleurs rgb 565 '1010101'
call Envoi_data_8
movlw 0x11 ; sleep out
call Envoi_cmd
movlw 0x29 ; ecran on
call Envoi_cmd
;************************Fin de l'initialisation********
movlw 0x36 ; memory access control
call Envoi_cmd
movlw b'11100000' ; inversion ecran
call Envoi_data_8
endm
Ecran tactile ILI9341
Pas facile de se comprendre, sans en mettre des tartines ...
J'ai beaucoup parlé de macros, mais c'était pour démarrer le SPFD5408 qui demande beaucoup de commandes d'initialisation. Du style la macro c8_d16 qui figure dans le dernier programme que tu as testé.
J'ai continué à en parler pour l'ILI9341, là c'était une erreur. Pour le ILI9341 qu'on démarre avec seulement 3 commandes, ce n'est pas absolument nécessaire d'avoir une telle macro pour l'init, et encore moins une macro qui fait toute l'init. Soit tu mets tout ça en début de programme, soit tu fais juste le reset puis tu appelles l'init qui est un sous-programme.
On reparlera des macro plus tard, quand il s'agira d'optimiser en vitesse. On oublie, fais des sous-programmes, tu seras plus à l'aise.
J'ai beaucoup parlé de macros, mais c'était pour démarrer le SPFD5408 qui demande beaucoup de commandes d'initialisation. Du style la macro c8_d16 qui figure dans le dernier programme que tu as testé.
Code : Tout sélectionner
init_5408 bcf LCD_CS
c8_d16 0xb0, 0x0000
c8_d16 0xe5, 0x8000
c8_d16 0x00, 0x0001
c8_d16 0x01, 0x0100
c8_d16 0x02, 0x0700
c8_d16 0x03, 0x1030
c8_d16 0x04, 0x0000
...
J'ai continué à en parler pour l'ILI9341, là c'était une erreur. Pour le ILI9341 qu'on démarre avec seulement 3 commandes, ce n'est pas absolument nécessaire d'avoir une telle macro pour l'init, et encore moins une macro qui fait toute l'init. Soit tu mets tout ça en début de programme, soit tu fais juste le reset puis tu appelles l'init qui est un sous-programme.
On reparlera des macro plus tard, quand il s'agira d'optimiser en vitesse. On oublie, fais des sous-programmes, tu seras plus à l'aise.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 45 invités