Доброго времени суток всем форумчанам - ардуиноводам.
Суть вопроса следующая:
Есть ардуинка, есть оптический датчик, есть реле и 5 кнопок.
Всё добро сидит на цифровых входах - выходах.
4 кнопки отвечают за запуск циклов подпрограмм, 5-я за остановку.
1. При нажатии кнопки 1 - должен запуститься следующий цикл: сработал датчик - выдержка 15 мс - сработало реле на 150 мс. цикл должен длиться 1800 срабатываний датчика или 15 минут.
2. При нажатии кнопки 2 - должен запуститься следующий цикл: сработал датчик - выдержка 15 мс - сработало реле на 200 мс. цикл должен длиться 1800 срабатываний датчика или 15 минут.
3. При нажатии кнопки 3 - должен запуститься следующий цикл: сработал датчик - выдержка 15 мс - сработало реле на 250 мс. цикл должен длиться 1800 срабатываний датчика или 15 минут.
4. При нажатии кнопки 4 - должен запуститься следующий цикл: сработал датчик - выдержка 15 мс - сработало реле на 300 мс. цикл должен длиться 1800 срабатываний датчика или 15 минут.
5. При нажатии кнопки 5 - должен остановиться любой выполняемый цикл.
Состояние контроллера отслеживаю по монитору порта.
В дальнейшем хочу добавить LCD дисплей 16х2 по I2C, что бы он показывал выполняемый цикл и время до его окончания.
Все это будет построенно на китайской про-мини или меге (они, просто, есть в наличии)
Вот, что я наваял.
[code]
int sense = 2;
int magnet = 8;
int speed1 = 3;
int speed2 = 4;
int speed3 = 5;
int speed4 = 6;
int stop1 = 7;
void setup() {
pinMode(magnet, OUTPUT);
pinMode(sense, INPUT);
pinMode(speed1, INPUT);
pinMode(speed2, INPUT);
pinMode(speed3, INPUT);
pinMode(speed4, INPUT);
x = 0;
Serial.begin(57600);
}
void loop() {
if (digitalRead(speed1) == HIGH)
{
while (x < 1800) {
if (digitalRead(sense) == HIGH) {
delay(15);
digitalWrite(magnet, HIGH);
delay(150);
digitalWrite(magnet, LOW);
Serial.println(sense);
Serial.println(magnet);
Serial.println(speed1);
}
else {
}
x++;
}
}
else if (digitalRead(speed2) == HIGH)
{
while (x < 1800) {
if (digitalRead(sense) == HIGH) {
delay(15);
digitalWrite(magnet, HIGH);
delay(200);
digitalWrite(magnet, LOW);
Serial.println(sense);
Serial.println(magnet);
Serial.println(speed2);
}
else {
}
x++;
}
}
else if (digitalRead(speed3) == HIGH)
{
while (x < 1800) {
if (digitalRead(sense) == HIGH) {
delay(15);
digitalWrite(magnet, HIGH);
delay(250);
digitalWrite(magnet, LOW);
Serial.println(sense);
Serial.println(magnet);
Serial.println(speed3);
}
else {
}
x++;
}
}
else if (digitalRead(speed4) == HIGH)
{
while (x = < 1800) {
if (digitalRead(sense) == HIGH) {
delay(15);
digitalWrite(magnet, HIGH);
delay(300);
digitalWrite(magnet, LOW);
Serial.println(sense);
Serial.println(magnet);
Serial.println(speed4);
}
else {
}
x++;
}
}
}
else {}
}
[/code]
Сие чудо ругается на переменную "Х", да и других ошибок , я думаю, много.
Прошу, помогите пожалуйста написать правильную программу, если можно с пояснениями и дисплеем.
Заранее спасибо за помощь.
Сие чудо ругается на переменную "Х",
Как минимум ты не огласил переменную Х. int x = 0; что то типу этого...
Получилось.
Спасибо.
Сегодня попробую.