2xbutton-2xrelay help

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Odpovědět
vikieso
Příspěvky: 2
Registrován: stř črc 17, 2013 3:18 pm
Reputace: 0

2xbutton-2xrelay help

Příspěvek od vikieso »

zdravim mam problem z programom
mam 2 tlacitka a 2rele s casovanim 18 sekund

tlacitko-1 aktivuje rele-1 na 18 sekund
tlacitko-2 aktivuje rele-2 na 18 sekund

problem je ked aktivujem hoci ktore tlacitko to druhe je po dobu 18sekund nefunkcne a naopak ja by som potreboval aby boli na sebe nazavisle vie my niekdo upravit program lebo sa s tym uz tyzden hrajkam a bez uspechu
dakujem

Kód: Vybrat vše

int buttonState = 0; 
const int buttonPin1 = 9;  // Tlacitko casovania PIN 9
//          Button      10K
//    +5 o---0__0---.--/\/\/---o GND
//                  |
// Pin 9 o-----------      :
const int buttonPin2 = 10;  // Tlacitko casovania PIN 10
//           PhotoR     10K
//     +5 o---0__0---.--/\/\/---o GND
//                   |
// Pin 10 o-----------     :
#define RELAY_PIN_3 6 // Reley-3 casovac PIN 6:
  //               .---.
  //   6 o---------| / | Rele-3
  // -0V o---------|   |
  //               .---.
#define RELAY_PIN_4 7 // Reley-4 casovac PIN 7:
  //               .---.
  //   7 o---------| / | Rele-4
  // -0V o---------|   |
  //               .---.
void setup() 
{ 
  pinMode(buttonPin1, INPUT); // Tlacitko casovania VSTUP:
  pinMode(buttonPin2, INPUT); // Tlacitko casovania VSTUP:
  pinMode(RELAY_PIN_3, OUTPUT); // Reley-3 casovac VYSTUP:
  pinMode(RELAY_PIN_4, OUTPUT); // Reley-4 casovac VYSTUP:
  Serial.begin(9600);
}
   
void loop() 
{
    buttonState = digitalRead(buttonPin1);
    if (buttonState == LOW) {  // ked je LOW:    
    digitalWrite(RELAY_PIN_3, HIGH); // RELEY-3 on:   
    }
    else { // inokedy HIGHT:
    digitalWrite(RELAY_PIN_3, LOW); // RELEY-3 off:
    delay(3600); // (ms)
    }
    buttonState = digitalRead(buttonPin2);
    if (buttonState == LOW) {  // ked je LOW:      
    digitalWrite(RELAY_PIN_4, HIGH); // RELEY-4 on:   
    }
    else { // inokedy HIGHT:
    digitalWrite(RELAY_PIN_4, LOW); // RELEY-4 off:
    delay(18000); // (ms) 
    }
}
Uživatelský avatar
mypower.cz
R.I.P.
Příspěvky: 4927
Registrován: pát bře 04, 2011 11:36 am
Reputace: 521

Re: 2xbutton-2xrelay help

Příspěvek od mypower.cz »

volani funkce delay(18000) neznamena "drz stav pinu po dobu 18 sekund a nemen ho", ale "zastav program na 18 sekund a nedelej nic".
bednar
Příspěvky: 79
Registrován: čtv čer 07, 2012 2:15 pm
Reputace: 3

Re: 2xbutton-2xrelay help

Příspěvek od bednar »

Nejsem kovaný arduinista ale problem bude v tom delay().
Na tuto dobu je pozastaveno provadeni programu.
Obecně: Na tyto akce je třeba si zřídit pomocnou proměnnou, která načítá ve smyčce čas běhu xxx = millis().
A až bude větší než 18000 tak něco provést a proměnnou vynulovat.
Někdo sem třeba hodí i kód na pomoc.
vikieso
Příspěvky: 2
Registrován: stř črc 17, 2013 3:18 pm
Reputace: 0

Re: 2xbutton-2xrelay help

Příspěvek od vikieso »

vedel by s vas niekdo upravit ten kod ako to ma byt bo ja som s toho trosku mimo dakujem
Uživatelský avatar
mypower.cz
R.I.P.
Příspěvky: 4927
Registrován: pát bře 04, 2011 11:36 am
Reputace: 521

Re: 2xbutton-2xrelay help

Příspěvek od mypower.cz »

Vedel. Oproti zaslani prijatelne podpory na provoz zdejsiho serveru vam to napisu, otestuju a zdokumentuju klidne i pro vice tlacitek/rele, s nezavislym a libovolnym nastavenim casu, pinu pro tlacitka a pinu pro rele. Mate-li zajem, poslete soukromou zpravu.

Odpovědět