Go Down

Topic: Virtual latching relay (Read 841 times) previous topic - next topic

kevin duino

Code: [Select]


//z-parakeet inc.'s Fire Alarm Sketch
#include <LiquidCrystal.h>
// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int ledPin = 13; // choose the pin for the LED
int buzzerPin = 9; //buzzer/alertor
int inputPin = 8;               // choose the input pin (for a pushbutton)
int val = 0;            // variable for reading the pin status
int truPin = 7;
int Alarms = 6;
int sil = 0;
void setup() {

pinMode(buzzerPin, OUTPUT);   //declare BUZZER or allertor as a output!
pinMode(ledPin, OUTPUT);      // declare LED as output
pinMode(inputPin, INPUT);  // declare pushbutton as input
pinMode(truPin, OUTPUT);
pinMode(Alarms, OUTPUT);
    digitalWrite(buzzerPin, HIGH);
    digitalWrite(ledPin, HIGH);
    digitalWrite(truPin, HIGH);
      lcd.print("System Loading");
      lcd.print(".");
      delay(1000);
      lcd.print("..");
              delay(1000);
      lcd.print("...");
  delay(1000);
    lcd.print("System Stats: Standby");
  digitalWrite(buzzerPin, LOW);
  digitalWrite(ledPin, LOW);
  digitalWrite(truPin, LOW);
delay(2000);
}




void loop(){
val = digitalRead(inputPin);  // read input value
delay(0); //used to be a delay, but changed cuz of my update!
if (val == HIGH) {      // check if the input is HIGH
lcd.print("ALERT! TROUBLE OR FIRE");
  digitalWrite(truPin, HIGH);
  digitalWrite(ledPin, HIGH);  // turn LED ON
  delay(50);
  digitalWrite(ledPin, LOW);
  delay(50);
  digitalWrite(buzzerPin, HIGH);
    lcd.print("CHECK PULL STATIONS");
  delay(50);
  lcd.print("OR TEST SWITCH");
  digitalWrite(buzzerPin, LOW);
  delay(50);
  digitalWrite(Alarms, HIGH);
} else {
    lcd.print("Standby.");
  digitalWrite(ledPin, LOW); // turn LED OFF
  digitalWrite(truPin, LOW);
  digitalWrite(Alarms, LOW);
 
}
}





ive been posting that alot, but i need to know how to have it once the button is activated, it wont stop till i press the reset button on the arduino duemilinove.
[ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618]

mem

#1
Mar 30, 2009, 06:59 pm Last Edit: Mar 30, 2009, 07:00 pm by mem Reason: 1
Is your button connected using a resistor? The tutorial here explains about pull-up and pull down resistors: http://www.arduino.cc/en/Tutorial/Button

You can also use internal pull-up resistors; this tutorial explains more about digital pins and how to enable the internal pull-up resistors: http://www.arduino.cc/en/Tutorial/DigitalPins

westfw

What you're looking for it called a "state machine"  in technical circles.  Basically, the actions you perform and the inputs you watch are dependent on some "state" variable that you save:  "If the relay is off, look for the ON button.  If the relay is ON, look for the off button.
Code: [Select]

#define RELAY_ON 1
#define RELAY_OFF 0

byte state = RELAY_OFF;

void loop()
{
if (state == RELAY_OFF) {
  if (digitalRead(inputPin)) {
    alarm_on();
    state = RELAY_ON;
  }
} else if (state == RELAY_ON) {
  if (digitialRead(resetPin)) {
    alarm_off();
    state = RELAY_OFF;
   }
 }
}

As you get more states, you have a good excuse to learn about the "case" statement.

kevin duino

huh >:D

i am still kinda new to arduino, but i dont understand...
[ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618][ch9618]

halley


Change:

Quote
void loop(){
val = digitalRead(inputPin);  // read input value


To:

Quote
void loop(){
 [glow]if (!val)[/glow]
     val = digitalRead(inputPin);  // read input value



westfw:  he said the reset button on the board.  His state machine is a one-way gate from "off until input" to "on forever."  Not what I would do, but...

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy