#1 2018-11-09 13:52:55

Бодя96
Участник
Зарегистрирован: 2018-10-28
Сообщений: 16

Допоможіть розібратися в чому причина помилки

expected '}' at end of input    в void loop до if(incomingByte == '0') закриваючої його (if) фігурної скобки

#include <Servo.h>
#include <SoftwareSerial.h>
byte incomingByte;  // входящие данные
SoftwareSerial mySerial(11, 10); // RX, TX
#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;
VL53L0X sensor2;
int IN1  = 5;
int IN2  = 4;
int IN3  = 3;
int IN4  = 2;
int Servopin = 8;
Servo Servo1;
#define Car_Joystick
//#define LONG_RANGE

void setup()
{
 pinMode(IN1, OUTPUT); 
 pinMode(IN2, OUTPUT); 
  pinMode(IN3, OUTPUT); 
 pinMode(IN4, OUTPUT);
 Servo1.attach(Servopin);
 Serial.begin(9600);
 Servo1.write(60);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
   Serial.println("Hi Max!");
 mySerial.begin(9600);
 mySerial.println("Hello, Bogdan");

 #if defined LONG_RANGE
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);

  delay(500);
  Wire.begin();


  Serial.begin (9600);

  pinMode(6, INPUT);
  delay(150);
  mySerial.println("00");
  sensor.init(true);


 mySerial.println("01");
  delay(100);
sensor.setAddress((uint8_t)22);
  Serial.println("02");
  

  pinMode(7, INPUT);
    delay(150);
  sensor2.init(true);
  mySerial.println("03");
  delay(100);
  sensor2.setAddress((uint8_t)25);
  mySerial.println("04");
  Serial.println("addresses set");
  
  sensor.setSignalRateLimit(0.1);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);

  sensor2.setSignalRateLimit(0.1);
  sensor2.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor2.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
#endif
 } 
 
void loop()
{
 #if defined Car_Joystick
 if (mySerial.available() > 0) {  //если пришли данные
    incomingByte = mySerial.read(); // считываем байт
    if(incomingByte == '1') {
       digitalWrite(IN1, HIGH);  // Задаем направление вращения
       digitalWrite(IN2, LOW);       // Задаем скорость вращения
      Servo1.write(60);
       mySerial.println("Go forward");
    }

   if(incomingByte == '2') {
   
       digitalWrite(IN1, LOW); // если 0, то включаем LED
       digitalWrite(IN2, HIGH);       // Задаем скорость вращения
       Servo1.write(60);
       mySerial.println("Go back");
    }
if(incomingByte == '3') {
   
       digitalWrite(IN3, HIGH); // если 0, то включаем LED
       digitalWrite(IN4, LOW);       // Задаем скорость вращения
       Servo1.write(15);
       mySerial.println("Go left");
    }
  if(incomingByte == '4') {
   
       digitalWrite(IN1, LOW); // если 0, то включаем LED
       digitalWrite(IN2, HIGH);  
       delay(2000);// Задаем скорость вращения
       Servo1.write(105);
       mySerial.println("Go right");
    }  
 if(incomingByte == '0') {
       digitalWrite(IN1, LOW); // если 0, то включаем LED
       digitalWrite(IN2, LOW);       // Задаем скорость вращения
       Servo1.write(60);
       Serial.println("STOP!");  // и выводим обратно сообщение
 }    } 


#elif defined LONG_RANGE
Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;


  for (byte i = 1; i < 60; i++)
  {

    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
    {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
    } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");

  break;
  if (mySerial.available() > 0) {  //если пришли данные
    incomingByte = mySerial.read(); // считываем байт
    if(incomingByte == '9') {

  
     mySerial.print("1s"sensor.readRangeSingleMillimeters());
  if (sensor.timeoutOccurred()) { mySerial.print(" TIMEOUT");}
  mySerial.println();
   mySerial.print("2s"sensor2.readRangeSingleMillimeters());
  if (sensor2.timeoutOccurred()) { mySerial.print(" TIMEOUT");}
  mySerial.println();
  
       
    }

}
#endif}

#2 2018-11-09 14:08:24

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 507

Re: Допоможіть розібратися в чому причина помилки

нет закрывающей скобки

#3 2018-11-09 14:15:10

Бодя96
Участник
Зарегистрирован: 2018-10-28
Сообщений: 16

Re: Допоможіть розібратися в чому причина помилки

там є 1) закриває if (incomingByte == '0')
2) закриває if (mySerial.available() > 0)

а void loop() закривається пізніше, я натиснув ctrl+t і помилка висвічується вже перед 2) закриваючою дужкою

#4 2018-11-09 22:18:11

MikeM
Участник
Зарегистрирован: 2017-11-03
Сообщений: 27

Re: Допоможіть розібратися в чому причина помилки

Баланс скобок выполняется. У меня компилируется после комментирования строк:

//#include <VL53L0X.h>

//VL53L0X sensor;
//VL53L0X sensor2;

Без их комментирования компилятор к ним придирается.
Правда, разбираясь со скобками, поменял отступы, убрал и добавил пару-тройку Enter

#5 2018-11-10 14:21:11

Бодя96
Участник
Зарегистрирован: 2018-10-28
Сообщений: 16

Re: Допоможіть розібратися в чому причина помилки

Привіт, там ці бібліотеки зчитуються просто я зробив дурню і не скинув папку з всіма бібліотеками тому й помилка в VL53L0X зараз скину посилання https://drive.google.com/open?id=10kRBt3tkmFXO1bOK7RvC_-tbxvJnIiiD  папка examples\Final\Final.ino

Редактировался Бодя96 (2018-11-10 15:04:56)

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела