Advertisement
Ollivier

Horloge DeLorean

Mar 30th, 2020
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.87 KB | None | 0 0
  1.  
  2. // --------------------------------------------------------------------------------
  3. // Ecran BACK TO THE FUTURE
  4. // --------------------------------------------------------------------------------
  5. // Objectif : créer un affichage type "Retour vers le Futur"
  6. // https://media.giphy.com/media/dgEIhYAo3lZiE/giphy.gif
  7. // A ma disposition
  8. // Un afficheur alpha numerique OCTOPUS EF04058 en I2C
  9. // https://www.gotronic.fr/art-afficheur-4-digits-octopus-ef04058-23604.htm
  10. // Un afficheur 4 digits rouges OCTOPUS EF04056
  11. // https://www.elecfreaks.com/learn-en/microbitOctopus/sensor/octopus_ef04056.html
  12. // deux afficheur 7 segments ou un afficheur 4 digits 7 segments (à déterminer)
  13. // Un afficheur 4 segments 7 Digits (2 x 6 pins)
  14. // https://www.handsontec.com/pdf_files/NFD-3641.pdf
  15. // sur Arduino Mega
  16. // ---------------------------------------------------------------------------------
  17.  
  18. // --------------------------------------------
  19. // Instructions de montage --------------------
  20. // --------------------------------------------
  21. // Afficheur 7 digits 4 segments OCTOPUS EF04056
  22. // --------------------------------------------
  23. // D14 (CLK)
  24. // D15 (DIO)
  25. // 5V
  26. // GND
  27. //
  28. // --------------------------------------------
  29. // OCTOPUS EF04058 port I2C
  30. // --------------------------------------------
  31. // SCL
  32. // SDA
  33. // 5V
  34. // GND
  35. //
  36. // --------------------------------------------
  37. // Afficheur 4 digits 7 segments 3641BS
  38. // --------------------------------------------
  39. // Aff. => Rés 220Ω => Ard.
  40. //  1          X        D2
  41. //  a                   D6
  42. //  f                   D11
  43. //  2          X        D3
  44. //  3          X        D4
  45. //  b                   D7
  46. //  e                   D10
  47. //  d                   D9
  48. //  p(DP)               D13
  49. //  c                   D8
  50. //  g                   D12
  51. // --------------------------------------------
  52.  
  53. // Chargement des librairies nécessaires -------------------------------------------
  54.  
  55. #include <Wire.h>                           // Librairie de câblage simplifié (??)
  56. #include <Adafruit_LEDBackpack.h>           // Librairie d'affichage pour afficheur LCD Octopus EF04058
  57. #include <Adafruit_GFX.h>                   // Librairie d'affichage graphique
  58. #include <TM1637Display.h>                  // Librairie d'affichage pour afficheur LCD OCTOPUS EF04056
  59. #include <SevSeg.h>                         // Librairie d'affichage sur afficheur 4 digits 7 segments 3641BS
  60.  
  61. // --------------------------------------------------------------------------------------------------------
  62. // Afficheur LCD Octopus EF04058
  63. // --------------------------------------------------------------------------------------------------------
  64.  
  65.  
  66. // Déclaration de l'objet alpha4 - Afficheur LCD Octopus EF04058 -----------------------
  67.  
  68. Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4();
  69.  
  70. // Détermination de l'ordre des blocs d'affichage. (Parce que mon afficheur est mal monté, je pense, ------
  71. // M et K sont inversés) et les deux modules de d'affichages eux-même le sont -----------------------------
  72.  
  73. int CL[4] = {2, 3, 0, 1};
  74.  
  75. // Remarque : J'aurais pu corriger le fichier Adafruit_LEDBackoack.cpp et utiliser la fonction ------------
  76. // alpha4.writeDigitAscii (). -----------------------------------------------------------------------------
  77.  
  78. // Tableau pour recevoir ce qui est à afficher : NOV ------------------------------------------------------
  79.  
  80. unsigned long CLaff[4] = {0b0000000000000000, 0b0000100100110110, 0b0000000000111111, 0b0010010000110000};
  81.  
  82. // Valeurs initiales : Init. ------------------------------------------------------------------------------
  83. // (
  84. // 0b0000000000000000 :
  85. // 0b0000100100110110 : N
  86. // 0b0000000000111111 : O
  87. // 0b0010010000110000 : V
  88. // )
  89.  
  90. // --------------------------------------------------------------------------------------------------------
  91. // Afficheur LCD Octopus EF04056
  92. // --------------------------------------------------------------------------------------------------------
  93.  
  94. // on définit le pin de connexion sur lequel est CLK
  95. #define CLK 14
  96. // on définit le pin de connexion sur lequel est DIO
  97. #define DIO 15
  98.  
  99. // on initialise l'afficheur
  100. TM1637Display display(CLK, DIO);
  101.  
  102. // --------------------------------------------------------------------------------------------------------
  103. // Afficheur 4 digits 7 segments 3641BS
  104. // --------------------------------------------------------------------------------------------------------
  105.  
  106. // Déclaration de l'objet sevseg - Afficheur 3641BS
  107. SevSeg sevseg;
  108.  
  109. void setup() {
  110.  
  111.   Serial.begin(9600);               // on initialise et synchronise la communication entre le PC et Arduino
  112.   alpha4.begin(0x70);               // on entre l'adresse de l'afficheur en I2C
  113.   byte numDigits = 4;               // on définit le nombre de digit de l'afficheur
  114.   byte digitPins[] = {2, 3, 4, 5};  //  on défini les pins des digits
  115.   byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};  // on défini les pins des segments
  116.   sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins); // on définit le type d'affichage
  117. // Remarque : COMMON_ANODE peut être changé par COMMON_CATHODE suivant les afficheurs.
  118. // Si ce n'est pas le bon qui est selectionné, tous les segments et les digits s'allumeront.
  119.  
  120. }
  121.  
  122. void loop() {
  123.  
  124.   sevseg.setBrightness(90);
  125.   sevseg.setNumber(1234,3);
  126.   sevseg.refreshDisplay();
  127.   afficheTout ();
  128.  
  129. }
  130.  
  131. // --------------------------------------------------------------------------------------------------------
  132. // - Fonctions -------------------------------------------------------------------------------- Fonctions -
  133. // --------------------------------------------------------------------------------------------------------
  134.  
  135. void afficheTout (){
  136.  
  137.    // on efface les donnée à afficher
  138.   display.clear();
  139.  
  140.   // on règle la luminosité à la moitié
  141.   display.setBrightness(1);
  142.  
  143.   // on affiche  
  144.   display.showNumberDecEx(1955, false, false, 4, 0);
  145.  
  146.   delay(75);
  147.  
  148.     // on règle la luminosité au max
  149.   display.setBrightness(3);
  150.  
  151.   // on affiche  
  152.   display.showNumberDecEx(1955, false, false, 4, 0);
  153.  
  154.   //delay(125);
  155.  
  156.   for (int i = 0; i < 4; i++) {
  157.     alpha4.writeDigitRaw (CL[i], uint16_t (CLaff[i]));
  158.   }
  159.  
  160.   alpha4.setBrightness (0);
  161.   alpha4.writeDisplay();
  162.  
  163.   delay(150);
  164.  
  165.   alpha4.setBrightness (1);
  166.   alpha4.writeDisplay();
  167.  
  168.   delay(150);
  169.  
  170.   alpha4.setBrightness (2);
  171.   alpha4.writeDisplay();
  172.  
  173.   delay(150);
  174.  
  175.   alpha4.setBrightness (3);
  176.   alpha4.writeDisplay();
  177.  
  178.   delay(500);
  179.  
  180.   display.clear();
  181.   alpha4.clear();
  182.   alpha4.writeDisplay();
  183.  
  184.   delay(250);
  185.  
  186. }
  187.  
  188. // ===========================================================
  189. // DIGIT 7 Segments                            
  190. // ===========================================================
  191. // composition d'un afficheur digital
  192. //
  193. //    ┌─A─┐         10 9 8 7 6
  194. //    F      B       ┌ | | | | | ┐
  195. //    ├─G─┤
  196. //    E      C       └ | | | | | ┘
  197. //    └─D─┘ (DP)     1 2 3 4 5
  198.  
  199. // ===========================================================
  200.  
  201. // ===========================================================
  202. // 4 Digits 7 Segments                            
  203. // ===========================================================
  204. // composition d'un afficheur digital
  205. //                  
  206. //    ┌─A─┐  
  207. //    F      B
  208. //    ├─G─┤
  209. //    E      C
  210. //    └─D─┘ (DP)
  211. //
  212. //                  1 a f 2 3 b
  213. //    ┌            | | | | | |             ┐
  214. //        ____     ____     ____     ____
  215. //       |____|   |____|   |____|   |____|
  216. //       |____|o  |____|o  |____|o  |____|o
  217. //          1        2        3        4
  218. //    └            | | | | | |             ┘
  219. //                  e d p c g 4
  220. //
  221. // ===========================================================
  222.  
  223. // ===========================================================
  224. // Disposition des 16 segments
  225. // ===========================================================
  226. //         ---- A ----
  227. //        | \   |   / |
  228. //        F  H  J  K  B
  229. //        |   \ | /   |
  230. //        |-G1- | -G2-|
  231. //        |   / | \   |
  232. //        E  L  M  N  C
  233. //        | /   |   \ |
  234. //         ---- D ----   (DP)
  235. //
  236. //      ... ou dans mon cas :
  237. //
  238. //         ---- A ----
  239. //        | \   |   / |
  240. //        F  H  J  K  B
  241. //        |   \ | /   |
  242. //        |-G1- | -G2-|
  243. //        |   / | \   |
  244. //        E (N) M (L) C
  245. //        | /   |   \ |
  246. //         ---- D ----   (DP)
  247. //
  248. // ===========================================================
  249.  
  250. // Alphabet en 0b00
  251. // Ne sert pas mais comme ça j'ai les caractères sous la main
  252. /* Alphabet
  253.   0b0001000001011000, // a
  254.   0b0000100001111000, // b
  255.   0b0000000011011000, // c
  256.   0b0000000011011110, // d
  257.   0b0010000001011000, // e
  258.   0b0000000001110001, // f
  259.   0b0000000110001111, // g
  260.   0b0000100001110000, // h
  261.   0b0001000000000000, // i
  262.   0b0000000000001110, // j
  263.   0b0001111000000000, // k
  264.   0b0001001000000000, // l
  265.   0b0001000011010100, // m
  266.   0b0001000001010000, // n
  267.   0b0000000011011100, // o
  268.   0b0000000011110011, // p
  269.   0b0000000110000111, // q
  270.   0b0000000001010000, // r
  271.   0b0000100010001000, // s
  272.   0b0000000001111000, // t
  273.   0b0000000000011100, // u
  274.   0b0010000000010000, // v
  275.   0b0010100000010100, // w
  276.   0b0010100011000000, // x
  277.   0b0010001001100000, // y
  278.   0b0010000001001000, // z
  279.   0b0000000011110111, // A
  280.   0b0001001010001111, // B
  281.   0b0000000000111001, // C
  282.   0b0001001000001111, // D
  283.   0b0000000011111001, // E
  284.   0b0000000011110001, // F
  285.   0b0000000010111101, // G
  286.   0b0000000011110110, // H
  287.   0b0001001000000000, // I
  288.   0b0000000000011110, // J
  289.   0b0000110001110000, // K
  290.   0b0000000000111000, // L
  291.   0b0000010100110110, // M
  292.   0b0000100100110110, // N
  293.   0b0000000000111111, // O
  294.   0b0000000011110011, // P
  295.   0b0000100000111111, // Q
  296.   0b0000100011110011, // R
  297.   0b0000000011101101, // S
  298.   0b0001001000000001, // T
  299.   0b0000000000111110, // U
  300.   0b0010010000110000, // V
  301.   0b0010100000110110, // W
  302.   0b0010110100000000, // X
  303.   0b0001010100000000, // Y
  304.   0b0010010000001001, // Z
  305.   0b0000000000000000, //
  306.   0b0000000000000110, // 1
  307.   0b0000000011011011, // 2
  308.   0b0000000011001111, // 3
  309.   0b0000000011100110, // 4
  310.   0b0000000011101101, // 5
  311.   0b0000000011111101, // 6
  312.   0b0000000000000111, // 7
  313.   0b0000000011111111, // 8
  314.   0b0000000011101111, // 9
  315.   0b0010010000111111, // 0
  316.   0b0000000000111001, // (
  317.   0b0000000000001111, // )
  318.   0b0000110000000000, // <
  319.   0b0010000100000000, // >
  320.   0b0000010000000000, // '
  321.   0b0101010000100001, // ?
  322.   0b0100000000000000, // .
  323.   0b0000001010111011, // @
  324.   0b0010010000100100, // %
  325.   0b0001001011101101, // $
  326.   0b0000101101011101, // &
  327.   0b0010010000000000, // /
  328.   0b0001001011000000, // +
  329.   0b0000000011000000, // -
  330.   0b0000000011001000, // =
  331.   0b0000000000001000, // _
  332.   0b0001001000000000, // :
  333.   0b0010001000000000, // ;
  334.   0b0000100000000000, // ,
  335.   0b0011111111000000, // *
  336.   0b0000010010000010, // °
  337.   */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement