Помогите разобраться с ошибкой

Glab16
Offline
Зарегистрирован: 12.10.2019

Добрый день.

Помогите разобраться с ошибкой, и по возможности предложите решение. 

За ранние спасибо.

#include <Servo.h>


Servo leftPlane;
Servo leftUpright;
Servo rightPlane;
Servo rightUpright;

void setup() {

    Serial.begin(9600);

    leftPlane.attach(5);
    leftUpright.attach(6);
    rightPlane.attach(7);
    rightUpright.attach(8);


}

void loop() {;

    char cha[] = "left";
    char chb[] = "right";
    char chc[] = "up";
    char chd[] = "down";



    unsigned char a;  //растояние до обекта относительно leftplane

    for (;;) {
        Serial.print(a);
        delay(250);  //4 раза/с
    }




    unsigned char sflp;
    unsigned char sflu;
    unsigned char sfrp;
    unsigned char sfru;

    String left;
    String right;


    int k;
    int d;
    int v;

    if(Serial.available()){
        int val = Serial.parseInt();


        if(val[0] == 'l'){
            if(val[1] == '0' ) {
                d = val[2];
                v = val[3];

                left = b + v;
            } else {
                k = val[1];
                d = val[2];
                v = val[3];
                left = k + d + v;
            }
        } else {
            if(val[0] == 'r'){
                if(val[1] == '0' ) {
                    d = val[2];
                    v = val[3];

                    right = b + v;
                } else {
                    k = val[1];
                    d = val[2];
                    v = val[3];
                    right = k + d + v;
                }
            } else {

            }
        }


    }


    unsigned char flp;
    unsigned char flu;
    unsigned char frp;
    unsigned char fru;



    //логика

// 0,3 константа = растоянию между камерами

    sflp = (180 - (0.3 / (2 * a)) * 2) / 2;
    sflu = (180 - (0.3 / (2 * a)) * 2) / 2;

    if(right = 0){
        frp = sfrp;
    } else {
        frp = sfrp + right;
    }

    if(left = 0){
        flp = sflp;
    } else {
        flp = sflp + left;
    }




    //управление

    leftPlane.write(flp);
    leftUpright.write(flu);
    rightPlane.write(frp);
    rightUpright.write(fru);

Код ошибки:

Arduino: 1.8.5 (Linux), Плата:"Arduino/Genuino Uno"
 
/home/medvedi/Рабочий стол/sketch_jul24a/sketch_jul24a.ino: In function 'void loop()':
sketch_jul24a:57: error: invalid types 'int[int]' for array subscript
         if(val[0] == 'l'){
                 ^
sketch_jul24a:58: error: invalid types 'int[int]' for array subscript
             if(val[1] == '0' ) {
                     ^
sketch_jul24a:59: error: invalid types 'int[int]' for array subscript
                 d = val[2];
                          ^
sketch_jul24a:60: error: invalid types 'int[int]' for array subscript
                 v = val[3];
                          ^
sketch_jul24a:62: error: 'b' was not declared in this scope
                 left = b + v;
                        ^
sketch_jul24a:64: error: invalid types 'int[int]' for array subscript
                 k = val[1];
                          ^
sketch_jul24a:65: error: invalid types 'int[int]' for array subscript
                 d = val[2];
                          ^
sketch_jul24a:66: error: invalid types 'int[int]' for array subscript
                 v = val[3];
                          ^
sketch_jul24a:70: error: invalid types 'int[int]' for array subscript
             if(val[0] == 'r'){
                     ^
sketch_jul24a:71: error: invalid types 'int[int]' for array subscript
                 if(val[1] == '0' ) {
                         ^
sketch_jul24a:72: error: invalid types 'int[int]' for array subscript
                     d = val[2];
                              ^
sketch_jul24a:73: error: invalid types 'int[int]' for array subscript
                     v = val[3];
                              ^
sketch_jul24a:75: error: 'b' was not declared in this scope
                     right = b + v;
                             ^
sketch_jul24a:77: error: invalid types 'int[int]' for array subscript
                     k = val[1];
                              ^
sketch_jul24a:78: error: invalid types 'int[int]' for array subscript
                     d = val[2];
                              ^
sketch_jul24a:79: error: invalid types 'int[int]' for array subscript
                     v = val[3];
                              ^
sketch_jul24a:105: error: ambiguous overload for 'operator=' (operand types are 'String' and 'int')
     if(right = 0){
              ^
/home/medvedi/Рабочий стол/sketch_jul24a/sketch_jul24a.ino:105:14: note: candidates are:
In file included from /snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/Arduino.h:231:0,
                 from sketch/sketch_jul24a.ino.cpp:1:
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:86:11: note: String& String::operator=(const String&)
  String & operator = (const String &rhs);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:87:11: note: String& String::operator=(const char*)
  String & operator = (const char *cstr);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
  String & operator = (const __FlashStringHelper *str);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:90:11: note: String& String::operator=(String&&)
  String & operator = (String &&rval);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:91:11: note: String& String::operator=(StringSumHelper&&)
  String & operator = (StringSumHelper &&rval);
           ^
sketch_jul24a:108: error: cannot convert 'StringSumHelper' to 'unsigned char' in assignment
         frp = sfrp + right;
             ^
sketch_jul24a:111: error: ambiguous overload for 'operator=' (operand types are 'String' and 'int')
     if(left = 0){
             ^
/home/medvedi/Рабочий стол/sketch_jul24a/sketch_jul24a.ino:111:13: note: candidates are:
In file included from /snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/Arduino.h:231:0,
                 from sketch/sketch_jul24a.ino.cpp:1:
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:86:11: note: String& String::operator=(const String&)
  String & operator = (const String &rhs);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:87:11: note: String& String::operator=(const char*)
  String & operator = (const char *cstr);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
  String & operator = (const __FlashStringHelper *str);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:90:11: note: String& String::operator=(String&&)
  String & operator = (String &&rval);
           ^
/snap/arduino-mhall119/5/hardware/arduino/avr/cores/arduino/WString.h:91:11: note: String& String::operator=(StringSumHelper&&)
  String & operator = (StringSumHelper &&rval);
           ^
sketch_jul24a:114: error: cannot convert 'StringSumHelper' to 'unsigned char' in assignment
         flp = sflp + left;
             ^
sketch_jul24a:133: error: expected primary-expression before 'int'
     rightUpright.write(int
                        ^
sketch_jul24a:133: error: expected '}' at end of input
exit status 1
invalid types 'int[int]' for array subscript
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Предлагаю решение: стереть этот бессмысленный треш с жесткого диска.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Вы с переменной val типа int пытаетесь работать как со строкой

b707
Offline
Зарегистрирован: 26.05.2017

andycat пишет:
Вы с переменной val типа int пытаетесь работать как со строкой

если бы только это :) А как вам строчки 31-35? :)

Поддерживаю Садмана - эту программку нужно отправить прямиком в мусорную корзину

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Glab16 пишет:

Помогите разобраться с ошибкой,

Переменная val описана в строке №54 как int, а используется как массив.

Glab16 пишет:

предложите решение. 

Решение - изучить эту книгу (ну, хотя бы уж вот эту) и только потом программировать.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

шыдэвр, в анналы: 

030     unsigned char a;  //растояние до обекта относительно leftplane
031  
032     for (;;) {
033         Serial.print(a);
034         delay(250);  //4 раза/с
035     }
 

Раз в четвертьсекунды выводим "ХЗ чо" в Сериал и зацикливаемся на этом. 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Ктонить, убейте вторую тему с таким же названием, я почему-то не могу. 

Araris
Offline
Зарегистрирован: 09.11.2012

Я тоже не могу, это одна и та же тема по факту.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

тока она в заблуждение вводит, что на форуме есть новая тема.  По факту нету, они обе ведут в одно и то же место, а формально - та, которая с 0 ответов светится как новая. :) 

bwn
Offline
Зарегистрирован: 25.08.2014

DetSimen пишет:

Ктонить, убейте вторую тему с таким же названием, я почему-то не могу. 

Аналогичная фигня. Сервер таки скомпилировал код ТС? ))))

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Надо к компаньеро Алехандру идти и челом бить

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

тока она в заблуждение вводит, что на форуме есть новая тема.  

Я решил эту проблему, когда сказал в разделе "пометить все темы как прочитанные". Она перестала быть новой.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Странно, но у меня такое не прокатило. Хотя и никаких прав админских на форуме не имею. А самое главное - меня это и не напрягает )))

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ЕвгенийП пишет:

DetSimen пишет:

тока она в заблуждение вводит, что на форуме есть новая тема.  

Я решил эту проблему, когда сказал в разделе "пометить все темы как прочитанные". Она перестала быть новой.

+1