CCCPaste

"Speedometer Interface" rev_01

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: "Speedometer Interface"
	- Source Code compiled for: Arduino Uno
	- Source Code created on: 2024-02-18 08:37:46

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* map the pot value in the oled to show the */
	/* speedometer as of a car ,on the oled , and toggle */
	/* between 3 interfeces of the speedo meter using the */
	/* push button */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include     //https://github.com/evert-arias/EasyButton
#include 
#include 

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void displaySpeedometer(int speed);

/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t button_PushButton_PIN_D2 = 2;

/***** DEFINITION OF ANALOG INPUT PINS *****/
const uint8_t button1_Potentiometer_Vout_PIN_A0 = A0;

/****** DEFINITION OF LIBRARIES CLASS INSTANCES *****/
EasyButton button(button_PushButton_PIN_D2);
Adafruit_SSD1306 display(128, 64, &Wire, -1);

int speed = 0;
int prevSpeed = 0;
int interface = 1;

void setup(void)
{
  // Put your setup code here, to run once:
  Serial.begin(115200);
  
  button.begin();
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(2);
  display.setCursor(0, 0);
  display.println("Speedometer");
  display.display();
}

void loop(void)
{
  // Put your main code here, to run repeatedly:
  button.read();
  
  if (button.wasPressed())
  {
    interface++;
    if (interface > 3)
      interface = 1;
      
    display.clearDisplay();
    display.setCursor(0, 0);
    
    switch (interface)
    {
      case 1:
        display.println("Interface 1");
        break;
      case 2:
        display.println("Interface 2");
        break;
      case 3:
        display.println("Interface 3");
        break;
    }
    
    display.display();
    delay(500);
  }
  
  // Read speed from potentiometer
  int potValue = analogRead(button1_Potentiometer_Vout_PIN_A0);
  speed = map(potValue, 0, 1023, 0, 200);
  
  // Only update display if speed has changed
  if (speed != prevSpeed)
  {
    displaySpeedometer(speed);
    prevSpeed = speed;
  }
}

void displaySpeedometer(int speed)
{
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(0, 0);
  display.print("Speed: ");
  display.print(speed);
  display.print(" km/h");
  display.display();
}