Выполнение цикла 1 раз до изменения параметров.

IVoxelI
Offline
Зарегистрирован: 11.11.2018
#include <CustomStepper.h>
CustomStepper stepper(8, 9, 10, 11);
 
const int pinPhoto = 2;
const int led = 13;
int raw = 0;
int i = 0;
int y = 0;
 
void setup() { 
  Serial.begin(9600);
  pinMode( pinPhoto, INPUT );
  pinMode( led, OUTPUT );
  stepper.setRPM(12);                 // Устанавливаем кол-во оборотов в минуту
  stepper.setSPR(4075.7728395);
}
 
void loop()
{
raw = digitalRead( pinPhoto );
delay (200);
  if (raw>400){
    i = 0;
    digitalWrite( led, HIGH );
    stepper.setDirection(CW);         // Устанавливает направление вращения. Может принимать 3 значения: CW - по часовой, CCW - против часовой, STOP
    stepper.rotate(1);
  }
  else{
    y = 0;
    stepper.setDirection(CCW);
    stepper.rotate(1);
    digitalWrite( led, LOW );  
    }    
stepper.run();
Serial.println( raw );
}
 
IVoxelI
Offline
Зарегистрирован: 11.11.2018

Т.е если свет есть, мотор крутится Х раз, и потом ждет выключения света.

Я не понимаю как это сделать, помогите пожалуюста.

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

А что у вас в скетче написано - можете объяснить? i, y, digitalRead в int переменную - что это за дичь? 

IVoxelI
Offline
Зарегистрирован: 11.11.2018

i и y просто забыл убрать, а digitalread считывает сигнал с датчика освещенности.

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

Почитайте внимательно, какие значения может возвращать функция digitalRead() - http://arduino.ru/Reference/DigitalRead

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

и сравни с этим 

http://arduino.ru/Reference/AnalogRead

IVoxelI
Offline
Зарегистрирован: 11.11.2018

Я знаю, просто с 1 и 0 проще работать, а чувствительность можно менять на датчике

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

Если знаешь, зачем тогда пишешь условие  if (raw>400) ?

IVoxelI
Offline
Зарегистрирован: 11.11.2018

Тоже забыл поменять, тут должно быть (raw == 0). 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вот только для всех digitalRead считывает (HIGH/LOW) горит/ не горит. А Вы уверены что это число может быть больше 400.

IVoxelI
Offline
Зарегистрирован: 11.11.2018

Сначала я использовал аналог, но потом поменял на цифровой, а это условие забыл.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

IVoxelI пишет:

Сначала я использовал аналог, но потом поменял на цифровой, а это условие забыл.

Но вы не только про это условие забыли, но забыли как написать цифровой автомат - с состояниями горит/ не горит. Или не знали??

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

И вот про это Вы забыли тоже - Вставка программного кода в тему/комментарий