Косяки программирования.
- Войдите на сайт для отправки комментариев
Здравствуйте! Влип полностью компилятор ругается как исправить это немогу догадаться.
Ругань:
/home/k4eha/Документы/ЭЛЕКТРОНИКА/АРДУИНО/МАШИНКА/My_Car_Universal_LAZER_lidar/My_Car_Universal_LAZER_lidar.ino: In function 'void automatik(int)': /home/k4eha/Документы/ЭЛЕКТРОНИКА/АРДУИНО/МАШИНКА/My_Car_Universal_LAZER_lidar/My_Car_Universal_LAZER_lidar.ino:247:15: warning: suggest parentheses around assignment used as truth value [-Wparentheses] if (command = (87)) { ~~~~~~~~^~~~~~ /home/k4eha/Документы/ЭЛЕКТРОНИКА/АРДУИНО/МАШИНКА/My_Car_Universal_LAZER_lidar/My_Car_Universal_LAZER_lidar.ino: In function 'void obzor(int)': /home/k4eha/Документы/ЭЛЕКТРОНИКА/АРДУИНО/МАШИНКА/My_Car_Universal_LAZER_lidar/My_Car_Universal_LAZER_lidar.ino:311:15: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
НАДО ЗДЕСЬ. Если свой код исправлю остальная ругань тоже исчезнет. if (command = (87)) { ~~~~~~~~^~~~~~ /home/k4eha/Arduino/libraries/Adafruit_VL53L0X/src/core/src/vl53l0x_api.cpp: In function 'VL53L0X_PerformSingleRangingMeasurement': /home/k4eha/Arduino/libraries/Adafruit_VL53L0X/src/core/src/vl53l0x_api_core.cpp:1975:3: warning: 'PalRangeStatus' may be used uninitialized in this function [-Wmaybe-uninitialized] if (*pPalRangeStatus == 0) ^ /home/k4eha/Arduino/libraries/Adafruit_VL53L0X/src/core/src/vl53l0x_api.cpp:2197:11: note: 'PalRangeStatus' was declared here uint8_t PalRangeStatus; ^ Скетч использует 20020 байт (62%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 1327 байт (64%) динамической памяти, оставляя 721 байт для локальных переменных. Максимум: 2048 байт.
Конец ругани.
Там с синтаксисом изголялся повсякому сначала было "if (command = 87) {mashina(Speed);}"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(0, 1); // RX, TX
//* digital pin 4 (соединить с TX на модуле блютуз)
//* digital pin 5 (соединить с RX на модуле блютуз)
#include <Stepper.h>
// 1_pin-6_ЗЕЛЁНЫЙ, 2_pin-4_ЖОЛТЫЙ, 3_pin-7_ОРАНЖЕВЫЙ, 4_pin-8_СИРЕНЕВЫЙ
Stepper myStepper(2038, 8, 4, 7, 6);
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
// Создаем объект, методами которого будем затем пользоваться для получения расстояния.
// В качестве параметров передаем номера пинов, к которым подключены выходы ECHO и TRIG датчика
/*ЛЕВЫЙ НАЗАД */ int EN1 = 9; /*ВПЕРЁД*/ int EN2 = 10; /*_____ ПРАВЫЙ ВПЕРЁД*/ int EN3 = 5; /*НАЗАД*/ int EN4 = 3; // драйвер мотора подключен!
byte BackLight = A1; //задние стоп сигналы
byte FrontLight = A2; //ФАРА
int Speed = 200; //начальная скорость моторов, сразу после запуска программы на смартфоне
int kolSteps;
int button_pin = 11; //КНОПКА ПУСК
int command;
int unsigned Dist = 300;
int unsigned leftDist = 300;
int unsigned rightDist = 300;
int unsigned lidDist = 300;
boolean lightFront= false; //переменные для хранения состояния световых приборов и звукового сигнала
boolean lightBack = false;
void RMGO (int Speed);
void LMGO (int Speed);
void RMBACK (int Speed);
void LMBACK (int Speed);
void Stop (int Speed);
void obzor (int Speed);
void mashina(int Speed);
void setup() {
mySerial.begin(9600); Serial.begin(9600); //запускаем виртуальный серийный порт для связи с блютуз модулем
Serial.begin(2400); //запускаем серийный порт для связи с пк для отладки программы
lox.begin();
//настраиваем порты на ввод и вывод----------------
//далее объявлены пины для связи ардуино и драйвера двигателя
myStepper.setSpeed(13);
pinMode (EN1, OUTPUT); pinMode (EN2, OUTPUT); pinMode (EN3, OUTPUT); pinMode (EN4, OUTPUT);
pinMode (button_pin, INPUT ); // Инициализируем цифровой вход КНОПКИ ПУСК.
pinMode (BackLight, OUTPUT);
pinMode (FrontLight, OUTPUT);
}
void loop()
{
delay (200);
if (digitalRead(button_pin) == HIGH)
{
mashina(Speed);
}
delay (100);
Serial.println("_ВКЛЮЧИТЕ_!");
}
void RMGO (int Speed) { //правый мотор вперед
delay (10);
analogWrite (EN3, 250);
delay (100);
analogWrite (EN3, Speed);
analogWrite (EN4, 0);
mashina(Speed);
}
void LMGO (int Speed) { //левый мотор вперед
delay (10);
analogWrite (EN2, 250);
delay (100);
analogWrite (EN1, 0);
analogWrite (EN2, Speed);
mashina(Speed);
}
void LMBACK (int Speed) { //левый мотор назад
delay (10);
analogWrite (EN1, 250);
delay (100);
analogWrite (EN1, Speed);
analogWrite (EN2, 0);
mashina(Speed);
}
void RMBACK (int Speed) { //правый мотор назад
delay (10);
analogWrite (EN4, 250);
delay (100);
analogWrite (EN3, 0);
analogWrite (EN4, Speed);
mashina(Speed);
}
void Stop () { //оба мотора стоп
delay (20);
analogWrite (EN1, 0); analogWrite (EN2, 0);
analogWrite (EN3, 0); analogWrite (EN4, 0);
mashina(Speed);
}
void mashina(int Speed)
{
if (digitalRead(button_pin) == HIGH)
{
loop();
}
delay (20);
VL53L0X_RangingMeasurementData_t measure;
lidDist = measure.RangeMilliMeter;
lox.rangingTest(&measure, false);
if (mySerial.available() > 0)
{ //если в буфере программного серийного порта есть данные
command = mySerial.read();
} //считываем их и запоминаем комманду
Serial.println(command); //выводим команду в монитор порта (используется для отладки)
switch (command)
{ //выполняем действия в зависимости от полученной по блютуз команде
case 70: {
if (lidDist > 200) {
LMGO(Speed); //Едем вперед
RMGO(Speed);
} break;
}
case 66: {
LMBACK(Speed); //Едем назад
RMBACK(Speed);
break;
}
case 82: {
LMGO(Speed); //танковый разворот направо
RMBACK(Speed);
break;
}
case 76: {
RMGO(Speed); //танковый разворот налево
LMBACK(Speed);
break;
}
case 73: {
LMGO(Speed); //Вперед и направо
RMGO(Speed / 3);
break;
}
case 71: {
RMGO(Speed); //Вперед и налево
LMGO(Speed / 3);
break;
}
case 74: {
LMBACK(Speed); //назад направо
RMBACK(Speed / 3);
break;
}
case 72: {
RMBACK(Speed); //назад налево
LMBACK(Speed / 3);
break;
}
case 48: Speed = 120; break; //задаем скорость
case 49: Speed = 125; break; //задаем скорость
case 50: Speed = 135; break; //задаем скорость
case 51: Speed = 145; break; //задаем скорость
case 52: Speed = 160; break; //задаем скорость
case 53: Speed = 175; break; //задаем скорость
case 54: Speed = 190; break; //задаем скорость
case 55: Speed = 205; break; //задаем скорость
case 56: Speed = 220; break; //задаем скорость
case 57: Speed = 235; break; //задаем скорость
case 113: Speed = 255; break; //задаем скорость
case 87: lightFront = true; break; //меняем состояние переменной управления передними фарами (включение)
case 119: lightFront = false; break; //меняем состояние переменной управления передними фарами (отключение)
case 85: lightBack = true; break; //меняем состояние переменной управления задними светодиодами (включение)
case 117: lightBack = false; break; //меняем состояние переменной управления задними светодиодами(отключение)
}
// управляем светодиодами и пьезопищалкой
if (lightFront) {
digitalWrite(FrontLight, HIGH); //включаем передние фары
}
if (!lightFront) {
digitalWrite(FrontLight, LOW); //либо отключаем их.
}
if (lightBack) {
digitalWrite(BackLight, HIGH); //включаем задние стоп сигналы
}
if (!lightBack) {
digitalWrite(BackLight, LOW); //либо отключаем их
}
}
void automatik(int Speed)
{
if (mySerial.available() > 0)
{ //если в буфере программного серийного порта есть данные
command = mySerial.read();
} //считываем их и запоминаем комманду
Serial.println(command); //выводим команду в монитор порта (используется для отладки)
if (command = (87)) {
(mashina(Speed));
}
if (digitalRead(button_pin) == HIGH)
{
loop();
}
delay (20);
VL53L0X_RangingMeasurementData_t measure;
lidDist = measure.RangeMilliMeter;
lox.rangingTest(&measure, false);
Serial.print(lidDist);
Serial.println("ХОД");
if (lidDist >= 1000) {
Speed = 255;
}
if (lidDist <= 1000) {
Speed = 200;
}
if (lidDist <= 500) {
Speed = 100;
}
if (lidDist <= 350) {
Speed = 60;
}
if (lidDist <= 200) {
obzor(Speed);
}
delay (10);
analogWrite (EN3, 250); analogWrite (EN2, 250);
delay (100);
analogWrite (EN3, Speed); analogWrite (EN1, 0);
analogWrite (EN4, 0); analogWrite (EN2, Speed);
automatik(Speed);
}
void obzor(int Speed)
{
if (mySerial.available() > 0)
{ //если в буфере программного серийного порта есть данные
command = mySerial.read();
} //считываем их и запоминаем комманду
Serial.println(command); //выводим команду в монитор порта (используется для отладки)
if (command = (87)) {
(mashina(Speed));
}
if (digitalRead(button_pin) == HIGH)
{
loop();
}
delay (20);
analogWrite (EN1, 0); analogWrite (EN2, 0);
analogWrite (EN3, 0); analogWrite (EN4, 0);
Serial.println("_СТОП");
VL53L0X_RangingMeasurementData_t measure;
delay (20);
lox.rangingTest(&measure, false);
lidDist = measure.RangeMilliMeter;
if (lidDist <= 200)
{
delay (1000);
Dist = lidDist;
myStepper.step(400);
delay (20);
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
lidDist = measure.RangeMilliMeter;
leftDist = lidDist;
delay (2000);
myStepper.step(-800);
delay (20);
lox.rangingTest(&measure, false);
lidDist = measure.RangeMilliMeter;
delay (1000);
rightDist = lidDist;
myStepper.step(400);
Serial.print(lidDist);
Serial.println("ОГЛЯДКИ");
if (leftDist >= rightDist) {
Serial.print(leftDist);
Serial.println("_ЛЕВО");
Serial.print(rightDist);
Serial.println("_ПРАВО");
Serial.print(Dist);
Serial.println("_ПРЯМО");
delay (2000);
delay (10);
analogWrite (EN2, 250); analogWrite (EN4, 250);
delay (100);
analogWrite (EN1, 0); analogWrite (EN3, 0);
analogWrite (EN2, 200); analogWrite (EN4, 200); //ВПРАВО
delay (20);
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
lidDist = measure.RangeMilliMeter;
if (lidDist <= 200)
{
obzor(Speed);
}
}
delay (2000);
analogWrite (EN3, 250); analogWrite (EN1, 250);
delay (100);
analogWrite (EN3, 200); analogWrite (EN1, 200);
analogWrite (EN4, 0); analogWrite (EN2, 0); //ВЛЕВО
delay (20);
lox.rangingTest(&measure, false);
lidDist = measure.RangeMilliMeter;
if (lidDist <= 200)
{
obzor(Speed);
}
if (Dist <= 200 && leftDist <= 200 && rightDist <= 200)
{
delay (2000);
analogWrite (EN1, 250); analogWrite (EN4, 250);
delay (100);
analogWrite (EN1, 200); analogWrite (EN3, 0);
analogWrite (EN2, 0); analogWrite (EN4, 200);
Serial.print(lidDist);
Serial.println("СДАТЬ ЗАДОМ");
obzor(Speed);
}
}
automatik(Speed);
}
Вот так: «=» - это присваивание, а сравнение вот так: «==». Разницу ощущаете?)
Спасибо, ощутил разницу :-)) помогло!