ok
Dependencies: mbed ssd1306_library
main_Carte1.cpp@4:4f681e272268, 2021-02-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |