I2C и software serial
Попытка сделать GPS-устройство с экраном. Устройство GPS обменивается данными через последовательный порт (Adafruit Ultimate GPS Breakout), и я могу передавать данные GPS через USB на свой компьютер с помощью серийных примеров программного обеспечения библиотеки GPS Adafruit. Экран обменивается данными через I2C (модуль Sunfounder OLED-SSD1306), и я могу получить отображение с примерами Adafruit SSD1306. Однако я не могу заставить оба события происходить одновременно. Плата Adafruit Metro Mini 5v 16MHZ. GPS использует контакт 8 для TX и контакт 9 для RX. Дисплей использует A4 для SDA и A5 для SCL.
Если "Adafruit_GPS GPS(&mySerial);" не закомментирован, экран не будет ничего отображать. Если он прокомментирован, экран отображается просто отлично. Как заставить оба работать одновременно?
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET -1
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9);
Adafruit_GPS GPS(&mySerial);
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.drawPixel(10, 10, SSD1306_WHITE);
display.display();
delay(2000);
testdrawchar();
}
void loop() {
}
void testdrawchar(void) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.cp437(true);
for(int16_t i=0; i<256; i++) {
if(i == '\n') display.write(' ');
else display.write(i);
}
display.display();
delay(2000);
}
@Rob, 👍1
Обсуждение1 ответ
Проблема действительно заключалась в нехватке памяти (как предположил Юрай). После того, как я нашел небольшие библиотеки, я смог заставить их отлично работать вместе.
Это неполный ответ. Какие библиотеки были выбраны?, @n1nja
Окончательный список библиотек:
#include <AltSoftSerial.h>
#include <TinyGPS.h>
#include <SoftwareSerial.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
#include <Wire.h>
Все библиотеки Adafruit были слишком большими, поэтому все они были заменены на более краткие и компактные библиотеки, которые соответствовали моим целям., @Rob
- Модуль SIM808 GSM работает нормально, GPS не работает (нет сообщения о готовности GPS при включении питания)
- Отправка команд PUBX на плату GPS (Ublox NEO-6M) через SoftwareSerial
- последовательная передача данных на GPS-экране duinopeak
- GSM и GPS-модуль не работают вместе
- Проблема с питанием GPS модуля ublox NEO-6M
- как заставить щит GPRS/GSM SIM900 работать с модулем gps neo-6M с помощью платы Arduino UNO
- vk2828u7g5lf GPS модуль над SoftwareSerial
- Заставить Arduino отправлять и получать одновременно
Я думаю, у вас закончилась память, @Juraj