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 ---

Detcter un bouton avec VisualTFT

Forum général en BASIC et PASCAL !

Modérateur : Gérard

scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

Detcter un bouton avec VisualTFT

Messagepar 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.

Avatar de l’utilisateur
paulfjujo
Maître
Maître
Messages : 3256
Enregistré en : juillet 2015
Localisation : 01800
Contact :

Detcter un bouton avec VisualTFT

Messagepar 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

  
}
}
Aide toi, le ciel ou FantasPic t'aidera

scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

Detcter un bouton avec VisualTFT

Messagepar 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.

Avatar de l’utilisateur
paulfjujo
Maître
Maître
Messages : 3256
Enregistré en : juillet 2015
Localisation : 01800
Contact :

Detcter un bouton avec VisualTFT

Messagepar 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 ..
Aide toi, le ciel ou FantasPic t'aidera

scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

Detcter un bouton avec VisualTFT

Messagepar 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.

scrib
Membre
Membre
Messages : 8
Enregistré en : août 2016

Detcter un bouton avec VisualTFT

Messagepar 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.

JMarc
Confirmé
Confirmé
Messages : 607
Enregistré en : août 2016
Localisation : Dans le Sud...

Detcter un bouton avec VisualTFT

Messagepar 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é