Сообщение об ошибке: "expected initializer before 'digitalWrite'"
Должен отметить, что я не писал этот код, а взял его с ЗДЕСЬ.
#include<Servo.h>
Servo myservo; // создаем сервообъект
int redled=13; // объявляем контакты
int greenled=12;
int servopin=9;
int trigpin=6;
int echopin=5;
float distance;
float duration;
int datapin=7;
int clockpin=8;
int latchpin=3;
void setup(){
Serial.begin(9600);
pinMode(redled,OUTPUT); // объявляем пин-режим
pinMode(greenled,OUTPUT);
pinMode(servopin,OUTPUT);
pinMode(trigpin,OUTPUT);
pinMode(echopin,INPUT);
pinMode(datapin,OUTPUT);
pinMode(clockpin,OUTPUT);
pinMode(latchpin,OUTPUT);
myservo.attach(servopin); // объявляем, что объект сервопривода подключен к выводу сервопривода
}
int ping() // создаем функцию {
digitalWrite(trigpin,LOW);
delayMicroseconds(10);
digitalWrite(trigpin,HIGH);
delayMicroseconds(20);
digitalWrite(trigpin,LOW);
duration= pulseIn(echopin,HIGH);
distance= duration*0.034/2; // расстояние в см
return(distance);
}
void loop() {
myservo.write(90); // устанавливаем сервопривод под углом 90 градусов
float value;
value=ping(); // вызываем функцию ping
Serial.println(value);
delay(100);
if(value>20) {
digitalWrite(redled,LOW);
digitalWrite(greenled,HIGH);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B01010000); // двигаем машину вперед
digitalWrite(latchpin,HIGH);
}
if(value<20&& value>15) {
digitalWrite(redled,HIGH);
digitalWrite(greenled,HIGH);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B01010000);
digitalWrite(latchpin,HIGH);
}
if(value<15) {
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B00000000); // Останови машину
digitalWrite(latchpin,HIGH);
delay(1000);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B00101000); // сначала возвращаем робот-машину
digitalWrite(latchpin,HIGH);
delay(1000);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B00000000); // затем снова стоп
digitalWrite(latchpin,HIGH);
delay(100);
go(); // вызываем функцию go
delay(2000);
}
myservo.write(90);
}
void go() {
int a;
int b;
myservo.write(0);
delay(1000);
a=ping();
myservo.write(180);
delay(1000);
b=ping();
if(a>b) {
digitalWrite(redled,HIGH);
digitalWrite(greenled,LOW);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B00010000); // переходим в правую сторону
digitalWrite(latchpin,HIGH);
} else if(a<b) {
digitalWrite(redled,HIGH);
digitalWrite(greenled,LOW);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B01000000); // переходим в левую сторону
digitalWrite(latchpin,HIGH);
} else if(a=b) {
digitalWrite(redled,HIGH);
digitalWrite(greenled,LOW);
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B00101000); // сначала возвращаем робот-машину
digitalWrite(latchpin,HIGH);
delay(4000); // ждем 4 секунды
digitalWrite(latchpin,LOW);
shiftOut(datapin,clockpin,LSBFIRST,B01000000); // затем двигаемся в правильном направлении
digitalWrite(latchpin,HIGH);
delay(2000);
}
}
Полная ошибка:
sketch_may02a:31:3: error: expected initializer before 'digitalWrite'
digitalWrite(trigpin,LOW);
^
sketch_may02a:32:20: error: expected constructor, destructor, or type conversion before '(' token
delayMicroseconds(10);
^
sketch_may02a:34:15: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite(trigpin,HIGH);
^
sketch_may02a:35:20: error: expected constructor, destructor, or type conversion before '(' token
delayMicroseconds(20);
^
sketch_may02a:36:15: error: expected constructor, destructor, or type conversion before '(' token
digitalWrite(trigpin,LOW);
^
sketch_may02a:38:3: error: 'duration' does not name a type
duration= pulseIn(echopin,HIGH);
^
sketch_may02a:39:3: error: 'distance' does not name a type
distance= duration*0.034/2; // distance is in cm
^
sketch_may02a:40:3: error: expected unqualified-id before 'return'
return(distance);
^
sketch_may02a:41:3: error: expected declaration before '}' token
}
^
exit status 1
expected initializer before 'digitalWrite'
@Duino Dude, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 5
Начинается определение функции:
int ping() // создаем функцию {
Обратите внимание, что комментарий вставляется перед открывающей фигурной скобкой. Это означает, что фигурная скобка закомментирована. Переместите комментарий в конец строки или переместите фигурную скобку на отдельную строку.
,
@jose can u c
Хороший улов. Я посмотрел на этот код и увидел то, что ожидал увидеть, а не то, что там. (проголосовали), @Duncan C
Смотрите также:
- Как использовать SPI на Arduino?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
- Как повторить кусок кода
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Отображение двоичных данных на светодиодах
- Корпус кнопки и переключателя
Кроме того, почему ваша функция ping объявлена с возвращаемым типом int? Похоже, вы намеревались вернуть значение float. Хотя в своем коде вы постоянно ходите туда-сюда по этому поводу., @AnT
**примечание:** у вас есть повторяющийся код в блоках
if
функцииgo()
..... первые три строки каждого блокаif
одинаковы.... переместите эти три строки в перед первым оператором if и удалите их из трех блоков if., @jsotola