Шилд L293D

Ivantankist
Offline
Зарегистрирован: 04.02.2021

Здравствуйте. Пожалуйста подскажите в чем проблема.
Имеется задача: необходимо осуществить управление 4 двигателей постоянного тока с 3 кнопок, через шилд L293D.

const int buttonPin1 = 32; 
const int ledPin1 =    33; 
const int buttonPin2 = 34; 
const int ledPin2 =    35; 
const int buttonPin3 = 36; 
const int ledPin3 =    37; 
#include <AFMotor.h>     
AF_DCMotor motor1(1); 
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
void setup() {
  pinMode(ledPin1, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(buttonPin3, INPUT);
  motor1.setSpeed(255); 
  motor1.run(RELEASE);   
  motor2.setSpeed(255); 
  motor2.run(RELEASE);   
  motor3.setSpeed(255); 
  motor3.run(RELEASE);   
  motor4.setSpeed(255); 
  motor4.run(RELEASE); 
}
void loop() {
  int buttonState1 = digitalRead(buttonPin1);
if (buttonState1 == HIGH) {    
  digitalWrite(ledPin1, HIGH);
  motor1.run(RELEASE);  
  motor2.run(RELEASE);  
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
 } 
else {   
  digitalWrite(ledPin1, LOW);
  motor1.run(FORWARD);  
  motor2.run(RELEASE); 
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
  motor1.setSpeed(255);  
  motor2.setSpeed(255);   
  motor1.setSpeed(255);   
  motor4.setSpeed(255);  
}
int buttonState2 = digitalRead(buttonPin2);
if (buttonState2 == HIGH); {    
  digitalWrite(ledPin2, HIGH);
  motor1.run(RELEASE);  
  motor2.run(RELEASE);  
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
 }  
 else {   
  digitalWrite(ledPin2, LOW);
  motor1.run(BACKWARD);  
  motor2.run(RELEASE); 
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
  motor1.setSpeed(255);  
  motor2.setSpeed(255);   
  motor1.setSpeed(255);   
  motor4.setSpeed(255);  
 }
 int buttonState3 = digitalRead(buttonPin3);
if (buttonState3 == HIGH) {    
  digitalWrite(ledPin3, HIGH);
  motor1.run(RELEASE);  
  motor2.run(RELEASE);  
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
 }  
else {   
  digitalWrite(ledPin3, LOW);
  motor1.run(RELEASE);  
  motor2.run(FORWARD); 
  motor3.run(FORWARD);  
  motor4.run(FORWARD);  
  motor1.setSpeed(255);  
  motor2.setSpeed(255);   
  motor1.setSpeed(255);   
  motor4.setSpeed(255);  
 }
}
При проверке данного кода, программа выдает ошибку "'else' without a previous 'if'"
Что делать?
 
 
sadman41
Offline
Зарегистрирован: 19.10.2016

Проблема в том, что правил форума не читаете. И то, что компилятор пишет - тоже. А он, между прочим, строку указывает, на которой ошибку нашел.

Ivantankist
Offline
Зарегистрирован: 04.02.2021

Сорян, за не чтение правил. Данный вопрос задать на форуме "Ишу исполнителя"? Ошибка в 56 строке

sadman41
Offline
Зарегистрирован: 19.10.2016

Значит смотрите в 56ю строку. В вашем коде нумерация отсутствует, а считать пальцем никто не будет.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Ошибку увидел, где не надо стоит ';'.
но сначала , все же, нужно выложить код как положено.

Ivantankist
Offline
Зарегистрирован: 04.02.2021
const int buttonPin1 = 32; 
const int ledPin1 =    33; 
const int buttonPin2 = 34; 
const int ledPin2 =    35; 
const int buttonPin3 = 36; 
const int ledPin3 =    37; 
#include <AFMotor.h>     
AF_DCMotor motor1(1); 
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
void setup() {
  pinMode(ledPin1, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(buttonPin3, INPUT);
  motor1.setSpeed(255); 
  motor1.run(RELEASE);   
  motor2.setSpeed(255); 
  motor2.run(RELEASE);   
  motor3.setSpeed(255); 
  motor3.run(RELEASE);   
  motor4.setSpeed(255); 
  motor4.run(RELEASE); 
}
void loop() {
  int buttonState1 = digitalRead(buttonPin1);
if (buttonState1 == HIGH) {    
  digitalWrite(ledPin1, HIGH);
  motor1.run(RELEASE);  
  motor2.run(RELEASE);  
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
 }  
else {   
  digitalWrite(ledPin1, LOW);
  motor1.run(FORWARD);  
  motor2.run(RELEASE); 
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
  motor1.setSpeed(255);  
  motor2.setSpeed(255);   
  motor3.setSpeed(255);   
  motor4.setSpeed(255);  
}
int buttonState2 = digitalRead(buttonPin2);
if (buttonState2 == HIGH); {    
  digitalWrite(ledPin2, HIGH);
  motor1.run(RELEASE);  
  motor2.run(RELEASE);  
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
 }   
 else {   
  digitalWrite(ledPin2, LOW);
  motor1.run(BACKWARD);  
  motor2.run(RELEASE); 
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
  motor1.setSpeed(255);  
  motor2.setSpeed(255);   
  motor3.setSpeed(255);   
  motor4.setSpeed(255);  
 }
 int buttonState3 = digitalRead(buttonPin3);
if (buttonState3 == HIGH) {    
  digitalWrite(ledPin3, HIGH);
  motor1.run(RELEASE);  
  motor2.run(RELEASE);  
  motor3.run(RELEASE);  
  motor4.run(RELEASE);  
 }  
else {   
  digitalWrite(ledPin3, LOW);
  motor1.run(RELEASE);  
  motor2.run(FORWARD); 
  motor3.run(FORWARD);  
  motor4.run(FORWARD);  
  motor1.setSpeed(255);  
  motor2.setSpeed(255);   
  motor3.setSpeed(255);   
  motor4.setSpeed(255);  
 }
}

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

В строке 49, после блока if, стоит лишняя ';'

Ivantankist
Offline
Зарегистрирован: 04.02.2021

Спасибо большое. Не заметил