Stap 3: Creëren van een knoppenbibliotheek
Dit is het programma dat alle code die bepaalt de status van de knop en houdt van de niveaus van vertrouwen voor de druk op de knop en release bevat voor het elimineren van het debouncing effect. Dit bibliotheekbestand heet: "ButtonPress.h" die u in het include-bestand van het hoofdprogramma zien kunt. Als u kopieert en plakt u deze code en sla het op als een andere naam, zal u wilt wijzigen het include-bestand voor het hoofdprogramma.
#ifndef ButtonPress#define ButtonPressinclude <avr/io.h> char ButtonPressed(int buttonNumber, unsigned char pinOfButton, unsigned char portBit, int confidenceLevel);char Pressed[numberOfButtons];int Pressed_Confidence_Level[numberOfButtons]; //Measure button press cofidenceint Released_Confidence_Level[numberOfButtons]; //Measure button release confidencechar ButtonPressed(int buttonNumber, unsigned char pinOfButton, unsigned char portBit, int confidenceLevel){if (bit_is_clear(pinOfButton, portBit)) { Pressed_Confidence_Level[buttonNumber] ++; //Increase Pressed Conficence Released_Confidence_Level[buttonNumber] = 0; //Reset released button confidence since there is a button press if (Pressed_Confidence_Level[buttonNumber] > confidenceLevel) //Indicator of good button press { if (Pressed[buttonNumber] == 0) { Pressed[buttonNumber] = 1; return 1;} //Zero it so a new pressed condition can be evaluated Pressed_Confidence_Level[buttonNumber] = 0;}} else { Released_Confidence_Level[buttonNumber] ++; //This works just like the pressed Pressed_Confidence_Level[buttonNumber] = 0; //Reset pressed button confidence since the button is released if (Released_Confidence_Level[buttonNumber] > confidenceLevel) { Pressed[buttonNumber] = 0; Released_Confidence_Level[buttonNumber] = 0;}} return 0;}#endif