Eine Bibliothek für Taster und Software-Entprellung erstellen

Erstellen einer Bibliothek für Taster und Software-Entprellung

Die Button-Press-Bibliothek:

#ifndef ButtonPress
#define ButtonPress

include

char ButtonPressed(int buttonNumber, unsigned char pinOfButton, unsigned char portBit, int confidenceLevel);

char Pressed[numberOfButtons];
int Pressed_Confidence_Level[numberOfButtons]; //Misst die Tastenanschlag-Konfidenz
int Released_Confidence_Level[numberOfButtons]; //Misst die Tastenfreigabe-Konfidenz

char ButtonPressed(int buttonNumber, unsigned char pinOfButton, unsigned char portBit, int confidenceLevel)
{
if (bit_is_clear(pinOfButton, portBit))
{
Pressed_Confidence_Level[buttonNumber] ++; //Erhöht die Pressed-Konfidenz
Released_Confidence_Level[buttonNumber] = 0; //Setzt die Released-Konfidenz zurück, da ein Tastenanschlag erfolgt ist
if (Pressed_Confidence_Level[buttonNumber] > confidenceLevel) //Anzeige für einen guten Tastenanschlag
{
if (Pressed[buttonNumber] == 0)
{
Pressed[buttonNumber] = 1;
return 1;
}
//Setzt es auf Null, damit ein neuer gedrückter Zustand ausgewertet werden kann
Pressed_Confidence_Level[buttonNumber] = 0;
}
}
else
{
Released_Confidence_Level[buttonNumber] ++; //Dies funktioniert genauso wie das Gedrückte
Pressed_Confidence_Level[buttonNumber] = 0; //Setzt die Pressed-Konfidenz zurück, da die Taste losgelassen wurde
if (Released_Confidence_Level[buttonNumber] > confidenceLevel)
{
Pressed[buttonNumber] = 0;
Released_Confidence_Level[buttonNumber] = 0;
}
}
return 0;
}

#endif

Dies ist das Programm, das den gesamten Code enthält, der den Tastenzustand bestimmt und die Konfidenzwerte für das Drücken und Loslassen der Taste verfolgt, um den Entprellungseffekt zu eliminieren. Diese Bibliotheksdatei heißt: "ButtonPress.h", wie Sie in der Includedatei des Hauptprogramms sehen können. Wenn Sie diesen Code kopieren und einfügen und unter einem anderen Namen speichern, müssen Sie die Includedatei für das Hauptprogramm ändern.

Das eigentliche Programm, das wir unter Verwendung der Button-Press-Bibliothek schreiben würden

#define numberOfButtons 2

include
#include"ButtonPress.h"

int main(void)
{
DDRB = 0b00001100;
PORTB = (1 << PINB0)|(1 << PINB1);

while (1)
{
if (ButtonPressed(0, PINB, 0, 100)) PORTB ^= (1 << PINB2);

if (ButtonPressed(1, PINB, 1, 100)) PORTB ^= (1 << PINB3);
}
}

Beachten Sie, wie kurz das Hauptprogramm jetzt ist. Der größte Teil des Codes für die Tastenanschläge und die Software-Entprellung ist in einer Bibliothek abstrahiert. Alles, was Sie tun müssen, ist die Datei ButtonPress.h einzufügen und eine Define-Anweisung am Anfang des Programms zu verwenden, um dem Compiler mitzuteilen, wie viele Tasten Sie verwenden möchten. Um festzustellen, ob eine Taste gedrückt wurde, erstellen Sie einfach eine "if"-Anweisung mit den Informationen, die sich auf die spezifische Taste beziehen, wie die Tastennummer, den Pin und Port sowie den Schwellenwert des Konfidenzniveaus für die Software-Entprellung.

Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.