Помогить проверить код

Тема в разделе "Arduino & Shields", создана пользователем Алексей Владимирович, 12 апр 2015.

  1. Во время компиляции говорит что стоит лишний элемент в массиве. Я начинающий а точнее нуб еще в этом деле помогите.



    //////////////////////////////
    //Подключаем библиотеки

    #include <AFMotor.h>
    #include <SoftwareSerial.h> //Подключаем библиотеку для управлением блютусом
    #include <Servo.h> //Подключаем библиотеку для управления сервой
    //////////////////////////////
    //СОЗДАЕМ КЛАССЫ

    //Объект блютус
    SoftwareSerial BlueTooth(0,1); // RX, TX

    //Объект для рулевого серво
    Servo myservo;
    //Создаем объекты для двигателей
    AF_DCMotor motor1(1); //канал М1 на Motor Shield
    //////////////////////////////
    //СОЗДАЕМ ПЕРЕМЕННЫЕ И КОНСТАНТЫ

    //Цифровой пин для сервы
    const int servoSignalPin = 9;// подключать к серве 1
    //Предельные значения углов поворота
    //Центральное положение
    const int Angle_Centr = 73;
    //Углы при повороте
    const int Angle_Right = 139;
    const int Angle_Left = 1;

    //Пины моторчика
    const int dcMotorA1Pin = 11; //

    //Пины лампочек
    const int аPinLight1 = 1; //Передняя правая
    const int аPinLight2 = 2; //Задняя правая
    const int аPinLight3 = 3; //Передняя левая
    const int аPinLight4 = 4; //Задняя левая
    //Переменные для режима движения
    boolean Emergency = false; //Аварийка
    boolean Headlights = false; //Передние фары
    boolean Backlights = false; //Передние фары
    boolean TurnLeft = false; //Поворот на лево
    boolean TurnRight = false; //Поворот на лево
    boolean TurnBack = false; //Езда назад
    //Состояние лампочек и последнее включение
    int LedState1 = false; // 1 - этой переменной устанавливаем состояние светодиода
    int LedState2 = false; // 2 - этой переменной устанавливаем состояние светодиода
    int LedState3 = false; // 3 - этой переменной устанавливаем состояние светодиода
    int LedState4 = false; // 4 - этой переменной устанавливаем состояние светодиода

    //Интервал
    long interval = 400; // интервал между включение/выключением светодиода (1 секунда)
    long previousMillis = 0; // храним время последнего переключения светодиода
    // Создаем переменную для команд Bluetooth
    char vcmd;

    //Создаем переменную для скорости моторчиков
    int vspd = 255;
    //Переменная для включения функций работы
    boolean BlueToothON = false;
    //////////////////////////////
    //настройки при нажатии кнопки сброс
    void setup() {
    //Инициализация экрана
    Serial.begin(9600);
    // Устанавливаем скорость передачи данных по Bluetooth
    BlueTooth.begin(9600);
    //Включаем мотор
    pinMode(dcMotorA1Pin, OUTPUT);

    //Устанавливаем максимальную скорость
    digitalWrite(dcMotorA1Pin, vspd);
    //Инициализация пинов лампочек
    pinMode(аPinLight1, OUTPUT);
    pinMode(аPinLight2, OUTPUT);
    pinMode(аPinLight3, OUTPUT);
    pinMode(аPinLight4, OUTPUT);

    }
    //Повторяющаяся функция
    void loop() {
    // Если есть данные
    if (BlueTooth.available())
    {
    // if (BlueToothON == false)
    // {
    //Включаем питание
    RUN_CAR();
    // }
    //Считывание данных, получаем символы
    vcmd = BlueTooth.read();
    //Показываем символ для отладки
    Serial.println(vcmd);
    //////////////////////////
    //////////////////////////
    //Поворот налево
    if (vcmd == 'L')
    {
    RotateServoToAngle(Angle_Left);
    }
    //Поворот направо
    if (vcmd == 'R')
    {
    RotateServoToAngle(Angle_Right);
    }
    //Ехать вперед
    if (vcmd == 'F')
    {
    RotateServoToAngle(Angle_Centr);
    Engine_FBS(1);
    }
    //Ехать назад
    if (vcmd == 'B')
    {
    RotateServoToAngle(Angle_Centr);
    Engine_FBS(2);
    digitalWrite(аPinLight2, HIGH);
    digitalWrite(аPinLight4, HIGH);
    }
    //Остановка
    if (vcmd == 'S')
    {
    RotateServoToAngle(Angle_Centr);
    Engine_FBS(3);
    digitalWrite(аPinLight2, LOW);
    digitalWrite(аPinLight4, LOW);
    }
    //ПОВОРОТЫ КОЛЕСАМИ ПЕРЕДНИМИ
    // Поворот колес налево
    if (vcmd == 'H' || vcmd == 'G')
    {
    RotateServoToAngle(Angle_Left);
    }
    //Поворот колес направо
    else if (vcmd == 'J' || vcmd == 'I')
    {
    RotateServoToAngle(Angle_Right);
    }
    //ДВИЖЕНИЯ МОТОРЧИКА
    //Движение назад
    if (vcmd == 'H' || vcmd == 'J')
    {
    Engine_FBS(2);
    }
    //Движение вперед
    else if (vcmd == 'G' || vcmd == 'I')
    {
    Engine_FBS(1);
    }
    //УПРАВЛЕНИЕ СКОРОСТБЬЮ
    // Скорость 0%
    if (vcmd == '0')
    {
    SetupSpeed(205);
    }
    // Скорость 10%
    else if (vcmd == '1')
    {
    SetupSpeed(210);
    }
    // Скорость 20%
    else if (vcmd == '2')
    {
    SetupSpeed(215);
    }
    // Скорость 30%
    else if (vcmd == '3')
    {
    SetupSpeed(220);
    }
    // Скорость 40%
    else if (vcmd == '4')
    {
    SetupSpeed(225);
    }
    // Скорость 50%
    else if (vcmd == '5')
    {
    SetupSpeed(230);
    }
    // Скорость 60%
    else if (vcmd == '6')
    {
    SetupSpeed(235);
    }
    // Скорость 70%
    else if (vcmd == '7')
    {
    SetupSpeed(240);
    }
    // Скорость 80%
    else if (vcmd == '8')
    {
    SetupSpeed(245);
    }
    // Скорость 90%
    else if (vcmd == '9')
    {
    SetupSpeed(250);
    }
    // Скорость 100%
    else if (vcmd == 'q')
    {
    SetupSpeed(255);
    }
    //////////////////////////
    // НАПРАВЛЕНИЕ ДВИЖЕНИЯ //
    //////////////////////////
    //Последнее направление: лево, право, назад
    //Движения влево
    if (vcmd == 'L')// || vcmd == 'H' || vcmd == 'G')
    {
    TurnLeft = true;
    TurnRight = false;
    }
    //Движения вправо
    else if (vcmd == 'R')// || vcmd == 'J' || vcmd == 'I')
    {
    TurnLeft = false;
    TurnRight = true;
    }
    //остановка
    else if (vcmd == 'S')
    {
    TurnLeft = false;
    TurnRight = false;
    TurnBack = false;
    //Проверка на сигналку
    if (Emergency == false)
    {
    LedState1 = false;
    LedState2 = LedState1;
    LedState3 = LedState1;
    LedState4 = LedState1;
    }
    }
    //Аварийка вкл
    else if (vcmd == 'X')
    {
    Emergency = true;
    }
    //Аварийка выкл
    else if (vcmd == 'x')
    {
    Emergency = false;
    if (Headlights == false)
    {
    LedState1 = false;
    LedState3 = false;
    }
    if (Backlights == false && TurnBack == false)
    {
    LedState2 = false;
    LedState4 = false;
    }
    }
    //Фары вкл
    else if (vcmd == 'W')
    {
    Headlights = true;
    }
    //Фары выкл
    else if (vcmd == 'w')
    {
    Headlights = false;
    if (Emergency == false)
    {
    LedState1 = false;
    LedState3 = false;
    }
    }
    //Едем назад
    else if (vcmd == 'B')
    {
    TurnBack = true;
    }
    //Задние фары
    else if (vcmd == 'U')
    {
    Backlights = true;
    }
    //Аварийка вкл
    else if (vcmd == 'u')
    {
    Backlights = false;
    if (Emergency == false)
    {
    LedState2 = false;
    LedState4 = false;
    }
    }
    }

    //Текущие милисекунды
    unsigned long currentMillis = millis();

    if (currentMillis - previousMillis >= interval)
    {
    //Мигание аварийкой
    if (Emergency == true)
    {
    LedState1 = !LedState1;
    LedState2 = LedState1;
    LedState3 = LedState1;
    LedState4 = LedState1;
    }
    else if (TurnRight == true)
    {
    LedState1 = !LedState1;
    LedState2 = LedState1;
    }
    else if (TurnLeft == true)
    {
    LedState3 = !LedState3;
    LedState4 = LedState3;
    }
    previousMillis = currentMillis;
    }

    //Проверка на передние фары
    if (Headlights == true && Emergency == false)
    {
    if (TurnLeft == false)
    {
    LedState3 = true;
    }
    if (TurnRight == false)
    {
    LedState1 = true;
    }
    }

    //Проверка на задние фары
    if ((Backlights == true || TurnBack == true) && Emergency == false)
    {
    if (TurnLeft == false)
    {
    LedState4 = true;
    }
    if (TurnRight == false)
    {
    LedState2 = true;
    }
    }

    //Проверка на лампочки отображение
    if (LedState1 == true)
    {
    digitalWrite(аPinLight1, HIGH);
    }
    else
    {
    digitalWrite(аPinLight1,LOW);
    }

    //Проверка на лампочки отображение
    if (LedState2 == true)
    {
    digitalWrite(аPinLight2, HIGH);
    }
    else
    {
    digitalWrite(аPinLight2,LOW);
    }
    //Проверка на лампочки отображение
    if (LedState3 == true)
    {
    digitalWrite(аPinLight3, HIGH);
    }
    else
    {
    digitalWrite(аPinLight3,LOW);
    }
    //Проверка на лампочки отображение
    if (LedState4 == true)
    {
    digitalWrite(аPinLight4, HIGH);
    }
    else
    {
    digitalWrite(аPinLight4,LOW);
    }
    //Дополнительные команды
    //V – звуковой сигнал включен
    //v – звуковой сигнал выключен
    // else if (BlueToothON == true)
    // {
    // STOP_CAR();
    // }
    }
    void RotateServoToAngle(int Angle)
    {
    // Servo_Rotation.write(Angle);
    myservo.write(Angle); // tell servo to go to position in variable 'pos'

    }
    //Управление направлением движения мотрчика
    void Engine_FBS(int Select)
    {
    //Режим вперед
    if (Select == 1)
    {
    digitalWrite(dcMotorA1Pin, LOW);
    }
    //Режим назад
    if (Select == 2)
    {
    digitalWrite(dcMotorA1Pin, HIGH);
    }
    //Режим остановки
    if (Select == 3)
    {
    digitalWrite(dcMotorA1Pin, LOW);
    }
    }

    void SetupSpeed(int Speed)
    {
    if (vspd != Speed)
    {
    //Устанавливаем в переменную, если мы не меняем ее
    vspd = Speed;
    }
    //Изменяем скорость
    digitalWrite(dcMotorA1Pin, Speed);
    }

    void RUN_CAR()
    {
    //Подключаем серво
    myservo.attach(dcMotorA1Pin);

    //Устнавливаем начальное положение
    RotateServoToAngle(Angle_Centr);
    BlueToothON = true;
    }

    void STOP_CAR()
    {
    //Отключаем серво
    myservo.detach();

    BlueToothON = false;
    }
     
  2. geher

    geher Гуру

    1. А можно точный текст сообщения об ошибке с номером строки?
    2. Чтобы можно было лучше разобраться в коде, желательно использовать теги CODE и /CODE (поместив их в квадратные скобки) для обрамления программы или специальную кнопку на странице, на которой (кнопке) угловые скобки на листке с хинтом (высвечивающейся при наведении мыши надписью) "код". Причем перед вставкой очень желательно оформить код с отступами.