![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ok
Dependencies: mbed ssd1306_library
main_Carte1.cpp
- Committer:
- emmanueldavid
- Date:
- 2021-02-10
- Revision:
- 4:4f681e272268
- Parent:
- 3:03be0fb433da
- Child:
- 5:9c975d6bd219
File content as of revision 4:4f681e272268:
/* * Programme Carte 1 * E. DAVID - Fevrier 2021 */ #if !DEVICE_CAN #error [NOT_SUPPORTED] CAN not supported for this target #endif #include "mbed.h" #include "ssd1306.h" typedef enum{ DataFrame, RemoteFrame, ErrorFrame, OverloadFrame } TypeTrame; TypeTrame Trame; SSD1306 OLED (I2C_SDA, I2C_SCL); // assumes default I2C address of 0x78 /* typedef struct{ can_id_t id; Uchar ctrl; Uchar * pt_donne; } can_msg_t; */ DigitalOut ledD9(PA_4); DigitalOut ledD8(PA_5); // Attention, désouder SB16&SB18 si utilisation I2c DigitalOut ledD7(PA_6); DigitalOut ledD6(PA_7); DigitalIn SW4_1(PA_1); DigitalIn SW4_0(PA_3); InterruptIn SW1(PB_4, PullUp); InterruptIn SW2(PB_5, PullUp); InterruptIn SW3(PA_8, PullUp); AnalogIn adc_RV1(PA_0); CAN can(PA_11, PA_12); //Serial pc(USBTX, USBRX); int value_SW4; // valeur 0,1,2,3 char Data[5] = "GEII"; /* Envoi d'une trame de donnees */ void AppuiSW1() { if (value_SW4 == 1) { if (can.write(CANMessage(2021, Data, 5 , CANData, CANStandard))) // Rmq : tableau = pointeur ledD6 = !ledD6; } } /* Envoi d'une trame de requete */ void AppuiSW2() { if (can.write(CANMessage(1620, CANStandard ))) { ledD7 = !ledD7; } } int LectureSW4(){ int ETAT; int value_SW4_0 = SW4_0.read(); int value_SW4_1 = SW4_1.read(); if (value_SW4_1 == 1) { if (value_SW4_0 == 1) ETAT = 3; else ETAT = 2; } else { if (value_SW4_0 == 1) ETAT = 1; else ETAT = 0; } return ETAT; } int main() { //pc.baud(115200); //pc.printf("Affichage serie\n"); can.frequency(500000); //CANMessage msg; OLED.speed (SSD1306::Medium); // set working frequency OLED.init(); // initialize SSD1306 OLED.cls(); // clear frame buffer OLED.locate (0,0); // set text cursor to line 3, column 1 OLED.printf ("GEII"); // print to frame buffer OLED.redraw(); // updates actual display transferring frame buffer over I2C bus SW1.fall(&AppuiSW1); while(1) { value_SW4 = LectureSW4(); OLED.locate (2,0); OLED.printf("ADC A0=%2.1f", (adc_RV1.read()*100)); //printf("ADC VRef = %f\n", adc_vref.read()); OLED.locate (3,0); OLED.printf("Valeur SW4_1=%d", SW4_0.read()); OLED.locate (4,0); OLED.printf("Valeur SW4_2=%d", SW4_1.read()); OLED.locate (5,0); OLED.printf("Valeur SW4=%d", value_SW4); OLED.redraw(); wait(1.0); } }