// --------------------------------------
// i2c_scanner
//
// Modified from https://playground.arduino.cc/Main/I2cScanner/
// --------------------------------------
#include <Arduino.h>
#include <Wire.h>
#include <U8g2lib.h>
#include <Toggle.h>
#include "PrintCharArray.h"
// Set I2C bus to use: Wire, Wire1, etc.
#define WIRE Wire
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1306_128X64_ALT0_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 16, /* data=*/ 17, /* reset=*/ U8X8_PIN_NONE); // ESP32 Thing, pure SW emulated I2C
//U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 16, /* data=*/ 17); // ESP32 Thing, HW I2C with pin remapping
//============================================================================================
int Throttle;
int potpin = 32;
char* ModelName = "GP40";
PrintCharArray ps;
//============================================================================================
void setup() {
WIRE.begin();
Serial.begin(115200);
OledSetup();
}
void loop() {
int val = analogRead(potpin);
//============================================================================================
char*ModelID = ModelName;
uint8_t OledSpeed = map(val, 0, 4095, 0, 200);
OledSpeed = constrain(OledSpeed, 0, 200);
ps.clear();
ps.println(OledSpeed, 10);
char* SpeedBuffer = ps.getBuffer();
u8g2.firstPage();
do {
// Display a frame on the border - for debugging only
//u8g2.drawFrame(0, 0, 128, 64);
// Draw Speed down-left corner
u8g2.setFont(u8g2_font_logisoso42_tn);
uint8_t SpeedX = 128 - 24 - u8g2.getStrWidth(SpeedBuffer) / 2;
u8g2.setDrawColor(1);
u8g2.drawStr(SpeedX, 64, SpeedBuffer);
// Display Locomotive Model Number
u8g2.setFont(u8g2_font_helvB14_tf);
uint8_t ModelX = u8g2.getStrWidth(ModelID) + 4;
u8g2.setDrawColor(1);
u8g2.drawRBox(0, 0, ModelX, 18, 5);
u8g2.setDrawColor(0);
u8g2.drawStr(2, 16, ModelID);
} while ( u8g2.nextPage() );
//u8g2.sendBuffer();
//============================================================================================
}