Draai je Arduino in een magnetische kaartlezer! (6 / 9 stap)

Stap 6: De kaart die de lezer verlaten detecteren


Detecteren wanneer een kaart is gegaan

Formeel zou een het proeven van de pin van de /CARD_PRESENT om te zien of het weer hoog is gegaan, maar we niet geen steenkin hoeven ' / CARD_PRESENT toegang tot een andere I/O poort. Dit is waar deze timers in komen.

Telkens wanneer de interrupt wordt aangeroepen omdat we hebben ontdekt een dalende rand op /STROBE, we stoppen een timer, Wis de waarde van de timer en beginnen met lezen. Als we klaar bent met lezen start we de timer opnieuw. Herhaal advertentie nauseum, of totdat de teller op een bepaalde waarde. Dat betekent dat de laatste interrupt heeft geroepen en geen gegevens meer gekomen, dus wij gaan ervan uit dat het is begonnen met de verwerking van de gegevens die we hebben verzameld.

Voor timers gebruiken we TIMER1, dwz de 16-bits timer. Ik ben met behulp van een resonator 16 Mhz extern aan mijn AVR. Als u van een arduino gebruikmaakt, dan bent waarschijnlijk u, ook. Dus, heb ik gekozen voor een prescaler waarde van 1024, wat betekent dat elke (16,000,000 / 1024) keer de timer zal verhogen. Dat wil zeggen, zal het 'tik' 15,625 keer per seconde. De /CARD_PRESENT gaat hoge die de kaart de lezer over 150ms na het laatste stukje van de gegevens verlaten heeft aangeeft. Dit wetende, besloten ik heb om te controleren over elk 1/4 van een seconde. Dat zou als volgt uitzien:

 ( ((F_CPU) / PRESCALER) / 4 ) 

die blijkt te zijn van ongeveer 3900. Dus, wanneer de timer TCNT1 teller 3900, dan weet ik het is geweest ongeveer 300ms en kan ik vrij veilig concluderen dat de kaart de lezer heeft verlaten. Gemakkelijk.

 #define PRESCALER 1024#define CHECK_TIME ( (F_CPU / PRESCALER) / 4 ) // 250 ms#define StartTimer() BSET(TCCR1B,CS10), BSET(TCCR1B,CS12) // 1024 prescaler#define StopTimer() BCLR(TCCR1B,CS10), BCLR(TCCR1B,CS12)#define ClearTimer() (TCNT1 = 0) 

U hebt gezien in de ISR waar de timer is gestart, gestopt en uitgeschakeld op elke interrupt. Nu, in de hoofdlus we just check om te zien als de timer teller onze streefwaarde heeft bereikt, en zo ja, beginnen met de verwerking van gegevens.

 for (;;){ if( TCNT1 >= CHECK_TIME) { StopTimer(); ClearTimer(); ProcessData(); ReadData(); idx = 0; bit = 6; bDataPresent = 0; memset(&buff,0,MAX_BUFF_SZ1); } } 

Nu is het veilig om de gegevens te verwerken.

Gerelateerde Artikelen

Hoe het bouwen van een magnetische Levitating Top

Hoe het bouwen van een magnetische Levitating Top

Nope, geen Photoshop en geen vislijn werden gebruikt voor het maken van deze foto, gewoon 100% puur fysica en wat geduld. Dit instructable wordt uitgelegd hoe u kunt bouwen uw eigen top zweven in de lucht als een UFO.Stap 1: Video-overzicht Aantal st
Maken van een draagbare barcodescanner met een arduino en een cuecat

Maken van een draagbare barcodescanner met een arduino en een cuecat

rond het begin van de eeuw, was er een bedrijf waarvan bedrijfsmodel opgenomen weggeven van gratis barcodescanners die wedijveren met toetsenborden.    Een relatief eenvoudig mod met deze scanners cuecat verwijderd van de codering en maakte hen gesch
Krachtige controle met Arduino: Interfacing een lineaire Actuator

Krachtige controle met Arduino: Interfacing een lineaire Actuator

In dit specifieke artikel zullen we bespreken hoe eenvoudig het is om controle van krachtige mechanische kracht met behulp van een microcontroller zoals de Arduino en een lineaire Actuator van DC lineaire actuatoren Inc.Stap 1: MicrocontrollersRaspbe
ARD-e: de robot met een Arduino als een brein

ARD-e: de robot met een Arduino als een brein

het maken van een opensource gecontroleerd Arduino robot voor onder $100.Hopelijk na het lezen van dit instructable u zal zitten kundig Neem uw eerste stap in de robotica. ARD-e kost ongeveer 90 dollar tot $130 afhankelijk van hoeveel vrije elektroni
Zelfgemaakte robotarm met behulp van standaard onderdelen met behulp van de Arduino en een Processing GUI

Zelfgemaakte robotarm met behulp van standaard onderdelen met behulp van de Arduino en een Processing GUI

Ik onlangs met pensioen en werd een van de dingen die ik mezelf beloofde dat als ik met pensioen I was going to voltooien van alle projecten had ik rondrennen in mijn hoofd sinds ik een tiener was. Dat is ongeveer 50 jaar of zo van projecten. In die
DIY levitatie van een magnetische top

DIY levitatie van een magnetische top

dit is mijn 1e poging tot een instructable, I 'm gonna u uitleggen hoe het bouwen van een systeem om te zweven van een magnetische top. Het lijkt er is een commerciële speelgoed dergelijks en wel u zal zitten kundig voor maakte het op uw eigen. Ik he
Hoe u een magnetische module toevoegt aan uw naai-project

Hoe u een magnetische module toevoegt aan uw naai-project

magnetische snaps zijn grote sluitingen voor portemonnees, tassen, zakken en nog veel meer. Hier is een snelle manier (één van de vele manieren) brengt een magnetisch uitlijnen op een naai-project.Stap 1: gereedschappen en benodigdheden Dit zijn de b
RECOMPILE (Rename) en Flash met de ISP om te zetten uw Arduino in een apparaat HID (usb-midi) HIDUINO

RECOMPILE (Rename) en Flash met de ISP om te zetten uw Arduino in een apparaat HID (usb-midi) HIDUINO

HIDUINO is een firmware (code) gemaakt om uit te voeren op de microcontrollers Atmega8u2 (Arduino UNO Rev 2- en vorige- of Mega2560) en Atmega16u2 (Arduino UNO Rev3).Dit zijn degenen die belast zijn met de computer en de planken om te praten met elka
Macht Arduino van een 9v batterij.

Macht Arduino van een 9v batterij.

Heb je ooit willen macht je Arduino met een 9v-slagman maar wist niet hoe?  Nou is hier een eenvoudige instructable hierover!Stap 1: materialen u nodig:1. Arduino (elke vorm die een power kabel aansluiting heeft)2. een power adapter met een 2.1 mm ja
Hoe maak je een flesopener met een magnetische Cap-Catcher

Hoe maak je een flesopener met een magnetische Cap-Catcher

In deze tutorial zal ik u tonen hoe te maken van de coolste flesopener ooit!Het kan niet lijken veel op het eerste gezicht, maar uw vrienden zullen versteld staan als je eenmaal begint popping die flessen. Niet alleen doet deze flesopener vasthouden
Hoe te programmeren een AVR (arduino) met een ander arduino

Hoe te programmeren een AVR (arduino) met een ander arduino

deze instructables is handig als:* je hebt je arduino met atmega168 en je kocht een atmega328 op je lokale elektronicawinkel. Het hoeft niet een arduino bootloader* u wilt maken van een project dat geen gebruik maakt van arduino - gewoon een regelmat
Controle van een LED licht-strip kleur via een Arduino en een iPhone over BLE

Controle van een LED licht-strip kleur via een Arduino en een iPhone over BLE

Dit leerprogramma zal u tonen hoe u kunt besturen van een analoge RGB LED light strip via een Arduino en een iOS-apparaat. Het zal gebruik maken van de lichtshow-app waarmee u één kleur instellen of het maken van een lichtshow met een reeks van kleur
Controle LED lichte kleur via een Arduino en een iPhone over BLE

Controle LED lichte kleur via een Arduino en een iPhone over BLE

Dit leerprogramma zal u tonen hoe u kunt besturen een RGB LED via een Arduino en een iOS-apparaat. Het zal gebruik maken van de lichtshow-app waarmee u één kleur instellen of het maken van een lichtshow met een reeks van kleuren.Als u bepalen van een
Eenvoudige handleiding voor het installeren van een magnetische loods/werkplaats gereedschapskist organisator

Eenvoudige handleiding voor het installeren van een magnetische loods/werkplaats gereedschapskist organisator

zeggen vaarwel aan uw onordelijk loods met dit makkelijk te volgen gids voor het installeren van een magnetische organiser gereedschapskist in uw schuur, garage of werkplaats is. Zet uw schuur of workshop nachtmerrie in de perfecte werkplek met de id