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 : Gérard
Detcter un bouton avec VisualTFT
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.
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
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
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
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
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 " " 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.
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 " " 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
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Oups, j'ai raté le coche
pour tester une entrée , il faut lire le PORT pas la lacth de sortie
B7 ?
c'est pas le bit 1 du port E que tu voulais tester ?
donc
...
je ne sais pas si tu as la fonction Delay_ms(10) en basic ..
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
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.
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
Detcter un bouton avec VisualTFT
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).
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 91 invités