Выполнение цикла 1 раз до изменения параметров.
- Войдите на сайт для отправки комментариев
Вс, 11/11/2018 - 13:14
#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 );
}
Т.е если свет есть, мотор крутится Х раз, и потом ждет выключения света.
Я не понимаю как это сделать, помогите пожалуюста.
А что у вас в скетче написано - можете объяснить? i, y, digitalRead в int переменную - что это за дичь?
i и y просто забыл убрать, а digitalread считывает сигнал с датчика освещенности.
Почитайте внимательно, какие значения может возвращать функция digitalRead() - http://arduino.ru/Reference/DigitalRead
и сравни с этим
http://arduino.ru/Reference/AnalogRead
Я знаю, просто с 1 и 0 проще работать, а чувствительность можно менять на датчике
Если знаешь, зачем тогда пишешь условие if (raw>400) ?
Тоже забыл поменять, тут должно быть (raw == 0).
Вот только для всех digitalRead считывает (HIGH/LOW) горит/ не горит. А Вы уверены что это число может быть больше 400.
Сначала я использовал аналог, но потом поменял на цифровой, а это условие забыл.
Сначала я использовал аналог, но потом поменял на цифровой, а это условие забыл.
И вот про это Вы забыли тоже - Вставка программного кода в тему/комментарий