Косяки программирования.
- Войдите на сайт для отправки комментариев
Здравствуйте! Влип полностью компилятор ругается как исправить это немогу догадаться.
Ругань:
/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); }
Вот так: «=» - это присваивание, а сравнение вот так: «==». Разницу ощущаете?)
Спасибо, ощутил разницу :-)) помогло!