Go Down

Topic: Get the push button sense once (Read 569 times) previous topic - next topic

zoom

I'm using the push button with the built in pull-up resistor;

pinMode(b1, INPUT_PULLUP);

and have such a main loop. Whenever I press the push button and hold, the empty string called "pass" takes dozens of "1", as expected :)
However I want to make it sense the push once until I release it and push again.
By that structure, it is not likely to implement I think.

What would your suggestions be ?

void loop()
{
  if(digitalRead(b1) == LOW)
  {
    pass += "1";
    counter += 1;
  }
}

robtillaart


You must make a variable that holds the state of the button. Only if the state changes there is action

something like this
Code: [Select]


int pressed = 0;

void loop()
{
  if (digitalRead(b1) == LOW && pressed == 0)
  {
    pressed = 1;
    pass += "1";
    counter++;
  }
  if (digitalRead(b1) == HIGH && pressed == 1)
  {
    pressed = 0;
  }
}

give it a try
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

zoom

Seems pretty logical but doesn't work.
I've implemented more or less a similar solution but it didn't work either. Strange



You must make a variable that holds the state of the button. Only if the state changes there is action

something like this
Code: [Select]


int pressed = 0;

void loop()
{
  if (digitalRead(b1) == LOW && pressed == 0)
  {
    pressed = 1;
    pass += "1";
    counter++;
  }
  if (digitalRead(b1) == HIGH && pressed == 1)
  {
    pressed = 0;
  }
}

give it a try


UKHeliBob

This code does what I would expect
Code: [Select]
String pass;
int counter =0;
int pressed = 0;
int b1 = 3;

void setup()
{
  pinMode(b1, INPUT_PULLUP);
  Serial.begin(9600);
}
void loop()
{
  if (digitalRead(b1) == LOW && pressed == 0)
  {
    pressed = 1;
    pass += "1";
    counter++;
    Serial.println(pass);
  }
  if (digitalRead(b1) == HIGH && pressed == 1)
  {
    pressed = 0;
  }
}

Sample output of 4 button presses
Code: [Select]
1
11
111
1111

NOTE - no debounce implemented but the button action seems relatively snappy so not a problem
Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

zoom

1
11
111

at 1 press. Very snappy :/
What can I do ?

Go Up