// Output Device Test Code - OLED I2C Telemetry Screen #include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); const int SENSOR_PIN = 2; // GPIO2 Potentiometer Input void setup() { Wire.begin(4, 5); // Initialize I2C on SDA=GPIO4, SCL=GPIO5 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // I2C address 0x3C for(;;); // Freeze if screen not detected } display.clearDisplay(); display.setTextColor(SSD1306_WHITE); analogReadResolution(12); } void drawDashboard(int throttleVal) { display.clearDisplay(); // Title display.setTextSize(1); display.setCursor(0, 0); display.print("GOKART TELEMETRY"); // Speed display (dummy math based on throttle) int speed = map(throttleVal, 0, 4095, 0, 45); // Max 45 km/h display.setTextSize(2); display.setCursor(0, 16); display.print(speed); display.setTextSize(1); display.print(" km/h"); // Draw Throttle Bar Graph int barWidth = map(throttleVal, 0, 4095, 0, 120); display.drawRect(0, 40, 120, 8, SSD1306_WHITE); // Outer border display.fillRect(0, 40, barWidth, 8, SSD1306_WHITE); // Filled bar // Battery status indicator (dummy) display.setCursor(0, 52); display.print("BATTERY: 42.1V"); display.display(); } void loop() { int sensorRead = analogRead(SENSOR_PIN); drawDashboard(sensorRead); delay(100); }