Данные сенсора как "выключатель"

Morozilka
Offline
Зарегистрирован: 23.04.2015

Добрый день. 

Пытаюсь написать код, чтобы при достижении определенного диапазона значений сенсора серва принимала определенное значение, а после повторного достижения этого диапазона вставала в ноль,  но после 1 срабатывания серва встает в ноль и не двигается. В чем может быть дело?

#include <Servo.h> 
 
Servo myservo;  
int valnew; // переменная для приема данных
int val = 0;   // переменная для отправки на серв
int act = 0; // переменная для отправки положения серв. 0- нулевое положение. 1- 90 градусов
int actnew = 0; // переменная для приема положения серв
 

 
void setup() 
{ 
} 
void loop() 
{ 
valnew = analogRead(0)>>7; // считываем 
if (valnew != val) //если значение сенсора изменилось
{
myservo.attach(5); //включаем серв 
val = valnew; //записываем новое значение управляющего сигнала
  act = actnew; //записываем новое значение положения серв
  Serial.println(val, DEC); // для себя проверить
  if (act = 0) {  // проверяем положение серва
      if (val > 4){
        myservo.write(90); //  
        actnew = 1;  // записываем, что серва подвинута                                                                                     
delay(500);                       // ждем чтобы серв мог докрутить 
myservo.detach();} //отключаем чтобы не дрожал
} 
  else if (act = 1) { // если серв подвинут                                                           
  if (val > 4){
  myservo.write(0); // 
  actnew = 0;  // записываем, что серва в нуле
delay(500);                       // ждем чтобы серв мог докрутить 
myservo.detach()}; //отключаем чтобы не дрожал
}   
delay(1000); //считывание с сенсора раз в секунду 
}
}

 

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

У Вас в некоторых условиях if вместо сравнения (==) стоит присваивание(=).
Строка 23:  if (act = 0) поменять на if (act == 0)
Строка 30: else if (act = 1) поменять на else if (act == 1)
Также в строке 35 точка с запятой должна быть перед фигурной скобкой, а не после.

Morozilka
Offline
Зарегистрирован: 23.04.2015

Спасибо Большое! Не заметил банальных ошибок. Все работает отлично.