Ошибка 'digitalWrite' cannot be used as a function
Никак не получается исправить все ошибки, может кто может помочь?
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
//Пины для подключения сервоприводов
const int pinServo1 = 4;
const int pinServo2 = 5;
const int pinServo3 = 6;
const int pinServo4 = 7;
//Пины для подключения управления сервоприводами
#define Port1 A11
#define Port2 A12
#define Port3 A13
#define Port4 A14
//Объявление переменных для работы с сервоприводами
int data1,data2,data3,data4;
int angleServo1 = 0;
int angleServo2 = 0;
int angleServo3 = 0;
int angleServo4 = 0;
//Пин с пищалкой
#define buzzer_pin 12
//Пины для подключения УЗ-дальномера
#define echoPin 2
#define trigPin 3
#define button_pin 15
//Переменная для хранения скорости
//вращения двигателя постоянного тока
int movspeed;
//Пин для подключения регулятора скорости
#define pot_pin A10
//Переменная для хранения
//значений потенциометра
int analog_data;
//Пины с кнопками старта и паузы программы
#define start_button_pin 35
#define pause_button_pin 35
//M1_Speed управляет скоростью вращения первого двигателя
//M1_dir управляет направлением вращения двигателя
//M2_Speed M2_dir вторым даигателем соответственно
#define M1_dir 45
#define M1_Speed 44
#define M2_dir 47
#define M2_Speed 46
void setup(){
//Объявление пинов, работающих на выход
pinMode(button_pin, INPUT);
pinMode(buzzer_pin, OUTPUT);
pinMode( trigPin, OUTPUT);
pinMode( echoPin, INPUT);
pinMode(M1_dir,OUTPUT);
pinMode(M1_Speed,OUTPUT);
pinMode(M2_dir, OUTPUT);
pinMode(M2_Speed,OUTPUT);
//Инициализация сервоприводов
servo1.attach(pinServo1);
servo2.attach(pinServo2);
servo3.attach(pinServo3);
servo4.attach(pinServo4);
//Цикл, считывающий состояние кнопки start
// и прерывающийся, если значение кнопки равно HIGH
while(digitalRead(start_button_pin) == LOW){}
}
void loop(){
//Объявление вспомогательных переменных
int duration, cm;
int pulseln,
//Установка низкого уровня на trigPin для увеличения точности
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//Отправка высокого уровня на trigPin в течение 10 миллисекунд
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
//Приём отражённого сигнала на echoPin
duration = pulseln(echoPin, HIGH);
//Пересчёт полученных данных в сантиметры
cm = duration / 58;
//Считывание показаний потенциометра для установки скорости
analog_data = analogRead ( pot_pin);
//Считывание показаний регуляторов для управления
//сервоприводами
data1 = analogRead(Pot1);
data2 = analogRead(Pot2);
data3 = analogRead(Pot3);
data4 = analogRead(Pot4);
//Масштабирование данных с потенциометра в диапазон от 0 до 255
movspeed = map ( analog_data, 0, 1023, 0, 250);
//Масштабирование значений регуляторов к интервалу 0-180
angleServo1=map(data1, 0, 1023, 0, 180);
angleServo2=map(data2, 0, 1023, 0, 180);
angleServo3=map(data3, 0, 1023, 0, 180);
angleServo4=map(data4, 0, 1023, 0, 180);
//Поворот сервоприводов на полученные углы
servo1.write(angleServo1);
servo2.write(angleServo2);
servo3.write(angleServo3);
servo4.write(angleServo4);
//Запуск функции движения вперёд
fwd();
//Если расстояние до препятствия меньше 15 см, то срабатывает
//условие
if( cm < 15){
//Остановка платформы
stp();
//Включение звукового сигнала на 100 миллисекунд
tone (buzzer_pin ,4000,100);
//Запуск функции движения назад на 3 секунды
bwd();
delay(3000);
//Поворот платформы влево в течение 1 секунды
lft();
delay(1000);
//Остановка платформы
stp();
}
}
//Функция движения вперёд
void fwd(){
//Установка скорости движения первого двигателя
analogWrite(M1_Speed, movspeed);
//Установка направления движения второго двигателя
digitalWrite(M2_dir, LOW);
//Установка скорости движения второго двигателя
analogWrite(M2_Speed, movspeed);
}
//Функция движения назад
void bwd(){
//Установка направления движения первого двигателя
digitalWrite(M1_dir, HIGH);
//Установка скорости движения первого двигателя
analogwrite(M1_Speed, movspeed);
//Установка направления движения второго двигателя
digitalWrite(M2_dir, HIGH);
//Установка скорости движения второго двигателя
analogWrite(M2_Speed, movspeed);
}
//Функция поворота влево
void lft(){
//Установка направления движения первого двигателя
digitalWrite(M1_dir, LOW);
//Установка скорости движения первого двигателя
analogWrite(M1_Speed, movspeed);
//Установка направления движения второго двигателя
digitalWrite(M2_dir, HIGH);
//Установка скорости движения второго двигателя
analogWrite(M2_Speed, movspeed);
}
//Функция движения направо
void rgt(){
//Установка направления движения первого двигателя
digitalWrite(M1_dir, HIGH);
//Установка скорости движения первого двигателя
analogWrite(M1_Speed, movspeed);
//Установка направления движения второго двигателя
digitalWrite(M2_dir, LOW);
//Установка скорости движения второго двигателя
analogWrite(M2-Speed, movspeed);
}
//Функция остановки платформы
void stp(){
//Установка направления движения первого двигателя
digitalWrite(M1_dir, HIGH);
//Установка скорости движения первого двигателя
analogWrite(M1_Speed, 0);
//Установка направления движения второго двигателя
digitalWrite(M2_dir, LOW);
//Установка скорости движения второго двигателя
analogWrite(M2_Speed, 0);
}
}
Ответы (1 шт):
Автор решения: Chorkov
→ Ссылка
Здесь:
int pulseln,
//Установка низкого уровня на trigPin для увеличения точности
digitalWrite(trigPin, LOW);
пропущена ; после объявления переменной. Поэтому, далее компилятор считает что объявлена переменная digitalWrite, а не функция.