Programme C un bouton pour effectuer une tâche une fois lorsqu'il est pressé (latch)

Je suis relativement nouveau à c et le Raspberry Pi et suis en train de simples programmes. Ce que je voudrais, c'est quand le bouton est pressé, il printfs une fois et de ne pas le printf de nouveau jusqu'à ce que le bouton est pressé de nouveau, même si le bouton est maintenu enfoncé (sorte de verrou). J'ai pensé que peut-être l'ajout de la deuxième boucle while dans permettrait de résoudre ce problème, mais parfois, il n'est toujours pas en mesure de détecter l'appui sur un bouton.

#include <bcm2835.h>
#include <stdio.h>
#define PIN RPI_GPIO_P1_11

int main()
{
    if(!bcm2835_init())
        return 1;

    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);

    while(1)
    {
        if(bcm2835_gpio_lev(PIN))
        {
            printf("The button has been pressed\n");
        }

       while(bcm2835_gpio_lev(PIN)){}
    }

    bcm2835_close();
    return 0;
}
Vous pourriez trouver une recherche google pour "bouton anti-rebond" pour être utile.
C'est une question de savoir quel est le terme technique pour que je puisse regarder. Merci
Heureux de vous aider - je ne pense pas qu'il méritait une réponse, mais avoir le bon terme à rechercher aide vraiment parfois!

OriginalL'auteur Marmstrong | 2013-04-30