Помогите новичку))) проблемы с компиляцией)

ник200138
Offline
Зарегистрирован: 25.11.2016
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)
void setup() {
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW); 
}
int thresholdUp = 400;

int thresholdDown = 250;
int sensorPin = A0;
void loop (){
pinMode (4 ,HIGH);
mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud
delay(500);
}
 void loop () {
 String DisplayWords;
 int sensorValue;
 sensorValue = analogRead(sensorPin);
 mySerial.write(128);
 mySerial.write(" ");
 mySerial.write(" ");
 mySerial.write(128);
 mySerial.write("Water Level: ");
 mySerial.print(sensorValue); 
 if (sensorValue <= thresholdDown){
 mySerial.write(254);
 mySerial.write(192);
 DisplayWords = "Dry, Water it!";
 mySerial.print(DisplayWords);
 digitalWrite(4, HIGH);
}
else if (sensorValue >= thresholdUp){
mySerial.write(254);
mySerial.write(192);
DisplayWords = "Wet, Leave it!";
mySerial.print(DisplayWords);
 digitalWrite(4, LOW);
} else {
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
}
delay(500); 

Такая проблема: при компиляции выдает ошибку(16 строка): In function 'void loop()':

 
sketch_nov22a:39: error: redefinition of 'void loop()'
 
  void loop () {
 
   в чем проблема и как исправить? если есть какие то еще ошибки скажите как исправить))) хочу уже что бы заработало) 
PS: если что то это код для автоматической поливалки , принцип работы: датчик влажности считывает показания , и в зависимости от заданных значений поливает цветок(ардуина размыкает реле) и выводит показания на дисплей ( в случае уже влажной почвы просто выводит показания) в общем поддерживает уровень влажности на нужном уровне. Заранее спасибо
 
 
Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В скетче не должно быть две функции loop(), только одна. К тому же в первой loop() строка 12 бессмысленна, т.к. неправильна. Строку 13 нужно перенести в функцию setup(). Для чего нужна строка 14 не понятно... Кроме того путаница с фигурными скобками. Строка 44 должна быть внутри функции loop(), то есть после неё должна быть закрывающая фигурная скобка.

Короче ошибок полно, учитесь программировать.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Jeka_M пишет:

В скетче не должно быть две функции loop(), только одна. 

последователям секты объединителей двух скетчей в один - разрешено два лупа

ник200138
Offline
Зарегистрирован: 25.11.2016

строку 12 полностью убрать или ку да то перенести? 

и что с фигурными скобками?

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Клапауций 234 пишет:

последователям секты объединителей двух скетчей в один - разрешено два лупа

Нужно срочно запретить.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ник200138 пишет:

строку 12 полностью убрать или ку да то перенести? 

Она неправильная и работать не будет, поэтому убрать.

ник200138 пишет:

и что с фигурными скобками?

Их нужно правильно расставить.

ник200138
Offline
Зарегистрирован: 25.11.2016

ну я расставил. ошибка с последней: 

 
 
exit status 1
expected '}' at end of input
 
  
ник200138
Offline
Зарегистрирован: 25.11.2016
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)
void setup() {
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  mySerial.begin(9600);
}
int thresholdUp = 400;
int thresholdDown = 250;
int sensorPin = A0;

 void loop () {
 String DisplayWords;
 int sensorValue;
 sensorValue = analogRead(sensorPin);
 mySerial.write(128);
 mySerial.write(" ");
 mySerial.write(" ");
 mySerial.write(128);
 mySerial.write("Water Level: ");
 mySerial.print(sensorValue); 
 if (sensorValue <= thresholdDown){
 mySerial.write(254);
 mySerial.write(192);
 DisplayWords = "Dry, Water it!";
 mySerial.print(DisplayWords);
 digitalWrite(4, HIGH);
}
else if (sensorValue >= thresholdUp){
mySerial.write(254);
mySerial.write(192);
DisplayWords = "Wet, Leave it!";
mySerial.print(DisplayWords);
 digitalWrite(4, LOW);
}
else{
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
delay(500);
  }

вот так в общем ошибка в послебней

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

КОД

#include <SoftwareSerial.h>
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)
void setup() {
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  mySerial.begin(9600);
}
int thresholdUp = 400;
int thresholdDown = 250;
int sensorPin = A0;

 void loop () {
 String DisplayWords;
 int sensorValue;
 sensorValue = analogRead(sensorPin);
 mySerial.write(128);
 mySerial.write(" ");
 mySerial.write(" ");
 mySerial.write(128);
 mySerial.write("Water Level: ");
 mySerial.print(sensorValue); 
 if (sensorValue <= thresholdDown){
 mySerial.write(254);
 mySerial.write(192);
 DisplayWords = "Dry, Water it!";
 mySerial.print(DisplayWords);
 digitalWrite(4, HIGH);
}
else if (sensorValue >= thresholdUp){
mySerial.write(254);
mySerial.write(192);
DisplayWords = "Wet, Leave it!";
mySerial.print(DisplayWords);
 digitalWrite(4, LOW);
}
else{
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
}
delay(500);
  
 }

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ник200138 пишет:

вот так в общем ошибка в послебней

Я говорил, что строка 44 ( delay(500); ) должна быть  внутри loop(), а не внутри else. Верните как было и после delay(500); поставьте ещё одну закрывающую фигурную скобку.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ua6em пишет:

КОД

Неправильно. Судя по всему, в конце должно быть так:

else {
  mySerial.write(254);
  mySerial.write(192);
  mySerial.print(DisplayWords);
  }
  delay(500);
}

UPD: Вижу, уже исправили. Теперь правильно.