Programme de test pour l'ecran OLED SSD1306 qui sera utilisé dans le projet
Fork of Test_Ecran_OLED by
main.cpp@2:a147a943a716, 2017-09-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |