Pages: [1]   Go Down
Author Topic: Faire clignoter le : sur un lcd  (Read 1695 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 26
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut à tous!

Voila, j'utilise comme beaucoup je pense, la LiquidCrystal.h

J'ai fait un affichage d'une horloge comme ça : 00:00

Maintenant, je voudrais savoir si on peut faire clignoter les : ?

Merci d'avance!
Logged

Aix en Provence
Offline Offline
Sr. Member
****
Karma: 2
Posts: 264
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je ne sais pas s'il existe une fonction directement implantée dans la puce de l'afficheur qui fait clignoter un caractère, pas à ma connaissance.
Mais il suffit de faire une boucle, avec un indicateur (par exemple du type booléen) qui s'il est "vrai" affiche ":" puis tu changes l'indicateur en "faux" et lors du passage suivant dans la boucle, lorsque l'indicateur est "faux" tu fais afficher " " et tu changes l'indicateur en "vrai" etc, etc..
Je ne sais pas si j'ai été très clair.
Sinon je peux soit te dessiner un petit algorythme, soit t'envoyer un bout code.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Il existe une fonction blink() mais elle n'est valable que pour le curseur et non pour un caractère.
Pour faire clignoter un caractère il faut faire soit même un fonction blink()

Exemple :
Code:
void blink() {
  static uint8_t state = 0; // état du char - static -> initialisation une seul fois lors du 1er appel de la fonction
  lcd.setcursor(3,0); // on sélectionne le char (exemple: ici colonne 3, ligne 0)
  lcd.write(state ? ':' : ' '); // on affiche le char
  state = !state; // on inverse l'état du char
}
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut rajouter un temporisateur dans ton blink.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut rajouter un temporisateur dans ton blink.
of course smiley-mr-green mais bon rajouter un delay(xxx) devrait être à la porté de n'importe qui smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Justement pas un delay(), mais je pensais à un truc avec millis() dont le paramètre serait passé en faisant blinkPoint(1000)....  smiley-lol
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

un truc comme ça smiley-mr-green
Code:
void blinkPoint(unsigned long interval) {
   static unsigned char state = 0;
   static unsigned long prevMillis = 0;
   unsigned long curMillis = millis();
   if(curMillis - prevMillis > interval) {
      prevMillis = curMillis;   
      lcd.setcursor(3,0);
      lcd.write(state ? ':' : ' ');
      state = !state;
   }
}
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu sais que j'tadore  smiley-mr-green
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 26
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut!

Merci à vous!

Je vais essayer ça de suite!

Question bête, mais il clignote à quelle vitesse?

Car pour moi, l'idéal serait 1 clignotement à la seconde!

Bon je vais déja essayer ça!
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 26
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah !

J'avais pas vu un truc!

C'est que je peux pas choisir la position du :

Car il est déjà intégrer dans un VOID :

Code:
void printHMS () {
    if (hour() < 10){lcd.print("0");}
    lcd.print(hour());
    lcd.print(":");
    if (minute() < 10){lcd.print("0");}
    lcd.print(minute());
      }

qui en fonction des demande, se position à différent endroit du LCD!
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est que je peux pas choisir la position du :
Car il est déjà intégrer dans un VOID :

qui en fonction des demande, se position à différent endroit du LCD!

No problem smiley-wink

// Retourne un char (: ou espace) suivant un delay de 1s
Code:
char blinkPoint1s() {
   static unsigned char state = 0;
   static unsigned long prevMillis = 0;
   unsigned long curMillis = millis();
   if(curMillis - prevMillis > 1000) {
      prevMillis = curMillis;   
      state = !state;
   }
   return state ? ':' : ' ';
}

Appel :
Code:
void printHMS () {
   if (hour() < 10)
      lcd.print("0");
   lcd.print(hour());
   lcd.print(blinkPoint1s());
   if (minute() < 10)
      lcd.print("0");
   lcd.print(minute());
}
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Aix en Provence
Offline Offline
Sr. Member
****
Karma: 2
Posts: 264
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Génial !
Merci beaucoup skywodd, c'est bien plus propre que ce que j'avais fait avec delay et un flag.
Je viens d'apprendre à utiliser la fonction millis qui est très interessante !
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Génial !
Merci beaucoup skywodd, c'est bien plus propre que ce que j'avais fait avec delay et un flag.
Je viens d'apprendre à utiliser la fonction millis qui est très interessante !
Ya pas de quoi smiley-wink

Dans le même genre il y a micros(), une petite fonction bien pratique dans certain cas.
http://www.arduino.cc/en/Reference/Micros
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: