#include "main.h" #include "delay.h" #include "deviceSetup.h" #include "usart.h" #include "ascii.h" #include "timer.h" #include "i2c.h" #include "ssd1306_i2c.h" #include "lcd_oled.h" int main(int argc, char *argv[]) { uint8_t i = 0; uint16_t slaveAddress = 0xC0; uint8_t registerToRead = 0x00; uint8_t i2cRecieved = 0; uint8_t i2cData = 0xFF; i2c_t i2c_1; delayInitMs(8000000, 1000); // Clock Freq and Divider for ARM library pinConfig(pinB3, output, pushPull, def_res, def_speed); pinConfig(pinA0, input, def_stage, pullDown, def_speed); setupInit(); // This is the sescond call of System init the assebly start code is calling it before the main. usartInit( usart2, pinA2, pinA15, 115200, eight, NO_PARITY_CTRL, noFlowControl); //clears screen and send the wellcome messgae print_Usart(usart2, ASCII_clear); print_Usart(usart2, "Hello to our KED project\n\r"); //blinks 10 times to indicate the sicsessfull init if the device for(i = 0 ; i < 2 ; i++) { delayMs(100); pinToggle(pinB3); delayMs(100); } pinWrite(pinB3,0); i2c_init(&i2c_1, I2C_CH_1, i2c_mode_master, 0x00,0x00, i2c_address_count_single, i2c_address_size_7b, i2c_clk_speed_standart, i2c_clk_stretching_disable, i2c_wake_disabled); slaveAddress = SSD1306_I2C_ADDRESS; registerToRead = 0x02; registerToRead = 0x06; i2cData = 0xAA; uint8_t text[30]="KED Wellcomes You"; i2c_check_device(&i2c_1, &slaveAddress); /* Pin Connections of of OLED * GND = GND * VCC = 5V * DO = SCL * D1 = SDA * RES = Require a low to high transition * DC = GND * CS = GND * ADDRESS = 0X3C * FOR I2C opperation * -> R4 & R1 : Has resistor | R2 & R3 : Has no Resistor * -> R8 Needs to be bridged */ lcd_oled_init(&i2c_1 , SSD1306_I2C_ADDRESS); lcd_oled_display(); //Adafruit logo is visible delayMs(500); lcd_oled_clear(); lcd_oled_print_text(0,5,text,18,WHITE); lcd_oled_draw_line(64, 32, 0, 10, WHITE); lcd_oled_draw_line(64, 32, 45, 10, WHITE); lcd_oled_draw_line(64, 32, 90, 10, WHITE); lcd_oled_draw_line(64, 32, 135, 10, WHITE); lcd_oled_draw_line(64, 32, 180, 10, WHITE); lcd_oled_draw_line(64, 32, 225, 10, WHITE); lcd_oled_draw_line(64, 32, 270, 10, WHITE); lcd_oled_draw_line(64, 32, 315, 10, WHITE); lcd_oled_draw_circle(64, 32, 15, EMPTY, WHITE); lcd_oled_draw_circle(10, 30, 10, FILLED, WHITE); lcd_oled_draw_rectangle(10, 50, 10, 10, EMPTY, WHITE); lcd_oled_draw_rectangle(30, 50, 10, 10, FILLED, WHITE); lcd_oled_display(&i2c_1); print_Usart(usart2, "\n\r"); print_Usart(usart2, "All Is Working fine "); print_Usart(usart2, "\n\r"); while(1) { delayMs(100); pinToggle(pinB3); delayMs(100); } return 1; }