adyhansolo Postat Mai 25 Partajează Postat Mai 25 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
fratello Postat Mai 26 Partajează Postat Mai 26 M-am jucat si eu cu un GPS (cel de aici : https://github.com/ahmadlogs/arduino-ide-examples/blob/main/speedometer-v2/speedometer.png) Inlocuieste #define rxPin 3 #define txPin 4 cu #define rxPin 2 #define txPin 3 //unused si poti lasa pinul D3 al lui Arduino neconectat. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum