Форум по Роботика
Контролери => Ардуино (Arduino) => Темата е започната от: lz1iko в Август 11, 2016, 03:02:00 pm
-
Здравейте моля за малко помощ
трябва да пусна едно ардуино уно което да управлява 3 релета
идеята е като натисна бутона да се включи реле 1 и да стои включено 2 минути след което само (без натискане на бутон) да изключи
реле 2 трябва да генерира малък импулс на втората сек след това да изчака 3 сек и пак да генерира импулс и едновременно с това да се генерира импулс на реле 3
проблема е че не мога да накарам реле 1 да е включено постоянно и да гасне след 2 мин
Ще бъда много благодарен ако ми помогне някой с програмирането
-
loop()
{
if (buton = natisnat)
{
digitaloutput( rele1, ON ); //vkliu4va rele 1
delay(120000); // 4aka 2 min
digitaloutput( rele1, OFF); // izkliu4va rele 1
delay(2000); // 4aka 2 sekundi
digitaloutput( rele2, ON ); //vkliu4va rele 2
delay(20); // kratuk impuls
digitaloutput( rele2, OFF); // izkliu4va rele 2
delay(3000) // 4aka 3 sekundi
digitaloutput( rele2, ON ); //vkliu4va rele 2
digitaloutput( rele3, ON ); //vkliu4va rele 3
delay(20); // kratuk impuls
digitaloutput( rele2, OFF); // izkliu4va rele 2
digitaloutput( rele3, OFF); // izkliu4va rele 3
}
}
-
много благодаря
ще го пробвам и при първа възможност ще го пробвам
-
ok
Пробвах но нещо явно греша
написах следната програма но нищо не се случи
моля за малко помощ
int rele1 = 13 ;
int rele2 = 12 ;
int rele3 = 11 ;
int buton = 8;
boolean ON = HIGH;
boolean OFF = LOW;
void setup ()
{
pinMode(buton, INPUT);
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
}
void loop()
{
digitalRead(buton);
if (buton == HIGH ) //natisnat buton
{
digitalWrite(rele1,ON); //vkliu4va rele 1
delay(120000); // 4aka 2 min
digitalWrite(rele1,OFF); // izkliu4va rele 1
delay(2000); // 4aka 2 sekundi
digitalWrite( rele2, ON ); //vkliu4va rele 2
delay(20); // kratuk impuls
digitalWrite( rele2, OFF); // izkliu4va rele 2
delay(3000); // 4aka 3 sekundi
digitalWrite(rele2, ON ); //vkliu4va rele 2
digitalWrite(rele3, ON ); //vkliu4va rele 3
delay(20); // kratuk impuls
digitalWrite(rele2, OFF); // izkliu4va rele 2
digitalWrite(rele3, OFF); // izkliu4va rele 3
}
}
-
След Лека преработка програмата изглежда така
int rele1 = 13 ;
int rele2 = 12 ;
int rele3 = 11 ;
int inpin = 8;
int ON = HIGH;
int OFF = LOW;
int val = 0;
void setup ()
{
pinMode(inpin, INPUT);
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
}
void loop()
{
val = digitalRead(inpin);
if (val == HIGH) {
//digitalWrite(ledPin, LOW
// if (buton == HIGH ) //natisnat buton
digitalWrite(rele1,ON); //vkliu4va rele 1
delay(60000); // 4aka 1 min
digitalWrite(rele1,OFF); // izkliu4va rele 1
delay(2000); // 4aka 2 sekundi
digitalWrite( rele2, ON ); //vkliu4va rele 2
delay(220); // kratuk impuls
digitalWrite( rele2, OFF); // izkliu4va rele 2
//delay(3000); // 4aka 3 sekundi
digitalWrite(rele2, ON ); //vkliu4va rele 2
digitalWrite(rele3, ON ); //vkliu4va rele 3
delay(220); // kratuk impuls
digitalWrite(rele2, OFF); // izkliu4va rele 2
digitalWrite(rele3, OFF); // izkliu4va rele 3
}
}
но за съжаление пак не е това което ми трябва
идеята е реле 1 да е включено постоянно а реле 2 и 3 да изпълняват функциите си докато реле 1 е включено
Моля за помощ
-
#define SHORT_PULSE 220
#define SECOND 1000
int rele1 = 13 ;
int rele2 = 12 ;
int rele3 = 11 ;
int inpin = 8;
int ON = HIGH;
int OFF = LOW;
void setup ()
{
pinMode(inpin, INPUT);
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
}
void loop()
{
bool pressed = digitalRead(inpin);
if (pressed)
{
digitalWrite(rele1, ON); //vkliu4va rele 1
delay(2 * SECOND); // 4aka 2 sekundi
digitalWrite( rele2, ON ); //vkliu4va rele 2
delay(SHORT_PULSE); // kratuk impuls
digitalWrite( rele2, OFF); // izkliu4va rele 2
delay(3 * SECOND ); // 4aka 3 sekundi
digitalWrite(rele2, ON ); //vkliu4va rele 2
digitalWrite(rele3, ON ); //vkliu4va rele 3
delay(SHORT_PULSE); // kratuk impuls
digitalWrite(rele2, OFF); // izkliu4va rele 2
digitalWrite(rele3, OFF); // izkliu4va rele 3
delay(120 * SECOND - 5 * SECOND - 2 * SHORT_PULSE); //dopulnitelno zabavqne do kraq na 2te minuti
digitalWrite(rele1, OFF); // izkliuchva rele1 2 minuti sled nachaloto na rabotata mu
}
}
-
Да стана
много благодаря
впрочем и аз достигнах до горе долу същото решение но твоето е доста по изпипано
ето го и моето решение
int rele1 = 13 ;
int rele2 = 12 ;
int rele3 = 6 ;
int inpin = 8;
int ON = HIGH;
int OFF = LOW;
int val = 0;
void setup ()
{
pinMode(inpin, INPUT);
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
}
void loop()
{
val = digitalRead(inpin);
if (val == HIGH) {
digitalWrite(rele1,ON); //vkliu4va rele 1 podawa zahranwane
delay(2000); //chaka malko
digitalWrite(rele2, ON ); //vkliu4va rele 2
delay(200); // kratuk impuls
digitalWrite(rele2, OFF); // izkliu4va rele 2
delay(2000); // 4aka 2 sekundi
digitalWrite(rele2, ON ); //vkliu4va rele 2
digitalWrite(rele3, ON ); //vkliu4va rele 3
delay(200); // kratuk impuls
digitalWrite(rele2, OFF); // izkliu4va rele 2
digitalWrite(rele3, OFF); // izkliu4va rele 2
delay(10000); // 4aka 10 sek
digitalWrite(rele1,OFF); // izkliu4va rele 1 gasi toka
}
}
-
Здравейте отново
всичко беше супер и тръгна но сега се интересувам има ли команда с която да спра цикъла докато не се натисне бутона
идеята е когато пусна захранване на ардуиното да изпълни няколко команди на реле2 и 3 и да СПРЕ за да чака натискане на бутона т.е да не се връща в началото както сега а да чака натискане на бутона