Помогите со скетчем пожалуйста!

Тема в разделе "Arduino & Shields", создана пользователем Yaroduino, 9 июн 2019.

Метки:
  1. Yaroduino

    Yaroduino Нерд

    Код (C++):
    #include <Servo.h>


    #define LED 11
    #define LEFT_MOTOR_SPEED 5 //порт(шим) управления скоростью левого двигателя
    #define RIGHT_MOTOR_SPEED 6 //порт(шим) управления скоростью правого двигателя
    #define LEFT_MOTOR_CONTROL_1 2 //порты управления левым двигателем
    #define LEFT_MOTOR_CONTROL_2 4
    #define RIGHT_MOTOR_CONTROL_1 7 //порты управления правым двигателем
    #define RIGHT_MOTOR_CONTROL_2 8
    #define SERVO_CONTROL 10 //порт управления сервомашинкой


    #include <NewPing.h>

    #define PIN_TRIG 8
    #define PIN_ECHO 9

    #define MAX_DISTANCE 200
    NewPing sonar(PIN_TRIG, PIN_ECHO, MAX_DISTANCE);




    Servo servo;




    void LeftMotorForward() { //функция движения вперед левого двигателя

      digitalWrite(LEFT_MOTOR_CONTROL_1, HIGH);
      digitalWrite(LEFT_MOTOR_CONTROL_2, LOW);
    }

    void LeftMotorBackward() //функция движения назад левого двигателя
    {
      digitalWrite(LEFT_MOTOR_CONTROL_1, LOW);
      digitalWrite(LEFT_MOTOR_CONTROL_2, HIGH);
    }

    void RightMotorForward() //функция движения вперед правого двигателя
    {
      digitalWrite(RIGHT_MOTOR_CONTROL_1, LOW);
      digitalWrite(RIGHT_MOTOR_CONTROL_2, HIGH);
    }

    void RightMotorBackward() //функция движения назад правого двигателя
    {
      digitalWrite(RIGHT_MOTOR_CONTROL_1, HIGH);
      digitalWrite(RIGHT_MOTOR_CONTROL_2, LOW);
    }



    void Reverse() //функция движения робота назад
    {
      RightMotorBackward();
      LeftMotorBackward();

    }

    void RotateRight() //функция вращения робота направо
    {
      LeftMotorForward();
      RightMotorBackward();
    }

    void RotateLeft() //функция вращения робота налево
    {
      RightMotorForward();
      LeftMotorBackward();
    }



    void Run() //фукнция движения робота вперед
    {
      RightMotorForward();
      LeftMotorForward();
    }
    void Stop() //функция движения назад правого двигателя
    {
      digitalWrite(RIGHT_MOTOR_CONTROL_1, LOW);
      digitalWrite(RIGHT_MOTOR_CONTROL_2, LOW);
      digitalWrite(LEFT_MOTOR_CONTROL_1, LOW);
      digitalWrite(LEFT_MOTOR_CONTROL_2, LOW);
    }
    void setup()
    {
      Serial.begin(9600);

      servo.attach(SERVO_CONTROL);
      servo.write(90);
      pinMode(LEFT_MOTOR_CONTROL_1, OUTPUT);
      pinMode(LEFT_MOTOR_CONTROL_2, OUTPUT);
      pinMode(LEFT_MOTOR_SPEED, OUTPUT);

      pinMode(RIGHT_MOTOR_CONTROL_1, OUTPUT);
      pinMode(RIGHT_MOTOR_CONTROL_2, OUTPUT);
      pinMode(RIGHT_MOTOR_SPEED, OUTPUT);


      pinMode(LED, OUTPUT);
      digitalWrite(LED, LOW);

    }

    void loop()
    {

      delay(50);

      unsigned int distance = sonar.ping_cm();



    if (distance < 10){
        RotateLeft();
    delay(1000);
    Run();  {

    if (distance < 10){

    Run();  {
    }

    }
     
    пишет
    exit status 1
    expected '}' at end of input
    что тут не так?
     
    Последнее редактирование: 17 июн 2019
  2. ИгорьК

    ИгорьК Гуру

    [​IMG]
     
    Tomasina, Daniil, DetSimen и ещё 1-му нравится это.
  3. Airbus

    Airbus Радиохулиган Модератор

    Пишет скопипасти правильно-не хватает одной скобки } в начале или скорее всего в конце.
     
    Yaroduino, NikitOS и Andrey12 нравится это.
  4. Yaroduino

    Yaroduino Нерд

    спасибо
     
  5. Yaroduino

    Yaroduino Нерд

    а еще вопрос,
    версия 1 8 5


    Код (C++):
    #include <Wire.h>                  // подключаем библиотеку I2C
    #include <LiquidCrystal_I2C.h>     // подключаем библиотеку дисплея
    LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем какой дисплей
    void setup()
    {
      lcd.init();                      // инициализируем дисплей              
      lcd.backlight();                 // Включаем подсветку дисплея
      lcd.setCursor(0, 0);             // переходим на позицию - первый ноль это позиция символа
                                       // второй ноль это позиция строки
                                       // т.е. первый ноль - переходим на первый символ
                                       // второй ноль - переходим на первую строку
     
      lcd.print("Hello World");        // выводим надпись "Hello World"
      lcd.setCursor(0, 1);             // переходим на позицию - первый ноль это позиция символа
                                       // вторая единица это позиция строки
                                       // т.е. первый ноль - переходим на первый символ
                                       // вторая единица - переходим на вторую строку
      lcd.print("LCD 1602");           // выводим надпись "LCD 1602"
    }
    void loop()
    {
                                       // в этом простом примере в loop ничего ненужно
    }
    пишет
    exit status 1
    'class LiquidCrystal_I2C' has no member named 'init'
    хотя библиотека есть
    нашел код в инете так как первый раз с 1602 работаю
     
  6. b707

    b707 Гуру

    Потому что коды надо не в инете искать, а писать самому.

    по делу - пишет что в библиотеке LiquidCrystal_I2C нет метода 'init' - то есть либо библиотека не та, либо код с ошибкой
     
    Последнее редактирование: 17 июн 2019
    NikitOS и Yaroduino нравится это.
  7. Yaroduino

    Yaroduino Нерд

    спасибо попробую переустановить библиотеку
     
  8. b707

    b707 Гуру

    смысла переустанавливать эту же самую библиотеку нет - либо ищите другую с таким же названием, либо разбирайтесь в программе и переписывайте код под ту. что есть. Второе предпочтительнее.
     
  9. Asper Daffy

    Asper Daffy Иксперд

    Они (LiquidCrystal_I2C) бывают разные. В одних init, а в других begin. Найдёшь, смотри какая попалась и ставь ту, где init есть.
     
    Yaroduino нравится это.
  10. Yaroduino

    Yaroduino Нерд

    спасибо огромное все работает я поменял на бегин
     
  11. NikitOS

    NikitOS Король шутов Администратор

    А может лучше писать код самому, а не копировать с интернета?:)