В чём ошибка?
- Войдите на сайт для отправки комментариев
Пт, 15/02/2019 - 18:03
Ошибка ------ a function-definition is not allowed here before '{' token
Выделяет строчку Void loop() {
Как решить ошибку?
код
//Глаза //Левый #define left_trig 2;//левый выход #define left_echo 3;//левый вход //Правый #define right_trig 4;//правый выход #define right_echo 5;//правый вход //Двигатель //Левый #define ENA 6 #define IN1 7 #define IN2 8 //Правый #define ENB 9 #define IN3 10 #define IN4 11 //переменные для расчётов unsigned int impulseTime_left=0;//Имульс левого глаза unsigned int impulseTime_right=0;//Импульс правого глаза unsigned int distance_left_cm=0;//дистанция с левого глаза unsigned int distance_right_cm=0;//дистанция с правого глаза unsigned int cm1=0; unsigned int cm2=0; unsigned int obo=73; void setup() { //Назначение пинов pinMode(2,OUTPUT);//левый выход pinMode(4,OUTPUT);//правый выход pinMode(3,INPUT);//левый вход pinMode(5,INPUT);//правый вход pinMode(6,OUTPUT);//обороты левого pinMode(9,OUTPUT);//обороты правого pinMode(7,OUTPUT);//двигатель pinMode(8,OUTPUT);//двигатель pinMode(10,OUTPUT);//двигатель pinMode(11,OUTPUT);//двигатель Serial.begin(9600); } void w(){ //вперёд digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(10, HIGH); digitalWrite(11, LOW); analogWrite(6, obo); analogWrite(9, obo); } void a(){ //налево digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(10, LOW); digitalWrite(11, HIGH); analogWrite(6, obo); analogWrite(9, obo); } void d(){ //направо digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(10, HIGH); digitalWrite(11, LOW); analogWrite(6, obo); analogWrite(9, obo); } void s(){ digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(10, LOW); digitalWrite(11, HIGH); analogWrite(6, obo); analogWrite(9, obo); } void az(){ digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(10, LOW); digitalWrite(11, HIGH); analogWrite(6, obo); analogWrite(9, obo); delay(3000); } void dz(){ digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(10, HIGH); digitalWrite(11, LOW); analogWrite(6, obo); analogWrite(9, obo); delay(3000); } void z(){ {if (random(0,100)%2 ) {az();} else{dz();} } //Бесконечный цикл void loop() { //Глаза смотрят/проверяют //Левый глаз digitalWrite(2, LOW); delayMicroseconds(2); digitalWrite(2, HIGH); delayMicroseconds(10); digitalWrite(2, LOW); impulseTime_left=pulseIn(3, HIGH);//приёмник вкл distance_left_cm=impulseTime_left/58; //перевод дистаниции в см cm1=distance_left_cm; delay(100);// минус помехи delay(200);//на всякий случай digitalWrite(4, LOW); delayMicroseconds(2); digitalWrite(4, HIGH); delayMicroseconds(10); digitalWrite(4, LOW); impulseTime_right=pulseIn(5, HIGH);//приёмник вкл distance_right_cm=impulseTime_right/58; //перевод дистаниции в см cm2=distance_right_cm; if (cm1 >= 200){cm1 = 0;} delay(100);//минус помехи Serial.println(cm1); Serial.println(cm2); //Направление движения if (cm1 >= 25 && cm1 < 200 && cm2 >= 25){w();} if (cm1 < 20 && cm2 < 20){s();} if (cm1 > 20 && cm1 < 25){z();} if (cm2 > 20 && cm2 < 25){z();} }
Фигурные скобки считайте {}. В 92-й строке перед if лишняя наверное.
если аглицкого не знаете, то воспользоваться переводчиком и узнать что за ошибка.
а переводчик вам скажет , что у вас в коде проблемка со скобками.
пройдитесь по коду и проверьте - открывающих и закрывающих должно быть одинаковое число.
King_Sombr,
Есть такая волшебная комбинация клавиш - Ctrl+T
Она полезна всегда. Например, если Вы собрались вставить код на форум, то воспользоваться ею - это просто вежливость - людям так легче читать.
Но, главное, что если ею пользоваться, то некоторые ошибки (типа Вашей нынешней) проявляются сразу. Вот я применил эти клавиши, посмотрите на код. Ошибка совершенно очевидна.
И, да, впредь всегда копипастите сообщения об ошиках целиком. В нём, например, был номер строки, а Вы выложили без него. Зачем? Чтонам сложности создать?
Есть такая волшебная комбинация клавиш - Ctrl+T
Но, главное, что если ею пользоваться, то некоторые ошибки (типа Вашей нынешней) проявляются сразу. Вот я применил эти клавиши, посмотрите на код. Ошибка совершенно очевидна.
Ууууу, хитренький. Я ее в таком ракурсе и не рассматривал. Спасибо.))))
if (cm2 > 20 && cm2 < 25){z();}
Просто маленький совет. Чтоб не плодить лишние скобки в коде и не путаться в них, если после IF идет простое действие в одну строчку, то скобки не нуны.
if
(cm2 > 20 && cm2 < 25)z();
мне так удобнее.