Go Down

Topic: Unwanted shut down of outputs. (Read 3 times) previous topic - next topic

taz3m

Hi all,

Im actually writing some tutorial codes with my arduino UNO. . they were good at start now when i put some own modifications, it seems not working. Im quite afraid it is coming from hardware.

A simple sketch, is i pressed the pushbutton to light all my 5 leds, and i pressed the same to put them to low.

However, when the leds are on, they goes out without me pressing the button again after a while, as if an off delay is present.

I tried to figure out what is happening, and i wrote some codes to monitor within the serial monitor, when the serial monitor is opened, i can see all my variables being read, and my leds i.e. output work normally, no shut off delay.

As soon as i close my serial monitor, same thing happen leds goes out within a delay. quite weird. :)

I tried to change my sketch with something else, a blinky state this time, same system, ON state with button and same push button to OFF mode. Again same thing happening, as if an off delay is present though it is not in my code.

Can someone please advise, Thanks . . .

The code below:
Quote

/*
 *  Blink ON & OFF with same switch . . . 
 */

 int switchPin = 2;            // switch is connected to pin 2
 
 int LED1 = 12;                // LED1 connected to pin 12
 int LED2 = 11;                // LED2 connected to pin 11
 int LED3 = 10;                // LED3 connected to pin 10
 int LED4 = 9;                 // LED4 connected to pin 9
 int LED5 = 8;                 // LED5 connected to pin 8
 
 int buttonState;              // variable to hold the last button state
 int val;                      // Variable to compare with buttonState
 int val2;                     // Variable to read the debounced status
 int lightMode = 0;            // Variable to set LEDs ON / OFF depending on mode.

void setup() {
 
   pinMode(switchPin, INPUT);   // Set the switch pin as input
 
   pinMode(LED1, OUTPUT);       // Set LED1 as ouput
   pinMode(LED2, OUTPUT);       // Set LED2 as ouput
   pinMode(LED3, OUTPUT);       // Set LED3 as ouput
   pinMode(LED4, OUTPUT);       // Set LED4 as ouput
   pinMode(LED5, OUTPUT);       // Set LED5 as ouput

Serial.begin(9600);                       // Set up serial communication at 9600bps
  buttonState = digitalRead(switchPin);  // read the initial state
  
}

void loop(){
  val = digitalRead(switchPin);      // read input value and store it in val
Serial.print("val=");
Serial.println (val);
delay(10);
 
 val2 = digitalRead(switchPin);      // Read input again to check for bounces
Serial.print("val2 =");
Serial.println (val2);
 if (val == val2){
  if (val != buttonState) {          // the button state has changed!
    if (val == LOW) {                // check if the button is pressed
    if (lightMode == 0){             // Check status of lightMode
  lightMode = 1;                     // Sets lightMode to high, LEDs ON
      digitalWrite(LED1,HIGH);
      digitalWrite(LED2,HIGH);
      digitalWrite(LED3,HIGH);
      digitalWrite(LED4,HIGH);
      digitalWrite(LED5,HIGH);
     }
   else{
   lightMode = 0;                    // Sets lightMode to Low, LEDs OFF
      digitalWrite(LED1,LOW);
      digitalWrite(LED2,LOW);
      digitalWrite(LED3,LOW);
      digitalWrite(LED4,LOW);
      digitalWrite(LED5,LOW);
    }
   }
  }
 
  buttonState = val;  // save the new state in our variable
 Serial.print("buttonState =");
Serial.println (buttonState);
 }
}



Looking forward ..
Thanks
Taz ...
tz
.....

PaulS

You haven't explicitly set the switch pin to INPUT.
You haven't enabled the pullup resistor on the switch pin.

You haven't told us how the switch is wired.

Code: [Select]
  buttonState = val;  // save the new state in our variable
Matching names, like currState and prevState, make a lot more sense, and really appear to be logically related, than buttonState and val.


taz3m

Hello,

{Hello Paul : u remember we had a small discussion on a doing a garduino, and having to do a scada along with the Arduino, to be able to change different customise settings. So i started . . :%}

- I did set it to Input:  pinMode(switchPin, INPUT);   // Set the switch pin as input

Doing it explicitly . . how ??

- I did connect the switchButton, using the pull up resistor connection as below:

"see attached file"

- Is there anything i need to enable on software side ?

It will certainly look good and make sense if i match the names of variables with these.

-------------
taz

tz
.....

PaulS

Quote
- I did set it to Input:  pinMode(switchPin, INPUT);   // Set the switch pin as input

I missed that. Sorry.

Quote
- I did connect the switchButton, using the pull up resistor connection as below:

That looks fine. It uses two external resistors when none is really required, but it works.

Quote
- Is there anything i need to enable on software side ?

Not since you have external hardware.

I was suspecting a floating pin condition, but that does not appear to be your problem.

Perhaps seeing the serial output would be useful.

taz3m




Quote
That looks fine. It uses two external resistors when none is really required, but it works.


Can you kindly explain that part, though these external resistors are not required.
I taken a look on the schematic for pin 0 and 1 and noted a 1k ohm connected.

Quote
I was suspecting a floating pin condition, but that does not appear to be your problem.


I read some few things while using an IO pin as input and using serial communication that creates some trouble . . ???

Furthermore, my Arduino was powered through my usb, i just transfered to an external power supply (9 Vdc) and get my code running as perfect, and forever . . .

Any explanation on that ?



tz
.....

Go Up