I am new to C++ code development, so this code was written by GPT chat. I am making a project of an on-board computer based on arduino nano. I have a code but I can't remove errors from it. The compiler gives errors with copies and with speed calculation. Can you please help me and finish writing it to a working state, please. Я новичок в сфере разработки кода на с++, по этому этот код писал чат GPT. Я делаю проект бортового компьютера на основе ардуино нано. У меня есть код но я не могу убрать из него ошибки. Компилятор выдает ошибки со скобками и с расчётом скорости. Можете мне пожалуйста помочь и дописать его до рабочего состояния пожалуйста.
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <TinyGPS++.h>
#include <MPU6050.h>
#include <SoftwareSerial.h>
#define SD_CS_PIN 10
Adafruit_BMP280 bmp; // Объект для BMP280
TinyGPSPlus gps; // Объект GPS
MPU6050 mpu; // Объект для MPU6050
SoftwareSerial sim800l(7, 8); // RX, TX для SIM800L
SoftwareSerial gpsSerial(3, 4); // RX, TX для GPS
File dataFile;
unsigned long lastDataTimestamp = 0;
unsigned long lastMessageTimestamp = 0;
void setup() {
Serial.begin(9600);
gpsSerial.begin(9600);
sim800l.begin(9600);
// Инициализация SD-карты
if (!SD.begin(SD_CS_PIN)) {
Serial.println("Ошибка инициализации SD-карты!");
while (1);
}
// Инициализация BMP280
if (!bmp.begin(0x76)) {
Serial.println("Ошибка инициализации BMP280!");
while (1);
}
// Инициализация MPU6050
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
Serial.println("Ошибка соединения с MPU6050!");
while (1);
}
}
void loop() {
// Считывание GPS-данных
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
// Считывание данных каждые 6 секунд
if (millis() - lastDataTimestamp >= 6000) {
lastDataTimestamp = millis();
float altitude = bmp.readAltitude(1013.25);
float temperature = bmp.readTemperature();
float pressure = bmp.readPressure() / 100;
int16_t ax, ay, az, gx, gy, gz;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
float speed = calculateSpeed(ax, ay, az); // Ваша функция для расчета скорости
// Формируем строку для записи на SD
String dataString = String(altitude) + "," + String(temperature) + "," + String(pressure) + "," + String(speed);
if (gps.location.isUpdated()) {
dataString += "," + String(gps.location.lat(), 6) + "," + String(gps.location.lng(), 6);
}
// Запись данных в файл
dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
} else {
Serial.println("Ошибка записи в файл!");
}
Serial.println(dataString);
}
// Отправка SMS каждые 20 секунд с координатами
if (millis() - lastMessageTimestamp >= 20000) {
lastMessageTimestamp = millis();
if (gps.location.isUpdated()) {
String coordinates = "Lat: " + String(gps.location.lat(), 6) + ", Lng: " + String(gps.location.lng(), 6);
sendSMS(coordinates);
}
}
}
void sendSMS(String message) {
sim800l.println("AT");
delay(100);
sim800l.println("AT+CMGF=1"); // Устанавливаем текстовый режим
delay(100);
sim800l.println("AT+CMGS=\"ВашНомерТелефона\""); // Замените на ваш номер
delay(100);
sim800l.println(message); // Сообщение
delay(100);
sim800l.write(26); // Ctrl+Z для отправки
delay(1000);
}