Oppdage den lange trykktilstanden på trykknappen
For å legge til funksjonaliteten til knappen for å fungere når den presses i lang tid, har vi laget en enkel krets hvis kretsskjema er gitt nedenfor etterfulgt av komponentene som vi har brukt for å lage kretsen.
Maskinvareenhet for å oppdage den lange trykkstaten på trykknappen
For å se hvordan kretsen vil se ut på den faktiske maskinvaren har vi laget maskinvarenheten som er gitt nedenfor på bildet.
Som du kan se på bildet over, har vi brukt pinne 8 av Arduino for å koble den til trykknappen ved hjelp av den grønne ledningen og bruke den svarte ledningen for å koble trykknappen med jordstiften til Arduino.
Arduino -kode for å oppdage den lange trykkstaten på trykknappen
For å oppdage den lange trykket på trykknappen har vi programmert mikrokontrolleren ved hjelp av Millis () -funksjonen. Vi har oppdaget den lange pressetilstanden ved å få tiden som tilstanden til trykknappen forble høy og lav. Etter det beregnet vi varigheten som knappen ble trykket på for og sammenlignet den med en viss konstant tidsverdi basert på at vi kan si at knappen ble trykket i lang tid.
I dette tilfellet har vi gitt den konstante tidsverdien på ett sekund som er 1000 millisekunder som den korte pressen for knappen. Hvis pressens varighet er mer enn tid for den korte pressetiden, vil det bli betraktet som den lange pressen og vil vises på seriemonitoren. Nedenfor har vi gitt Arduino -skissen som ble brukt til å programmere kontrolleren for å oppdage den lange trykktilstanden på trykknappen.
int -knapp = 8; /* Arduino Pin for trykknappen*/
int short_time = 1000; / * Tid som vil bli betraktet som den korte pressetiden */
lang on_durasjon;/ * variabel som vil lagre verdien av tiden som knappen trykkes på */
int forrige state = lav; / * Angi den opprinnelige tilstanden til trykknappen høyt når vi bruker input_pullup -modus */
int Presentstate; /* Variabel som vil lagre den nåværende tilstanden hvis knappen*/
usignert lang presse_time = 0; / * Tid der knappen ble trykket på */
usignert lang utgivelse_tid = 0;/ *tid der knappen er utgitt */
void setup ()
Serie.Begynn (9600);/* Gi baudfrekvensen for seriell kommunikasjon*/
pinmode (knapp, input_pullup);/* Gi arbeidsmodus til trykknappen som er input_pullup (inverserer inngangene til knappen)*/
void loop ()
// Les tilstanden til bryteren/knappen:
PresentState = DigitalRead (knapp);/ * Få den nåværende tilstanden til trykknappen */
if (forrige state == High && PresentState == lav) / * Hvis knappen trykkes * /
Press_time = Millis ();/ * Lagre tiden i millisekunder ved hjelp av Millis -funksjonen */
ellers if (forrige state == LOW && PRESENTERTATE == HIGH) /* IF -knappen er utgitt* /
Release_time = Millis ();/ * Lagre tiden da knappen ble utgitt */
lang ON_TIME = Release_Time - Press_Time;/* Beregning av tiden som knappen forble i lav tilstand*/
if (on_time> short_time) /* sammenligne verdien av tid som knappen trykkes til verdien for kort pressetid* /
Serie.println ("-knappen trykkes i lang tid");/ * Skrive ut dataene på seriell monitor */
Forrige State = Presentstate;/ * Lagre nåverdien i forrige verdi */
Maskinvaredemonstrasjon
Vi har laget kretsen på maskinvaren riktig i henhold til maskinvarenheten som er diskutert tidligere, og bildet nedenfor viser maskinvareimplementeringen av trykknappkretsen for å oppdage den lange trykktilstanden på knappen.
Når vi trykker på knappen i mer enn ett sekund, vises Arduino -koden på seriemonitoren at knappen trykkes i lang tid som vist på bildet nedenfor:
Konklusjon
Betydningen av å bruke den lange trykktilstanden til trykknappen er at du kan bruke en enkelt knapp for å utføre mer enn en oppgave. Så for å forklare hvordan du kan oppdage den lange trykktilstanden på trykknappen har vi designet en krets og implementert den på den faktiske maskinvaren, og vi har også gitt Arduino -skissen som vil gi en stor forståelse av emnet.