Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.01 KB | None | 0 0
  1. // Deux fichiers nécessaire pour que la compilation marche bien
  2. // Suivant les composants, on aura éventuellement besoin d'autres fichiers.
  3. #include <Wire.h>
  4. #include "rgb_lcd.h"
  5.  
  6. //On déclare un écran rgb_lcd qu'on appelle lcd
  7. rgb_lcd lcd;
  8.  
  9. // On pourrait directement utiliser le A0 dans le code
  10. // Mais sur des montages arduino, on se retrouve à devoir souvent changer de pin des composants :
  11. // Pour tester, ou car on refait son montage d emanière un peu différente de semaine en semaine ...
  12. // C'est pour ça que je conseille de définir ici les pin utilisés (je le met en majuscule que ce soit clair)
  13. // Et si jamais vous changez de pin, il suffit de modifier juste ici
  14. // En plus, c'est plus lisible dans le programme de voir PIN_CAPTEUR_DISTANCE que A0 :)
  15. int PIN_CAPTEUR_DISTANCE = A0;
  16.  
  17. // C'est notre caractère personnalisé
  18. // Un caractère sur l'écran LCD est en fait un rectangle de 5 pixels (largeur) * 8 pixels(hauteur)
  19. // Ici, on définit (avec une syntaxe un peu particulière à cause du C) notre rectangle
  20. // Le 0b est l àpour indiquer une ligne de pixels, ne pas y toucher.
  21. // Ensuite, il y a une ligne de 5 pixels, représentés par des 0 ou des 1.
  22. // Si un pixel vaut 0, il sera éteint (couleur de fond de l'écrna), alors que s'il vaut 1, il sera allumé (noir)
  23. byte heart[8] = {
  24.     0b00000,
  25.     0b01010,
  26.     0b11111,
  27.     0b11111,
  28.     0b11111,
  29.     0b01110,
  30.     0b00100,
  31.     0b00000
  32. };
  33. //Note : on peut définir plusieurs caractères personnalisés ainsi
  34. byte smiley[8] = {
  35.     0b00000,
  36.     0b00000,
  37.     0b01010,
  38.     0b00000,
  39.     0b00000,
  40.     0b10001,
  41.     0b01110,
  42.     0b00000
  43. };
  44.  
  45.  
  46. // C'est le code qui va etre appelé une fois, au démarrage de notre arduino
  47. // C'est ici qu'on va initialiser nos différents composants
  48. // Et aussi indiquer à l'arduino quels ports sont en entrée (INPUT, poiur lire des données) et en sortie (OUTPUT, pour écrire des données)
  49. // Note : pour tous composants utilisant I2C (donc l'écran LCD), il n'y a pas besoin de préciser quel port on utilise
  50. // Tous les ports I2C du grove étant les meme pour l'arduino derrière
  51. void setup(){
  52.     pinMode(PIN_CAPTEUR_DISTANCE,INPUT);
  53.     // Nombre de colonnes (caractère par ligne) et de ligne
  54.     // Ne pas toucher sauf si vous savez ce que vous faites
  55.     lcd.begin(16,2);
  56.     // Le premier paramètre est la couleur rouge, le deuxième verte, le troisième bleue (code RGB)
  57.     // Si vous voulez une liste des code couleur courants :
  58.     // https://fr.wikipedia.org/wiki/Liste_de_noms_de_couleur#Liste
  59.     // Note : on peut tout à fait modifier dans loop(), mais ici je veux changer ma couleur juste une fois
  60.     // Mais on peut faire un écran LCD qui change de couleur en fonction d'un capteur, par exemple !
  61.      lcd.setRGB(0, 255, 0);
  62.      // Maintenant on va dire à notre arduino que notre caractère existe
  63.         // Ici, on lui enregistre le caractère "heart" avec le nombre 1
  64.     // On ne peut pas mettre n'importe quel nombre, seulement 1 -> 30 inclus (c'est largement suffisant)
  65.     lcd.createChar(1, heart);
  66.     // On peut en créer plusieurs
  67.     lcd.createChar(2, smiley);
  68. }
  69. // C'est le code qui va tourner en boucle : c'est comme si vous aviez mis un répéter indéfiniment sur mBlock
  70. // C'est là que va se concentrer la majorité de notre code
  71. void loop(){
  72.     // On veut écrire sur l'écran. Pour cela, deux méthodes :
  73.     // Méthode 1 : on met le curseur d'écriture au tout début de l'écran (0, 0), puis on écrit
  74.     // S'il n'y a rie nd'écrit, on aura bien notre message
  75.     // S'il y a quelque chose d'écrit, alors cela le remplacera caractère par caractère
  76.     // Cela marche bien, c'est rapide, mais ça peut etre un peu compliqué par moment
  77.     // Si on doit beaucoup déplacer le curseur
  78.     lcd.setCursor(0,0);
  79.     // Pour afficher notre caractère personnalisé, il faut utiliser la fonction "write" avec le numéro qu'on lui a donné
  80.     lcd.write(2);
  81.     // Note : ici, analogRead() renvoie un nombre entier. Il faut donc le transformer en chaine de caractère avant !
  82.     lcd.print("distance : "+ String(analogRead(PIN_CAPTEUR_DISTANCE)));
  83.     // Petit exemple pour afficher sur la deuxième ligne : on met le curseur en (0, 1) :
  84.     // colonne n°0, ligne n°1. n'oubliez pas que les indices commencnet à 0 et pas à 1 !
  85.     // Et ensuite on écrit comme avant
  86.     lcd.setCursor(0, 1);
  87.     lcd.write(1);
  88.     // Note : si vous affichez un simple texte, pas besoin de String()
  89.     lcd.print("MagicMakers");
  90.     lcd.write(1);
  91.     // Méthode nméro 2 : on efface l'écran, puis on écrit le message
  92.     // Avantage : c'est plus simple à comprendre / écrire, on s'embete moins
  93.     // Inconvénient : Il faut rajouter un petit delay() - c'est à dire attendre un peu,
  94.     //sinon l'écran s'efface en permanence et on a un résultat bizarre
  95.     //Décommenter les 3 lignes suivantes pour l'utiliser (et commentez les précédentes)
  96.     //lcd.clear();
  97.     //lcd.print(String("distance:") + analogRead(A0));
  98.     //delay(10); // Note : le délai est en millisecondes !
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement