EmbDev.net

Forum: µC & Digital Electronics Digital push-button


Author: Konstantinos (Guest)
Posted on:

Rate this post
0 useful
not useful
Dear μController community,

I am a complete beginner in the field so my question might seem a bit 
naive.
In short I need to implement a circuit switch that will change state 
(ON/OFF) every time a short pulse is sent (trigger). In effect it is a 
digital push-button. For instance on a first trigger the circuit open, 
on the 2nd will close..etc..

Do you have any simple solution to this? Is it something easy to 
implement with a μcontroller? I am currently looking for the simplest, 
least time consuming solution so if there is another way other than 
programming ICs please let me know.

Sincerely,
Konstantinos

Author: MaWin (Guest)
Posted on:

Rate this post
1 useful
not useful
If the circuit does always have power,
than a simple flip flop does
  +-----------+  CD4011
  |           |                 
  |       +---)----------------+
  |       |   |                |
  |       +--|>o--10k--+--|>o--+-- on/off
  | +         |        |       |  
Battery       |        |       1M
  | -         |        |   _   | 
  |           |        +--o o--+ 
  |           |                | 
  |           |              100nF
  |           |                |
  +-----------+----------------+

If you loose power, there are specialized
single bit non volatile state saver memory chips like
FM1105B, FM1106, FM1107, FM1110, FM1114 (RamTrom FERAM)

Of course you can program it also into a small micro controller
that has an EEPROM to save state during power loss.
For the Arduino programming environment
char key=0, lastkey=0, savedkey;
const char inputpin = 1;
const char outputpin = 2;

void setup()
{
    pinMode(inputpin,INPUT); 
}

void loop()
{
  while(1)
  {
    key=digitalRead(inputpin);
    if(key==1&&lastkey==0)
    {
      savedkey=EEPROM.read(11);
      savedkey=1savedkey;
      EEPROM.write(11, savedkey);
      digitalWrite(outputpin,savedkey)
    }
    lastkey=key;
    delay(10);
  }
}
So this is rather simple.

: Edited by Admin

Reply

Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]




Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.