Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Ecran LCD

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Ecran LCD

Publié: Lun 01 Fév 2016, 19:15 
Bonjour Jean-Pierre,

On se fait tous piéger par des accolades qui manquent, ou des virgules à la place de points-virgules, ou bien le double signe = dans un test if ! :lol:

Dans ton programme initial, j'ai compté 10 tones et dans ta boucle, il doit y en avoir que 9.
Pour en avoir 10, soit tu démarres avec k = 0, ou bien si tu démarres avec k = 1, alors la conditions est k <= 10. Ainsi, k va de 0 à 9 (1er cas) ou de 1 à 10 (2ème cas). :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1627
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Ecran LCD

Publié: Lun 01 Fév 2016, 19:52 
Bonjour Christian,

Ok, c'est noté, j'expérimente les fonctions sonores, il y a du potentiel ! Pour l'instant je n'en suis qu'à des gadgets (ca tombe bien, j'étais inspecteur il y a longtemps, je ne dirai pas de quoi ..), mais je compte bien améliorer l'ambiance du réseau avec un lecteur de cartes et des fichiers MP3, cependant, de l'idée à la réalisation, il y a loin !
Mais ca viendra.
Avatar de l’utilisateur
JPDereux
Prolixe
 
Messages: 1777
Inscrit le: Lun 26 Mai 2008, 20:14
Localisation: PAYS DE RETZ
Echelle pratiquée: HO
Prénom: Jean-Pierre

Re: Ecran LCD

Publié: Mar 02 Fév 2016, 09:01 
Paris ne s'est pas fait en un jour... :roll:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1627
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Ecran LCD

Publié: Ven 05 Fév 2016, 11:52 
Bonjour à tous,

Je tourne en rond (c'est le cas de le dire) dans la section Loop de mon petit code, je voudrais avoir un bip lors de l'appui sur un BP , or l'instruction tone, même assortie d'une durée, produit un son continu.
ce son ne peut figurer dans le setup, puisqu'associé à l'attente de l'appui sur un BP, peut-on utiliser les instructions Break avant et Continue après ?
Je ne vois pas bien comment m'en sortir.
Merci d'avance
Avatar de l’utilisateur
JPDereux
Prolixe
 
Messages: 1777
Inscrit le: Lun 26 Mai 2008, 20:14
Localisation: PAYS DE RETZ
Echelle pratiquée: HO
Prénom: Jean-Pierre

Re: Ecran LCD

Publié: Ven 05 Fév 2016, 12:34 
Fait nous voir le code de ta fonction loop().
Alain17
Loquace
 
Messages: 1253
Inscrit le: Ven 21 Juil 2006, 15:36
Localisation: Entre Cognac, Ré et Oléron

Re: Ecran LCD

Publié: Ven 05 Fév 2016, 12:57 
Voila :
Image
Avatar de l’utilisateur
JPDereux
Prolixe
 
Messages: 1777
Inscrit le: Lun 26 Mai 2008, 20:14
Localisation: PAYS DE RETZ
Echelle pratiquée: HO
Prénom: Jean-Pierre

Re: Ecran LCD

Publié: Ven 05 Fév 2016, 13:33 
Bonjour Jean-Pierre,

Tu peux peut-être utiliser noTone juste après Tone et entre les deux le délai nécessaire (ceci pour parer au plus pressé).

Ou peut-être simplement un delay entre lcd.print et Tone.

Sinon, pour essayer d'expliquer l'origine du problème, la fonction Tone utilise le timer2, celui relié aux pins 3 et 11. Peut-être que la bibliothèque LiquidCrystal utilise aussi ce timer, ce qui créerait des interférences (à vérifier, mais je ne vais pas avoir le temps cet après-midi).

Ou bien le fait que ton écran est connecté à la fameuse pin 11, ce qui peut aussi interférer. Pour te donner une réponse certaine, faut que je me plonge dans les différentes docs, mais en attendant cela te donne des pistes à essayer.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1627
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Ecran LCD

Publié: Sam 06 Fév 2016, 17:04 
Bonjour à tous,

Désolé Christian, ca ne marche pas avec "noTone", pas de son du tout.
j'ai essayé diverses modifications, mais l'ai bien peur qu'on ne puisse sortir de la boucle; en dernier essai, j'ai ajouté la détection d'une deuxième entrée brièvement à l'état "HIGH" (en utilisant le bouton poussoir qui sert au collage du relais auto-alimenté faisant bascule), associée à un "while" mais là, c'est l'affichage qui devient permanent même si la l'entrée concernée est à l'état "LOW", en plus je n'ai pas le beep.
il doit bien y avoir une solution quand même...
ou une grosse erreur dans mon code :
Image
Avatar de l’utilisateur
JPDereux
Prolixe
 
Messages: 1777
Inscrit le: Lun 26 Mai 2008, 20:14
Localisation: PAYS DE RETZ
Echelle pratiquée: HO
Prénom: Jean-Pierre

Re: Ecran LCD

Publié: Sam 06 Fév 2016, 17:31 
C'est normal le while(digitalRead(val2)==HIGH); ?

Ça ne serait pas plutôt while(digitalRead(BUTTON2)==HIGH); ?
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Ecran LCD

Publié: Sam 06 Fév 2016, 17:46 
Ah, ben voila, déjà une erreur grossière que je ne voyais pas : c'est même autre chose, ca doit être while (val2==HIGH) , puisque j'ai mis val2=digitalRead(BUTTON2)
Merci pour la remarque !
Avatar de l’utilisateur
JPDereux
Prolixe
 
Messages: 1777
Inscrit le: Lun 26 Mai 2008, 20:14
Localisation: PAYS DE RETZ
Echelle pratiquée: HO
Prénom: Jean-Pierre

Re: Ecran LCD

Publié: Sam 06 Fév 2016, 19:33 
Vu la remarque de Jean-Luc que tu as corrigée, où en es-tu ? Cela marche maintenant le tone dans la fonction loop ?

Si oui : super.

Si non : est-ce que ça marche dans le setup (les neuf tones émis) ?
Dernière édition par Arduino le Dim 07 Fév 2016, 00:17, édité 1 fois au total.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1627
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Ecran LCD

Publié: Sam 06 Fév 2016, 20:31 
Mais non mais non

Si tu utilises val2 dans ton while et qu'il est HIGH, la boucle ne termine pas. Il faut bien boucler tant que le bouton est enfoncé.

Val2 = digitalRead(BUTTON2) met l'état du bouton dans la variable. Mais si dans le futur l'état du bouton change. La variable n'est pas mise magiquement à jour.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Ecran LCD

Publié: Sam 06 Fév 2016, 20:45 
JPDereux a écrit:Ah, ben voila, déjà une erreur grossière que je ne voyais pas : c'est même autre chose, ca doit être while (val2==HIGH) , puisque j'ai mis val2=digitalRead(BUTTON2)...
Non, pas du tout ! La remarque de jlb est parfaitement exacte : il faut bien que tu écrives ce qu'il a proposé c'est à dire :
Code: Tout sélectionner
while(digitalRead(BUTTON2)==HIGH);
et non pas :
Code: Tout sélectionner
while (val2==HIGH);
car il faut forcer la relecture de l'entrée "BUTTON2" (par l'utilisation de la fonction digitalRead()) pour surveiller son passage de l'état "HIGH" à l'état "LOW".

"val2" ne contient qu'une copie de l'état de l'entrée "BUTTON2" au moment de sa lecture par la fonction digitalRead(). Mais quand tu appuis sur ton bouton, le contenu de la variable val2 n'est pas automatiquement mis à jour !

Mince, grillé par jlb le temps que je rédige mon message... :mrgreen:
Alain17
Loquace
 
Messages: 1253
Inscrit le: Ven 21 Juil 2006, 15:36
Localisation: Entre Cognac, Ré et Oléron

Re: Ecran LCD

Publié: Dim 07 Fév 2016, 00:17 
Et oui, bien sûr ! Et je ne l'avais même pas vu :dodo:

Cela devrait marcher maintenant. :D
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1627
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Ecran LCD

Publié: Dim 07 Fév 2016, 11:01 
Bonjour tout le monde,
merci de vous intéresser à mon petit problème !
Bon, je vais reprendre ca et voir si ca marche, si ce n'est pas le cas, je ne vais plus vous importuner, et revoir ma copie, j'ai une autre idée pour contourner le problème de la boucle infernale: au lieu d'utiliser un inverseur (relais auto-alimenté) qui envoie en permanence un état HIGH ou LOW, récupérer l'appui sur les BP pour produire le beep mais aussi pour établir une bascule entre les deux états, sur le papier, ca devrait marcher ... :siffle:
Avatar de l’utilisateur
JPDereux
Prolixe
 
Messages: 1777
Inscrit le: Lun 26 Mai 2008, 20:14
Localisation: PAYS DE RETZ
Echelle pratiquée: HO
Prénom: Jean-Pierre

Précédent

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invité(s)