Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********* 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: "Odometer Display"
- - Source Code NOT compiled for: Arduino Nano
- - Source Code created on: 2024-07-15 19:45:21
- ********* Pleasedontcode.com **********/
- /****** SYSTEM REQUIREMENTS *****/
- /****** SYSTEM REQUIREMENT 1 *****/
- /* creare un contachilometri gps */
- /****** END SYSTEM REQUIREMENTS *****/
- /****** DEFINITION OF LIBRARIES *****/
- #include <Wire.h>
- #include <Adafruit_SSD1306.h> // https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED.git
- #include <U8g2_for_Adafruit_GFX.h> // https://github.com/olikraus/U8g2_for_Adafruit_GFX
- #include <TinyGPS++.h> // GPS library
- /****** FUNCTION PROTOTYPES *****/
- void setup(void);
- void loop(void);
- void displayOdometer(float distance);
- /***** DEFINITION OF I2C PINS *****/
- const uint8_t display_SSD1306OledDisplay_I2C_PIN_SDA_A4 = A4;
- const uint8_t display_SSD1306OledDisplay_I2C_PIN_SCL_A5 = A5;
- const uint8_t display_SSD1306OledDisplay_I2C_SLAVE_ADDRESS = 0x3C; // 60 in decimal
- /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
- #define OLED_RESET 4
- Adafruit_SSD1306 display(OLED_RESET);
- U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx; // Create an instance of U8G2_FOR_ADAFRUIT_GFX
- TinyGPSPlus gps; // Create an instance of TinyGPSPlus
- // Variables to store GPS data
- float totalDistance = 0.0;
- float lastLatitude = 0.0;
- float lastLongitude = 0.0;
- void setup(void)
- {
- Serial.begin(9600); // Initialize serial communication for GPS
- display.begin(SSD1306_SWITCHCAPVCC, display_SSD1306OledDisplay_I2C_SLAVE_ADDRESS);
- u8g2_for_adafruit_gfx.begin(display);
- display.clearDisplay();
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.println("GPS Odometer");
- display.display();
- delay(2000);
- }
- void loop(void)
- {
- while (Serial.available() > 0) {
- gps.encode(Serial.read());
- if (gps.location.isUpdated()) {
- float currentLatitude = gps.location.lat();
- float currentLongitude = gps.location.lng();
- if (lastLatitude != 0.0 && lastLongitude != 0.0) {
- float distance = TinyGPSPlus::distanceBetween(
- lastLatitude, lastLongitude,
- currentLatitude, currentLongitude
- );
- totalDistance += distance;
- }
- lastLatitude = currentLatitude;
- lastLongitude = currentLongitude;
- displayOdometer(totalDistance);
- }
- }
- }
- void displayOdometer(float distance) {
- display.clearDisplay();
- u8g2_for_adafruit_gfx.setFont(u8g2_font_helvR14_tf);
- u8g2_for_adafruit_gfx.setCursor(0,20);
- u8g2_for_adafruit_gfx.print("Distance:");
- u8g2_for_adafruit_gfx.setCursor(0,40);
- u8g2_for_adafruit_gfx.print(distance, 2);
- u8g2_for_adafruit_gfx.print(" meters");
- display.display();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement