ok

Dependencies:   mbed ssd1306_library

Committer:
emmanueldavid
Date:
Wed Feb 10 14:50:41 2021 +0000
Revision:
4:4f681e272268
Parent:
3:03be0fb433da
Child:
5:9c975d6bd219
Modification 10/02

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emmanueldavid 0:bce63d085dc2 1 /*
emmanueldavid 0:bce63d085dc2 2 * Programme Carte 1
emmanueldavid 0:bce63d085dc2 3 * E. DAVID - Fevrier 2021
emmanueldavid 0:bce63d085dc2 4 */
emmanueldavid 0:bce63d085dc2 5
emmanueldavid 0:bce63d085dc2 6 #if !DEVICE_CAN
emmanueldavid 0:bce63d085dc2 7 #error [NOT_SUPPORTED] CAN not supported for this target
emmanueldavid 0:bce63d085dc2 8 #endif
emmanueldavid 0:bce63d085dc2 9
emmanueldavid 0:bce63d085dc2 10 #include "mbed.h"
emmanueldavid 0:bce63d085dc2 11 #include "ssd1306.h"
emmanueldavid 0:bce63d085dc2 12
emmanueldavid 0:bce63d085dc2 13 typedef enum{
emmanueldavid 0:bce63d085dc2 14 DataFrame,
emmanueldavid 0:bce63d085dc2 15 RemoteFrame,
emmanueldavid 0:bce63d085dc2 16 ErrorFrame,
emmanueldavid 0:bce63d085dc2 17 OverloadFrame
emmanueldavid 0:bce63d085dc2 18 } TypeTrame;
emmanueldavid 0:bce63d085dc2 19 TypeTrame Trame;
emmanueldavid 0:bce63d085dc2 20
emmanueldavid 4:4f681e272268 21 SSD1306 OLED (I2C_SDA, I2C_SCL); // assumes default I2C address of 0x78
emmanueldavid 4:4f681e272268 22
emmanueldavid 0:bce63d085dc2 23 /*
emmanueldavid 0:bce63d085dc2 24 typedef struct{
emmanueldavid 0:bce63d085dc2 25 can_id_t id;
emmanueldavid 0:bce63d085dc2 26 Uchar ctrl;
emmanueldavid 0:bce63d085dc2 27 Uchar * pt_donne;
emmanueldavid 0:bce63d085dc2 28 } can_msg_t;
emmanueldavid 0:bce63d085dc2 29 */
emmanueldavid 0:bce63d085dc2 30
emmanueldavid 0:bce63d085dc2 31 DigitalOut ledD9(PA_4);
emmanueldavid 0:bce63d085dc2 32 DigitalOut ledD8(PA_5); // Attention, désouder SB16&SB18 si utilisation I2c
emmanueldavid 0:bce63d085dc2 33 DigitalOut ledD7(PA_6);
emmanueldavid 0:bce63d085dc2 34 DigitalOut ledD6(PA_7);
emmanueldavid 0:bce63d085dc2 35
emmanueldavid 4:4f681e272268 36 DigitalIn SW4_1(PA_1);
emmanueldavid 4:4f681e272268 37 DigitalIn SW4_0(PA_3);
emmanueldavid 0:bce63d085dc2 38
emmanueldavid 0:bce63d085dc2 39 InterruptIn SW1(PB_4, PullUp);
emmanueldavid 0:bce63d085dc2 40 InterruptIn SW2(PB_5, PullUp);
emmanueldavid 0:bce63d085dc2 41 InterruptIn SW3(PA_8, PullUp);
emmanueldavid 0:bce63d085dc2 42
emmanueldavid 4:4f681e272268 43 AnalogIn adc_RV1(PA_0);
emmanueldavid 4:4f681e272268 44
emmanueldavid 0:bce63d085dc2 45 CAN can(PA_11, PA_12);
emmanueldavid 0:bce63d085dc2 46 //Serial pc(USBTX, USBRX);
emmanueldavid 0:bce63d085dc2 47
emmanueldavid 4:4f681e272268 48 int value_SW4; // valeur 0,1,2,3
emmanueldavid 0:bce63d085dc2 49 char Data[5] = "GEII";
emmanueldavid 0:bce63d085dc2 50
emmanueldavid 0:bce63d085dc2 51 /* Envoi d'une trame de donnees */
emmanueldavid 0:bce63d085dc2 52 void AppuiSW1() {
emmanueldavid 4:4f681e272268 53 if (value_SW4 == 1)
emmanueldavid 4:4f681e272268 54 {
emmanueldavid 4:4f681e272268 55 if (can.write(CANMessage(2021, Data, 5 , CANData, CANStandard))) // Rmq : tableau = pointeur
emmanueldavid 4:4f681e272268 56 ledD6 = !ledD6;
emmanueldavid 0:bce63d085dc2 57 }
emmanueldavid 0:bce63d085dc2 58 }
emmanueldavid 0:bce63d085dc2 59
emmanueldavid 0:bce63d085dc2 60 /* Envoi d'une trame de requete */
emmanueldavid 0:bce63d085dc2 61 void AppuiSW2() {
emmanueldavid 0:bce63d085dc2 62 if (can.write(CANMessage(1620, CANStandard ))) {
emmanueldavid 0:bce63d085dc2 63 ledD7 = !ledD7;
emmanueldavid 0:bce63d085dc2 64 }
emmanueldavid 0:bce63d085dc2 65 }
emmanueldavid 0:bce63d085dc2 66
emmanueldavid 1:a119d8dc3ef7 67 int LectureSW4(){
emmanueldavid 2:8bc7e935c5a6 68 int ETAT;
emmanueldavid 4:4f681e272268 69 int value_SW4_0 = SW4_0.read();
emmanueldavid 4:4f681e272268 70 int value_SW4_1 = SW4_1.read();
emmanueldavid 4:4f681e272268 71
emmanueldavid 4:4f681e272268 72 if (value_SW4_1 == 1) {
emmanueldavid 4:4f681e272268 73 if (value_SW4_0 == 1)
emmanueldavid 1:a119d8dc3ef7 74 ETAT = 3;
emmanueldavid 1:a119d8dc3ef7 75 else
emmanueldavid 1:a119d8dc3ef7 76 ETAT = 2;
emmanueldavid 1:a119d8dc3ef7 77 }
emmanueldavid 1:a119d8dc3ef7 78 else {
emmanueldavid 4:4f681e272268 79 if (value_SW4_0 == 1)
emmanueldavid 1:a119d8dc3ef7 80 ETAT = 1;
emmanueldavid 1:a119d8dc3ef7 81 else
emmanueldavid 1:a119d8dc3ef7 82 ETAT = 0;
emmanueldavid 1:a119d8dc3ef7 83 }
emmanueldavid 2:8bc7e935c5a6 84 return ETAT;
emmanueldavid 1:a119d8dc3ef7 85 }
emmanueldavid 1:a119d8dc3ef7 86
emmanueldavid 1:a119d8dc3ef7 87
emmanueldavid 0:bce63d085dc2 88 int main() {
emmanueldavid 0:bce63d085dc2 89 //pc.baud(115200);
emmanueldavid 4:4f681e272268 90 //pc.printf("Affichage serie\n");
emmanueldavid 4:4f681e272268 91
emmanueldavid 0:bce63d085dc2 92 can.frequency(500000);
emmanueldavid 0:bce63d085dc2 93
emmanueldavid 0:bce63d085dc2 94 //CANMessage msg;
emmanueldavid 4:4f681e272268 95
emmanueldavid 4:4f681e272268 96 OLED.speed (SSD1306::Medium); // set working frequency
emmanueldavid 4:4f681e272268 97 OLED.init(); // initialize SSD1306
emmanueldavid 4:4f681e272268 98 OLED.cls(); // clear frame buffer
emmanueldavid 4:4f681e272268 99 OLED.locate (0,0); // set text cursor to line 3, column 1
emmanueldavid 4:4f681e272268 100 OLED.printf ("GEII"); // print to frame buffer
emmanueldavid 4:4f681e272268 101 OLED.redraw(); // updates actual display transferring frame buffer over I2C bus
emmanueldavid 0:bce63d085dc2 102
emmanueldavid 0:bce63d085dc2 103 SW1.fall(&AppuiSW1);
emmanueldavid 0:bce63d085dc2 104
emmanueldavid 0:bce63d085dc2 105 while(1)
emmanueldavid 4:4f681e272268 106 {
emmanueldavid 4:4f681e272268 107 value_SW4 = LectureSW4();
emmanueldavid 4:4f681e272268 108 OLED.locate (2,0);
emmanueldavid 4:4f681e272268 109 OLED.printf("ADC A0=%2.1f", (adc_RV1.read()*100));
emmanueldavid 4:4f681e272268 110 //printf("ADC VRef = %f\n", adc_vref.read());
emmanueldavid 4:4f681e272268 111 OLED.locate (3,0);
emmanueldavid 4:4f681e272268 112 OLED.printf("Valeur SW4_1=%d", SW4_0.read());
emmanueldavid 4:4f681e272268 113 OLED.locate (4,0);
emmanueldavid 4:4f681e272268 114 OLED.printf("Valeur SW4_2=%d", SW4_1.read());
emmanueldavid 4:4f681e272268 115 OLED.locate (5,0);
emmanueldavid 4:4f681e272268 116 OLED.printf("Valeur SW4=%d", value_SW4);
emmanueldavid 4:4f681e272268 117 OLED.redraw();
emmanueldavid 4:4f681e272268 118 wait(1.0);
emmanueldavid 0:bce63d085dc2 119 }
emmanueldavid 0:bce63d085dc2 120 }