Sari la conținut
ELFORUM - Forumul electronistilor

Probleme vitezometru GPS


Postări Recomandate

Salutare prieteni ,

Construiesc un vitezometru GPS cu Arduino Nano ( varianta China CH340), display OLED de 0.96" si un modul GPS M8N ( China HGLRC).  L-am testat pe o placa de teste , a functionat bine. Dupa ce am montat componentele intr-o cutie nu mai functioneaza cum ar trebui. Mai exact displayul nu se mai aprinde decat daca intrerup alimentarea modulului GPS.

Am verificat toate conexiunile, toate sunt ok. Am testat si modulul GPS cu un alt cod cu afisare pe Monitor Serial si functioneaza ok.

Am schimbat si modulul Arduino  insa cu aceleasi rezultate . Am incercat si alimentare la 5V direct pe pinul de 5V si alimentare la 12V prin pinul de Vin.

Cred ca ceva in codul meu este gresit dar sunt incepator in programare si nu imi dau seama ce nu este in regula. V-as ruga, daca se poate, sa ma ajutati cu aceasta problema.

 

Conexiunile sunt urmatoarele:

Display OLED :

SCL - A5;

SDA - A4;

VCC - 3V3;

GND - GND.

 

Modul GPS :

RX - D4;

TX - D3;

VCC - 5V;

GND- GND.


 

 

Iata si codul:

#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPS++.h>
 
#define rxPin 3
#define txPin 4
SoftwareSerial mygps(rxPin, txPin);
 
#define SCREEN_WIDTH 128       // OLED display width, in pixels
#define SCREEN_HEIGHT 64       // OLED display height, in pixels
#define OLED_RESET -1          //Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C    //See datasheet for Address
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
TinyGPSPlus gps;
 
 
void setup()
{
  Serial.begin(115200);
  mygps.begin(9600);
 
  if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
  {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;); // Don't proceed, loop forever
  }
  display.clearDisplay();
  display.display();
  delay(2000);
}
 
void loop()
{
  boolean newData = false;
  for (unsigned long start = millis(); millis() - start < 1000;)
  {
    while (mygps.available())
    {
      if (gps.encode(mygps.read()))
      {
        newData = true;
      }
    }
  }
 
  //If newData is true
  if (newData == true)
  {
    newData = false;
    display.setTextColor(SSD1306_WHITE);
 
    if (gps.location.isValid() == 1)
    {
      //String gps_speed = String(gps.speed.kmph());
      display.setCursor(8,8);
      display.setTextSize(6);
      display.print(gps.speed.kmph(),1);
 
    
      display.display();
      delay(1500);
      display.clearDisplay();
    }
  }
 
  else
  {
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0, 20);
    display.setTextSize(3);
    display.print("No Data");
    display.display();
    delay(1500);
    display.clearDisplay();
  }
}

 

Link spre comentariu
  • Răspunsuri 1
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări