Sterowanie przekaznikami

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
alwaro
Młodszy majsterkowicz
Posty: 10
Rejestracja: 2 lis 2015, 22:46

Sterowanie przekaznikami

Post autor: alwaro » 9 lis 2015, 12:51

Witam, chciałem wykorzystać program do sterowania dwoma przekaźnikami jednak program jest dla jednego:

Kod: Zaznacz cały

int pin = 10;
volatile int state = LOW;

void setup()
{
  pinMode(pin, OUTPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, toggle, FALLING); // Attaching the ISR to INT0
}

void loop()
{
  // Does Nothing
}

// Interrupt Service Routine
void toggle()
{
  if(state == LOW) {
    state = HIGH;
  } else {
    state = LOW; 
  }
  digitalWrite(pin, state);
}
postanowiłem go zmodyfikować dla dwóch przekaźników, niestety nie wiem co źle robię tu:

Kod: Zaznacz cały

int pin2 = 12;
volatile int state2 = LOW;
int pin3 = 11;
volatile int state3 = LOW;

void setup()
{
  pinMode(pin2, OUTPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, toggle2, FALLING); // Attaching the ISR to INT0

  pinMode(pin3, OUTPUT);
  digitalWrite(3, HIGH);
  attachInterrupt(0, toggle3, FALLING); // Attaching the ISR to INT0
}

void loop()
{
  // Does Nothing
}

// Interrupt Service Routine
void toggle2()
{
  if(state2 == LOW) {
    state2 = HIGH;
  } else {
    state2 = LOW; 
  }
  digitalWrite(pin2, state2);
}
void toggle3()
{
  if(state3 == LOW) {
    state3 = HIGH;
  } else {
    state3 = LOW; 
  }
  digitalWrite(pin3, state3);
  
  
}
nie umie dojść do tego czemu to nie działa tak jak chciałem i co źle zrobiłem

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


alwaro
Młodszy majsterkowicz
Posty: 10
Rejestracja: 2 lis 2015, 22:46

Re: Sterowanie przekaznikami

Post autor: alwaro » 9 lis 2015, 19:40

Sorka. Założenie było takoe
Pin 2 i 3 przełączniki
Pin 12 i 11 przekaźniki

Chodziło mi o to że po wciśnięciu przycisku 1 włancza się
Przekaźnik a przy kolejnym przyciśnięciu wyłącza. Dla 1 przekaźnika mi to działało ale już dla 2 zaczęło robić problemy.

EDIT:

Może zapytam tak, czy ktoś pomoże mi zmodyfikować przykładowo ten kod:
aby podczas naciśnięcia przycisku 1 zapaliła się dioda 1, ponowne naciśnięcie wyłącza ją.
podczas naciśnięcia przycisku 2 zapaliła się dioda 2, ponowne naciśnięcie wyłącza ją.

Kod: Zaznacz cały

int switchPin1 = 2;
int ledPin = 13;


boolean currentButton = LOW;
boolean lastButton = LOW;
boolean ledOn = false;

boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin1);
if (current != lastButton)
{
delay(20);
current = digitalRead(switchPin1);
}
return current;
}

void setup()
{
pinMode(switchPin1, INPUT);
pinMode(ledPin, OUTPUT);

}

void loop()
{
currentButton = debounce(lastButton);

if (currentButton == HIGH && lastButton == LOW) ledOn = !ledOn;

lastButton = currentButton;

digitalWrite(ledPin, ledOn);
}
@karpi rozumiem że twój poziom zaawansowania jest dużo wyższy jednak ta treść nie rozjaśniła mi błędu jaki popełniłem. Gdyby nie był to dla Ciebie kłopot mógł byś mi go pokazać na kodzie?
ODPOWIEDZ

Strony partnerskie: