Programme de test pour l'ecran OLED SSD1306 qui sera utilisé dans le projet

Dependencies:   Test_OLED mbed

Dependents:   Test_OLED

Fork of Test_Ecran_OLED by Plantsigfox

Committer:
Tbroussard
Date:
Mon Sep 18 11:59:20 2017 +0000
Revision:
2:a147a943a716
Parent:
1:f4f60a95dd2a
Programme de test avec fonction "icone batterie"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tbroussard 0:6962712951df 1 /*
Tbroussard 0:6962712951df 2 * Copyright (c) 2012 Neal Horman - http://www.wanlink.com
Tbroussard 0:6962712951df 3 *
Tbroussard 0:6962712951df 4 * License: MIT open source (http://opensource.org/licenses/MIT)
Tbroussard 0:6962712951df 5 * Summary;
Tbroussard 0:6962712951df 6 * Use / modify / distribute / publish it how you want and
Tbroussard 0:6962712951df 7 * if you use it, or don't, you can't hold me liable for how
Tbroussard 0:6962712951df 8 * it does or doesn't work.
Tbroussard 0:6962712951df 9 * If it doesn't work how you want, don't use it, or change
Tbroussard 0:6962712951df 10 * it so that it does work.
Tbroussard 0:6962712951df 11 */
Tbroussard 0:6962712951df 12
Tbroussard 0:6962712951df 13 #include "mbed.h"
Tbroussard 0:6962712951df 14 #include "Adafruit_SSD1306.h"
Tbroussard 0:6962712951df 15
Tbroussard 0:6962712951df 16 // Définition des pattes SPI
Tbroussard 1:f4f60a95dd2a 17 #define MOSI D2
Tbroussard 0:6962712951df 18 #define MISO NC
Tbroussard 1:f4f60a95dd2a 19 #define CLK A1
Tbroussard 1:f4f60a95dd2a 20 #define DC D6
Tbroussard 1:f4f60a95dd2a 21 #define CS D3
Tbroussard 1:f4f60a95dd2a 22 #define RST_SPI D5
Tbroussard 0:6962712951df 23
Tbroussard 0:6962712951df 24 // Définition des pattes i2c
Tbroussard 0:6962712951df 25 #define SDA D5
Tbroussard 0:6962712951df 26 #define SCL D6
Tbroussard 1:f4f60a95dd2a 27 #define RST_I2C A0
Tbroussard 0:6962712951df 28
Tbroussard 0:6962712951df 29 // Déclaration des E/S
Tbroussard 0:6962712951df 30 DigitalOut myled(LED1);
Tbroussard 2:a147a943a716 31
Tbroussard 2:a147a943a716 32
Tbroussard 2:a147a943a716 33 // Fonctions locales
Tbroussard 2:a147a943a716 34 void Battery_Charge_SPI(int x, int y, int Niveau);
Tbroussard 2:a147a943a716 35
Tbroussard 0:6962712951df 36 // sub-class SPI :
Tbroussard 0:6962712951df 37 // Caractéristiques par défaut de la communication SPI avec le SSD1306
Tbroussard 0:6962712951df 38 class SPIPreInit : public SPI
Tbroussard 0:6962712951df 39 {
Tbroussard 0:6962712951df 40 public:
Tbroussard 0:6962712951df 41 SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk)
Tbroussard 0:6962712951df 42 {
Tbroussard 2:a147a943a716 43 format(8,3);
Tbroussard 2:a147a943a716 44 frequency(2000000);
Tbroussard 0:6962712951df 45 };
Tbroussard 0:6962712951df 46 };
Tbroussard 0:6962712951df 47
Tbroussard 2:a147a943a716 48
Tbroussard 0:6962712951df 49 // sub-class I2C :
Tbroussard 0:6962712951df 50 // Caractéristiques par défaut de la communication I2C avec le SSD1306
Tbroussard 0:6962712951df 51 class I2CPreInit : public I2C
Tbroussard 0:6962712951df 52 {
Tbroussard 0:6962712951df 53 public:
Tbroussard 0:6962712951df 54 I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl)
Tbroussard 0:6962712951df 55 {
Tbroussard 0:6962712951df 56 frequency(400000);// Fréquence d'utilisation(en Hz)
Tbroussard 0:6962712951df 57 start(); //Condition de start
Tbroussard 0:6962712951df 58 };
Tbroussard 0:6962712951df 59 };
Tbroussard 0:6962712951df 60
Tbroussard 0:6962712951df 61 // Initialisation de l'écran en mode SPI
Tbroussard 0:6962712951df 62 SPIPreInit gSpi(MOSI,MISO,CLK);
Tbroussard 1:f4f60a95dd2a 63 Adafruit_SSD1306_Spi gOled1(gSpi,DC,RST_SPI,CS,64,128);
Tbroussard 0:6962712951df 64
Tbroussard 0:6962712951df 65 // Initialisation de l'écran en mode I2C
Tbroussard 1:f4f60a95dd2a 66 //I2CPreInit gI2C(SDA,SCL);
Tbroussard 1:f4f60a95dd2a 67 //Adafruit_SSD1306_I2c gOled2(gI2C,RST_I2C);
Tbroussard 0:6962712951df 68
Tbroussard 0:6962712951df 69 int main()
Tbroussard 2:a147a943a716 70 { uint16_t x=100,y=0;
Tbroussard 1:f4f60a95dd2a 71
Tbroussard 1:f4f60a95dd2a 72 //gOled1.printf("%ux%u Thomas \r\n", gOled1.width(), gOled1.height());
Tbroussard 1:f4f60a95dd2a 73 //gOled2.printf("%ux%u OLED Display\r\n", gOled2.width(), gOled2.height());
Tbroussard 1:f4f60a95dd2a 74
Tbroussard 1:f4f60a95dd2a 75
Tbroussard 0:6962712951df 76
Tbroussard 0:6962712951df 77 while(1)
Tbroussard 0:6962712951df 78 {
Tbroussard 1:f4f60a95dd2a 79 myled = !myled;
Tbroussard 1:f4f60a95dd2a 80 // On efface l'écran avant de commencer le programme
Tbroussard 1:f4f60a95dd2a 81 gOled1.fillRect(0,0,128,64,0);
Tbroussard 1:f4f60a95dd2a 82
Tbroussard 1:f4f60a95dd2a 83 gOled1.setTextCursor(0,0);
Tbroussard 1:f4f60a95dd2a 84 gOled1.printf("Projet ei2i-4");
Tbroussard 1:f4f60a95dd2a 85 gOled1.setTextCursor(0,10);
Tbroussard 1:f4f60a95dd2a 86 gOled1.printf("Jeanne Anais Thomas");
Tbroussard 1:f4f60a95dd2a 87
Tbroussard 1:f4f60a95dd2a 88 // Ligne horizontale blanche
Tbroussard 1:f4f60a95dd2a 89 gOled1.drawFastHLine(0, 20, 128, WHITE);
Tbroussard 1:f4f60a95dd2a 90 gOled1.drawFastHLine(0, 22, 128, WHITE);
Tbroussard 1:f4f60a95dd2a 91
Tbroussard 2:a147a943a716 92 //Affichage X
Tbroussard 1:f4f60a95dd2a 93 gOled1.setTextCursor(0,30);
Tbroussard 2:a147a943a716 94 gOled1.printf("X = %d",x);
Tbroussard 1:f4f60a95dd2a 95 gOled1.setTextCursor(80,30);
Tbroussard 2:a147a943a716 96 //gOled1.printf("\tC");
Tbroussard 1:f4f60a95dd2a 97
Tbroussard 2:a147a943a716 98 // Affichage Y
Tbroussard 1:f4f60a95dd2a 99 gOled1.setTextCursor(0,40);
Tbroussard 2:a147a943a716 100 gOled1.printf("Y = %d",y);
Tbroussard 1:f4f60a95dd2a 101 gOled1.setTextCursor(80,40);
Tbroussard 2:a147a943a716 102 //gOled1.printf("\t/\t");
Tbroussard 2:a147a943a716 103
Tbroussard 2:a147a943a716 104 // Affichage batterie :
Tbroussard 2:a147a943a716 105 Battery_Charge_SPI(110, 45, x);
Tbroussard 2:a147a943a716 106
Tbroussard 0:6962712951df 107 gOled1.display();
Tbroussard 1:f4f60a95dd2a 108
Tbroussard 2:a147a943a716 109 x-=1;
Tbroussard 1:f4f60a95dd2a 110 y+=2;
Tbroussard 1:f4f60a95dd2a 111
Tbroussard 1:f4f60a95dd2a 112 if (y > 100)
Tbroussard 1:f4f60a95dd2a 113 {
Tbroussard 1:f4f60a95dd2a 114 y = 0;
Tbroussard 1:f4f60a95dd2a 115 }
Tbroussard 2:a147a943a716 116 if (x <= 0)
Tbroussard 1:f4f60a95dd2a 117 {
Tbroussard 2:a147a943a716 118 x = 100;
Tbroussard 1:f4f60a95dd2a 119 }
Tbroussard 1:f4f60a95dd2a 120 wait(0.2);
Tbroussard 0:6962712951df 121 }
Tbroussard 2:a147a943a716 122 }
Tbroussard 2:a147a943a716 123
Tbroussard 2:a147a943a716 124 void Battery_Charge_SPI(int x, int y, int Niveau)
Tbroussard 2:a147a943a716 125 {
Tbroussard 2:a147a943a716 126 int color_1 = BLACK , color_2 = BLACK , color_3 = BLACK , color_4 = BLACK;
Tbroussard 2:a147a943a716 127
Tbroussard 2:a147a943a716 128 // 1 - tracé de la batterie
Tbroussard 2:a147a943a716 129 gOled1.drawRect(x,2 + y ,9,15,WHITE);
Tbroussard 2:a147a943a716 130 gOled1.drawRect(1 + x ,y ,7,3,WHITE);
Tbroussard 2:a147a943a716 131
Tbroussard 2:a147a943a716 132 // 2 - Nombre de barres
Tbroussard 2:a147a943a716 133 if (Niveau > 75)
Tbroussard 2:a147a943a716 134 color_1 = WHITE;
Tbroussard 2:a147a943a716 135 if (Niveau > 50)
Tbroussard 2:a147a943a716 136 color_2 = WHITE;
Tbroussard 2:a147a943a716 137 if (Niveau > 25)
Tbroussard 2:a147a943a716 138 color_3 = WHITE;
Tbroussard 2:a147a943a716 139 if (Niveau > 0)
Tbroussard 2:a147a943a716 140 color_4 = WHITE;
Tbroussard 2:a147a943a716 141
Tbroussard 2:a147a943a716 142 // 3 Affichage barres
Tbroussard 2:a147a943a716 143 gOled1.fillRect(2 + x ,4 + y ,5,2,color_1);
Tbroussard 2:a147a943a716 144 gOled1.fillRect(2 + x ,7 + y ,5,2,color_2);
Tbroussard 2:a147a943a716 145 gOled1.fillRect(2 + x ,10 + y ,5,2,color_3);
Tbroussard 2:a147a943a716 146 gOled1.fillRect(2 + x ,13 + y ,5,2,color_4);
Tbroussard 2:a147a943a716 147 }