Arduino knappen handledning (2 / 6 steg)

Steg 2: Provtagning, Deglitching och läsning stater



Glitches

Knapparna är liksom många saker: ofullkomlig. Även när de ger en fast mekanisk känsla, genererar de ett par svängningar när knappen placerar ändringar.

Dessa svängningar kallas buggar eller studsar. De kan elimineras genom att lägga till en kondensator (att införa viss fördröjning), eller program.

Filtrering av provtagning

Tillämpningsprogrammet Arduino är ofta slinga ()-baserade, dvs gör något, då sover en stund, upprepade gånger. Knappkoden staten provtagning kan se ut:

void loop()
{
hantera knappen
booleska button_pressed = read_button();

göra andra saker
do_stuff(button_pressed);

sova en stund innan nästa iteration
Delay(delay);
}

Detta innebär att åtminstone FÖRHALA millisekunder elapse mellan successiva knappen provtagningar. Beroende på FÖRSENINGEN gör detta oss okänslig för glapp. Lyhördhet är inte helt korrekt, men i stort sett tillräckligt: det kommer att finnas några jitter i omfattningen av dröjsmål. Det måste vara försäkrade att de saker vi gör under varje slinga tar tid på "små" och jämförbara för varje iteration.

Den första bilden av detta steg visar glapp och periodisk provtagning (anges i blått).

Läsa staten

Koden nedan visar hur de periodisk provtagningen görs. När knappen ses som inte tryckt, en prick skickas till den seriella linjen. När knappen ses som tryckte, skickas ett cirkumflex.

Den andra bilden av detta steg visar den seriella produktionen, för ett långt tryck följt av två korta pressar.

Programmering

I koden nedan, Observera att jag har valt ett variabelnamn (button_pressed) som representerar en hög nivå av abstraktion (knappen staten), och inte elektriska staten (knapp, genomföra eller inte, inte heller elektriska värdet läsa på stiftet), vilket skulle vara förvirrande eftersom det, på grund av pull-up resistor, pin läser högt när knappen släpps.

Pro/nackdelar

Mycket enkel implementering. Passar för kontinuerlig kontroll (t.ex. paus pedalen).

Olämpliga för inkrementell kontroll (e.g. inkrementell ljudvolymen kontroll)--som förklaras i nästa steg.

Koden

––––––––––8<––––––––––

#define BUTTON_PIN 2 / / knappen
#define dröjsmål 20 / / fördröjning per slinga i ms

void setup()
{
pinMode (BUTTON_PIN, indata);
digitalWrite (BUTTON_PIN, hög); pull-up
Serial.BEGIN(9600);
}

Boolean handle_button()
{
int button_pressed =! digitalRead(BUTTON_PIN); PIN låg -> tryckte
återvända button_pressed;
}

void loop()
{
hantera knappen
booleska button_pressed = handle_button();

göra andra saker
Serial.Print (button_pressed? "^" : ".");

Lägg till ny rad ibland
statisk int counter = 0;
om ((++ counter & 0x3f) == 0)
Serial.println();

Delay(delay);
}

––––––––––>8––––––––––

Se Steg
Relaterade Ämnen

Arduino Robot handledning

Jag var forskande Instructable databasen för en handledning för officiella Arduino Robot, men jag kunde inte hitta en! Så arg jag denna handledning för att hjälpa andra som en smula behövde lite hjälp med sina nya Arduino Robot.Steg 1: Konfigurera di...

Arduino Basic handledning

Hej alla. Jag är Zubayer Tahmid från Bangladesh,som representerar Rajuk Uttara modell College.Idag skriver jag en mycket grundläggande handledning på Arduino. Jag har sökt en hel del i olika webbplatser surfa via internet, men jag fick inte någon tut...

Arduino-knappen aktiveras behandla Dispenser

för min digitala multimedier klass slutlig, jag skapade en behandla dispenser som aktiveras genom att dra en kedja, som startar en servomotor som snurrar ett hjul att avstå från fester till min på afrikansk grå papegojor.Steg 1: Samla materialMateria...

Begära Uber Rider med en Arduino knappen

HejOm du använder uber väldigt lik mig gör så detta instructable livet bättre. Jag har bara tre pickup platser: hem, arbete och den lokala fablab adressen: D.Det är därför jag gjorde denna knapp. Jag har en hemma och en annan på jobbet, innan de lämn...

Arduino - knappen exempel med KY-004-DÖRRKLOCKA

Hej världen! Idag gjorde jag ett exempel för modulen KY-004-knappen.Kan säga att det är en mycket irriterande Ringklocka. :) Men det fungerar. Du kan ange olika toner.Följ nästa steg för Schematisk kod & reservdelslista.Steg 1: Schematisk kod & de...

Arduino graf handledning

Denna handledning gjordes för att hjälpa dig att läsa analoga värden från arduino i ett diagram.Ibland, för att bättre förstå vad Arduino läser, skulle kunna en graf verkligen hjälpa underlätta processen.Samtidigt programmering Arduino styrelser, var...

Arduino-knappen blinkar

detta är min första instructable och jag hoppas det fungerar för er alla!Jag kommer att lära er hur man gör en krets så när knappen trycks lampan tänds!Saker som behövs9 connector kablar1 knapp1 Arduino1 10 k ohm motstånd1 lysdiod (ditt val av färg)1...

Kontrollera din lysdioder med din TV-fjärrkontroll?! || Arduino IR-handledning

I detta projekt kommer jag visa dig hur jag repurposed värdelös knapparna på min TV remote att kontrollera lysdioderna bakom min TV. Du kan också använda denna teknik för att styra alla möjliga saker med lite kodredigering. Jag kommer även prata lite...

Arduino Bangla handledning 3 - Led blinkar

অমি অসা করছি ভিডিয় টিউটোরিয়াল টা দেখার পরে অপনাদের কোন সমস্যা থাকবে না. যদি আপনারা কোন সমস্যার সম্মুখীন হন তাহলে YouTube ভিডিওর নিচে kommentar করুন এবং আমি যত তাড়াতাড়ি সম্ভব আপনাদের সাহায্য করবাে.পরবর্তী ভিডিও পেতে YouTube kanal abonnera করুন htt...

Arduino-drivna A-10 stick grepp remote w/Emergency Party knappen!

jag kom över Plama2002's "Emergency Party Button" bygga ett tag tillbaka och ville ha något liknande för min bar. Jag hade också en gammal USAF B-8 stick grepp från en A-10A som jag plockade upp i mitt tidigare liv. Jag tänkte att istället för a...

Hur du använder MQ2 Gas Sensor - Arduino handledning

MQ serien av gas sensorer Använd en liten värmare inne med en elektrokemisk sensor. De är känsliga för olika gaser och används inomhus i rumstemperatur. Resultatet är en analog signal och kan läsas med en analog ingång för Arduino.MQ-2 Gas sensoren m...

Hur ska blinka en Led - Arduino handledning

LED (Light - emitting diode) kan hittas på många collors och storlekar.Detta exempel visar den enklaste sak du kan göra med en Arduino att se fysiska produktionen: det blinkar en LED!I denna tutorial lär du också hur du använder funktionerna pinMode(...

Hur man använder en sju Segment Display - Arduino handledning

En sju Segment Display, är en form av elektronisk skärm enhet för att Visa decimala siffror som är ett alternativ till de mer komplexa matrisskrivare visar.Sju segmenterar skärmar används i digitala klockor, elektroniska elmätare, grundläggande minir...

Hur man använder en SKIFT Register - Arduino handledning

I denna tutorial får du lära dig att använda ett skift register (eller följetong till paralled controller). Det SKIFT registret kommer att ge till din Arduino en ytterligare 8 digitala utgångar, med endast 3 pins på brädanI den här guiden kommer du ö...

Hur man använder ett fotomotstånd (eller fotocell) - Arduino handledning

Ett fotomotstånd eller fotocell är en ljus-kontrollerad variabel resistor. Motståndet av ett fotomotstånd minskar med ökande infallande ljus intensitet. Ett fotomotstånd kan tillämpas i ljuskänsliga detektor kretsar och ljus - och mörk-aktiverat växl...

Hur du använder DS18B20 temperatursensor - Arduino handledning

I denna tutorial får du lära dig att använda DS18B20 temp sensor med Arduino.Temperaturen kommer att tryckas på serial bildskärmen av Codebender eller Arduino IDE.Presentationsvideo:Innan vi börjar låt oss se mer information om denna sensor.Steg 1: O...

Hur du använder Adafruit Pro prydnadssak styrelsen - Arduino handledning

I den här guiden lär du dig hur du använder Adafruit Pro prydnadssak styrelsen och hur du enkelt kan programmera det med Codebender!Denna lilla styrelse använder ATmega328p mikrokontroller, det är som en Arduino Pro Mini men med fler pins och micro i...

Hur du använder TMP36 temp sensorn - Arduino handledning

TMP35/TMP36/TMP37 är låg spänning, precision Celsius temperatursensorer. De ger en Matningsspänning som är linjärt proportionell mot Celsius (Celsius) temperatur. TMP35 / TMP36/TMP37 inte kräver någon extern kalibrering ge typisk noggrannhet ±1 ° C v...

Hur man använder den L298 Motor drivrutinsmodulen - Arduino handledning

Dubbla dubbelriktad motor drivrutinen är baserad på den mycket populära L298 dubbla H-Bridge Motor Driver IC. Denna modul kan du enkelt och självständigt styra två motorer med upp till 2A i båda riktningarna.Det är idealiskt för robotiserade applikat...