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 ---
Forum général en BASIC et PASCAL !

Modérateur : Gérard

Detcter un bouton avec VisualTFT
scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

#1 Message par scrib » dim. 3 déc. 2017 16:05

Bonjour à tous le forum,

Je continue mon apprentissage de VisualTFT avec le basic. J'arrive à allumer une LED avec un bouton créé sur l'écran (avec l'aide de paulfjujo). Je voudrais, maintenant, détecter l'appuie sur un bouton câble sur le port E.1, mais ça ne fonctionne pas. J'ai mis le port E en entrée grâce à la commande TRISE = 255.
Dans la procédure de détection d’appuis, voilà ce que j'ai écris:

sub procedure Detection()
If LATE.D1 then
Screen1.Color = 0x000000
DrawScreen(@Screen1)
end If
end sub.

Je n'arrive pas à trouver de doc, pour m'aider, si quelqu'un à un lien à me fournir je suis preneur.
Pouvez-vous m'aider,
Merci.

Detcter un bouton avec VisualTFT
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1052
Âge : 68
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#2 Message par paulfjujo » dim. 3 déc. 2017 17:15

bonjour,


LATE.D1 ?

en C, a syntaxe serait plutot LATE.B1 le B signifiant bit
A verifier si il n'y a pas de rebond sur le bouton !

le test aussi ???

:!!: c'est du basic ?
en C

Code : Tout sélectionner


if 
(LATE.B1==1) 
{
  Delay_ms(10); // si apres 10ms on detecte encore l'etat appuyé ,c'est OK
  if (LATE.B1==1)
  {
...
 action

  
}
}

Detcter un bouton avec VisualTFT
scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

#3 Message par scrib » dim. 3 déc. 2017 18:03

Bonjour paulfjujo et le forum,

Merci pour votre réponse, oui c'est bien du basic. C'est une erreur d'écriture de ma part sur le post, c'est bien "
if LATE.B7 = 1 then
" En basic, il n'y a qu'un seul "=". Votre solution, avec le "delay "ne fonctionne pas, la détection ne se fait pas et je ne comprends pas pourquoi. Si vous avez une autre idée, ou quelqu'un d'autre, je suis preneur.
Merci.

Detcter un bouton avec VisualTFT
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1052
Âge : 68
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#4 Message par paulfjujo » dim. 3 déc. 2017 18:21

Oups, j'ai raté le coche
pour tester une entrée , il faut lire le PORT pas la lacth de sortie

Code : Tout sélectionner

if LATE.B7 = 1 then


B7 ?
détecter l'appuie sur un bouton câble sur le port E.1

c'est pas le bit 1 du port E que tu voulais tester ?
donc

Code : Tout sélectionner


sub procedure Detection
()
If 
PORTE.B1=1 then
  Delay_ms
(10)            
   If 
PORTE.B1=1 then
    Screen1
.Color 0x000000
     DrawScreen
(@Screen1)
   
end If
 endif  
end sub.
 
...

je ne sais pas si tu as la fonction Delay_ms(10) en basic ..

Detcter un bouton avec VisualTFT
scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

#5 Message par scrib » dim. 3 déc. 2017 19:02

Merci paulfjujo,
Oui j'ai la fonction delay_ms(...). En basic, il y a les mêmes fonctions qu'en C, la différence réside essentiellement dans la manière d'écrire les procédures, et un peu la syntaxe.
Si je comprends bien :
LATE.B1 => lit la sortie du pin E1
PORTE.B1 => lit l'entrée du pin E1.
Avec les PIC16F, dont je me servais jusqu'à présent,tout se fait avec "PORTE1 = ...".
Merci pour avoir pris le temps de me répondre.

Detcter un bouton avec VisualTFT
scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

#6 Message par scrib » lun. 4 déc. 2017 08:45

Désolé pour l'erreur d’écriture sur mon post précédent (c'était le début de soiré). Il fallait lire:
LATE.B1 => écrit sur la sortie du pin E1
PORTE.B1 => lit l'entrée du pin E1.
Bonne journée.

Detcter un bouton avec VisualTFT
JMarc
Confirmé
Confirmé
Messages : 506
Enregistré en : août 2016
Localisation : Dans le Sud...

#7 Message par JMarc » jeu. 4 janv. 2018 23:33

Bonjour scrib

Je vais essayer de l’expliquer à ma façon, enfin ce que j’ai compris

Sur 18f, si tu modifie directement le port, il va dans une premier temps lire le port en question, modifier le bit que tu as choisi puis réécrire le port mais si l’electronique Derrière le port à peut être forcer le port a l’etat Bas (ou haut) ton port sera réécrit avec l’erreur

Example

Tu écrits toute les lignes à l’etat Haut

Sur une des lignes (par exemple la 2) il y a un composant qui pour une fraction de seconde te force la ligne à l’etat Bas
Ton pic reçoit ton instruction de passer le bit 7 a l’etat Bas, va lire le port qui devrait normalement être tout à l’etat Haut mais le bit 2 a été forcé à l’etat Bas du coup il va réécrire ton bit 7 en bas mais aussi le 2. Du coup quand la ligne 2 se libère elle ne repassera jamais à l’etat Haut comme toi tu l’avais prévu

Pour éviter cela, tu écrit directement dans son buffer (lat).


Retourner vers « Langage BASIC & PASCAL »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité