Ви не увійшли.
можно ли в код за место реле воткнуть драйвер шаговика ну соответствеено сам шаговик
Это в смысле вместо relay написать shagovik? Можно, втыкайте.
no name можно ли в ваш код за место реле воткнуть драйвер шаговика ну соответствеено сам шаговик
тут главное не увлечься и не подвинуть с рынка
http://www.aotewell.com/wp-content/uplo … S-LOGO.jpgнемцам тоже кушать нужно )
не стоит так запугивать...немцев....В серьезных организациях, надзор не примет, всякую самопальщину. А дома лепить. можно все что угодно.
а по существу, найти язык лестничных диаграмм, где то болтался в сети, не знаю для ардуино есть, думаю должен быть и собрать схему на нем(ней)
state переменная
teezy, базовый синтаксис, вы уж сами изучайте.
http://natalia.appmat.ru/c&c++/lezione1.php
http://younglinux.info/book/export/html/358
и т.д.
state и case для чего служит...
Бьярне Страуструп. Программирование: принципы и практика использования C++
но скорее всего - делайте больше устройств, получайте удовольствие от разработки ) пытайтесь разобраться в библиотеках что используете, они хорошо написаны, и обществом "вылизаны" )
а что непонятно?
NoName, спасибо большое, Вам! Все работает! Скажите, пожалуйста, что мне почитать чтобы лучше разобраться в вашем коде (много незнакомого), а еще лучше объясните, если не сложно
тут главное не увлечься и не подвинуть с рынка
немцам тоже кушать нужно )
я полностью согласен что в данном примере можно и с делеями работать.
но нужно двигаться дальше и изначально делать в "хорошем тоне"
да и о дребезге неплохо подумать
int button1 = 4; // концевик №1
int button2 = 5; // концевик №2
int relay1 = 6; // реле №1
int relay2 = 7 // реле №2
int state;
void setup() {
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTOUT);
state = 0;
}
void loop()
{
switch ( state )
{
default:
case 0:
digitalWrite(relay1, HIGH);
state = 1;
break;
case 1:
if (digitalRead(button1) == HIGH) //если концевик сработал, то реле выключается, до его повторного запуска по кругу.
{
digitalWrite(relay1, LOW);
delay(2000); //2 сек. задержки между переключениями реле.
digitalWrite(relay2, HIGH);
state = 2;
}
break;
case 2:
if (digitalRead(button2) == HIGH)
{
digitalWrite(relay2, LOW);
delay(2000);
state = 0;
}
break;
}
}
}
алгоритм линейный
насчет delay не согласен, в данном случае задержка не участвуют в анализе, и имеет право на жизнь
хотя да, не очень хороший тон )
ваши делеи постоянно тормозят программу.
используйте millis()
при срабатывании концевика 1 запускаете таймер.
через 2 сек срабатывает реле 2 и таймер обнуляете.
делеи вообще лучше не применяйте.
Добрый день!
Помогите, пожалуйста, с программированием. Вроде бы все просто, но никак не могу сделать правильно.
Есть 2 реле и 2 концевика.
Включается реле №1, потом через концевик №1 реле №1 выключается. Ждем 2 сек. включается реле №2, а потом через концевик №2 выключается. Программно набросал так, но это не правильно:(
Разбирался с прерываниями, но ничего толком не сообразил.
[== Undefined ==]
int button1 = 4; // концевик №1
int button2 = 5; // концевик №2
int relay1 = 6; // реле №1
int relay2 = 7 // реле №2
void setup() {
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTOUT);
}
void loop(){
digitalWrite(relay1, HIGH);
if (digitalRead(button1) == HIGH) //если концевик сработал, то реле выключается, до его повторного запуска по кругу.
{
digitalWrite(relay1, LOW);
}
delay(2000); //2 сек. задержки между переключениями реле.
digitalWrite(relay2, HIGH);
if (digitalRead(button2) == HIGH)
{
digitalWrite(relay2, LOW);
}
delay(2000);
}
Спасибо большое!