OLED не обновляет дисплей
Я пытаюсь подключить устройство GPS (GY-GPS6MV2) и OLED-экран, как показано на схеме ниже (зеленый разъем — GPS; VCC, RX, TX, GND слева направо ):
Вот код, который я придумал:
#include <Wire.h>
#include <Adafruit_SH1106.h>
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);
static const int RXPin = 5, TXPin = 3;
static const uint32_t GPSBaud = 9600;
float vkph;
float vmps;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
void setup(){
Serial.begin(9600);
ss.begin(GPSBaud);
display.begin(SH1106_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
}
void loop(){
while (ss.available() > 0){
gps.encode(ss.read());
vkph = gps.speed.kmph();
vmps = gps.speed.mps();
if (gps.location.isUpdated()){
Serial.print("Position: ");
Serial.print(gps.location.lat(), 6);
Serial.print(" : ");
Serial.println(gps.location.lng(), 6);
Serial.print("Speed: ");
Serial.print(vmps);
Serial.print(" m/s");
Serial.print(", ");
Serial.print(vkph);
Serial.println( " km/hr");
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Hello"); // Изменяем это на display.println(vmps);
display.setTextSize(2);
display.setTextColor(WHITE);
display.println("World"); // Изменяем это на display.println(vkph);
display.display();
delay(1000);
}
}
}
GPS выводит на последовательный монитор нормально, и на экране отображается "Hello \n
World" как и ожидалось. Но когда я вношу изменения, указанные в комментариях, к отображаемой части кода, на дисплее просто отображается заставка, мигающая при обновлении GPS.
Как заставить дисплей отображать скорость в м/с и км/ч?
@Jim421616, 👍0
1 ответ
▲ -1
Возможно, вам нужно добавить
delay()
в свой код, я не уверен.
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Hello"); // Changing this to display.println(vmps);
display.setTextSize(2);
display.setTextColor(WHITE);
display.println("World"); // Changing this to display.println(vkph);
display.display();
delay(1000);
,
@Memba
Смотрите также:
- GPS-модуль uBlox Neo 6M не отвечает
- Отправка команд PUBX на плату GPS (Ublox NEO-6M) через SoftwareSerial
- Arduino SoftwareSerial - не удается получить данные от модуля NEO 6M-GPS
- TinyGPS не дает долготу, широту и другие данные
- последовательная передача данных на GPS-экране duinopeak
- Почему HDOP в TinyGPS++ меньше 1?
- Отправка данных GPS через модуль WiFi
- Не получение данных от GPS
Почему и где?, @Jim421616
Потому что у OLED нет времени, чтобы продолжать показывать., @Memba
Это ответ или вопрос? Также, пожалуйста, уточните подробнее, чтобы ответ был действительно полезным, @chrisl
Я пробовал это еще до того, как вы опубликовали редактирование. Та же проблема, только теперь для мигания заставки требуется 1000 миллисекунд., @Jim421616
Вы также добавили задержку после кода отображения GPS?, @chrisl