Förvandla din Arduino till en magnetisk kortläsare! (4 / 9 steg)

Steg 4: Upptäcka när en kort är Swiped



1. upptäcka när en kort har varit swiped
Formellt, vill man kontrollera /CARD_PRESENT stiftet för att se om det är sjönk lågt. Lyckligtvis är detta inte nödvändigt. Vi ska kolla för giltigt kort senare. Omväxlande, du kan läsa din strobe pin se när utlöses har lagts på PIN-koden, men detta kommer net du massor av klockning Zeros. Läsaren kommer att skicka om 60-70 ledande noll är för att låta dig veta att data är på väg att läggas fram. Vi ska dock använda arten av binära data för att avgöra när du ska börja spela in bitar. Start sentinel (SS) för spår en är skylten andel (%). Är det binära värdet är 0010 0101 vilket innebär att det kommer att vara lagras (och läst) som 1010 001 (det är 7-bits så den 8: e lite inte är överförs). Nu, den skarpsinniga läsaren kommer att märka att även om uppgifterna är bakåt det inte stämmer med det binära ASCII-värdet. Det beror på att det är 0x20 bort av hex. % Symbolen är 0x25 och 0100 0101 är 0x05. Kortdata har 0x20 subtraheras från värdet. Att en hängande ute i den höga nibble är den udda paritetsbiten. Den sätts det så att det finns ett udda numrerar av "1" s i värdet. Så eftersom vi vet att ett giltigt kort startar alltid med denna start sentinel, och eftersom paritetsbiten är en 1, sedan när vi upptäcker den första hög till låg övergång på data stift, då vi vet att vi har precis börjat ta emot start sentinel från ett kort. Nu, detta kommer inte alltid att vara sant, och en idiotsäker plan skulle vara att kontrollera /CARD_PRESENT kortet för att se om det har gått låg dessutom. Det enklaste sättet att upptäcka i början av SS, är att skapa ett yttre avbrott utlöses i fallande utkanten av /STROBE. Data är giltiga 1.0 oss innan den fallande kant, så när du har provtagits fallande kanten, då du vet kan du läsa /DATA1 PIN-koden och få ett giltigt värde. Här är koden för att skapa din externa avbrott utlöses på en fallande kant.

voidInitInterrupt(void) {/ / Setup avbryta BSET(EIMSK,INT0); / / yttre mellanjobb maskera BSET(EICRA,ISC01); / / falling edge BCLR(EICRA,ISC00); / / falling edge BSET(SREG,7); / / jag-bit i SREG}

I min common.h som jag har i alla mina program, finns definitionerna av AVSKILJS och BCLR. Se filen om du har frågor om hur du anger bitar. Nu, när avbrottet utlöses, vi vill prova /DATA1 (i min kod definieras som CARD_DATA) och lite i en generell IO register. Om vi är på den 7: e lite, besparing av registret som en karaktär i vår globala buffert. Jag använder ett GPIOR0 register eftersom det är spiffy snabb åtkomst. Pseudo koden är ungefär så här:

Stop 16-bitars timer klart timer om DATA är låg ange BIT = 1 i registret dekrement BIT inställda flaggan så vi inte hoppa över något mer 0's annat DATA är hög ställa BITHASTIGHET = 0 i registret dekrement BIT om BIT är 0 Lägg till byte till buffert Increment index Reset-BITEN

Om du frågar dig själv varför stegvis minskning i stället för tillväxten, kom ihåg att data är bakåt, så istället för att spela in bitarna som vi får dem från LSB MSB, vi rädda dem från MSB att LSB så vi slipper vända bitarna senare vid behandling av uppgifterna. Om du verkligen ville, kan du också lägga till 0x20 hex här, men eftersom det handlar om 5us på dessa utlöses, jag håller behandling i denna avbrottstjänstens rutin till ett minimum.

ISR(INT0_vect) {StopTimer(); ClearTimer(); IF (!. BCHK(PIND,CARD_DATA1)) / / inverse låg = 1 {BSET(GPIOR0,bit);--bit; bDataPresent = 1;} else om (bDataPresent) {BCLR(GPIOR0,bit);--bit;} om (lite
Om du undrar vad timing verksamheten handlar om, som är täckt av steg för att fastställa när kortet har lämnat läsaren.

Se Steg
Relaterade Ämnen

Arduinolyzer.js: Förvandla din Arduino till en logik Analyzer

När jag jobbade på Intel som hårdvara designer, använde jag en logik analyzer för felsökning mikroprocessorer och chipsets. En logik analyzer är en maskin som ansluter till din krets och omvandlar det som händer i kretsen i en vågform på en skärm. De...

Förvandla din Arduino till en 4 röst wavetable synth med endast ett fåtal komponenter...

Flera synthesizer projekt har gjorts för Arduino, men få har kunnat utnyttja den fulla kraften av Arduino processorn. DZL från GeekPhysical skrev en 4 röst wavetable synthesizer som är en av de mer avancerade mjukvara baserad synthar för Arduino. Det...

ArduFlake: Förvandla din Arduino till den bästa gåvan av alla!

Vänligen rösta på mig i tävlingen Holiday Gift och gör det glöda tävling!Först, detta började som en gåva, och inte en instructable. Så snälla ursäkta vissa hand waving här och där som jag inte har några bilder av etsningen och borrning delar.För det...

Kompilera om (Rename) och Flash HIDUINO med ISP att förvandla din Arduino till en HID (usb-midi) enhet

HIDUINO är en firmware (kod) gjorda för att köras på mikrokontroller Atmega8u2 (Arduino UNO Rev 2- och tidigare- eller Mega2560) och Atmega16u2 (Arduino UNO Rev3).Dessa är de som ansvarar för att få datorn och styrelser att prata med varandra. När de...

Förvandla din Arduino in an ISP

lära sig att förvandla din Arduino till en AVR i System programmerare. Detta gör att du kan bränna bootloaders på nya marker eller programmet AVRs utan en bootloader.Steg 1: materialFör att börja du behöver:* Arduino (jag kommer att använda Uno)* AVR...

Förvandla din mollskinn till en haj dinosaurie monster med 3D tryckta delar

Detta projekt ingår i ett kort och roligt samarbete med kollega Pier 9 sänds konstnärer i Residence Bernie Lubell, Maddy Maxey och Andrew Thurlow. I början av vår hemvist fick vi alla dessa coola lilla bärbara datorer. För ett litet projekt beslutat...

Titta på TV-kanaler från hela världen gratis på ditt hem TV och förvandla din TV till en billig hem-PC

Med hjälp av en $50 Android Mini PC (hittas via Amazon eller eBay), ex-pats eller alla som vill berika sina kunskaper i främmande språk titta på utländska TV-stationer på deras hem TV. Android Mini PC ansluter till en HDTV uppsättning, och med tilläg...

Hur till: ansluta din Arduino till Internet som en webbserver

SAKERNAS INTERNET... < kö blixtar och åska >Det är vad alla coola barnen gör dessa dagar. Varför ska de ha allt roligt? Låt oss ställa in en Arduino som en webbserver som vem som helst, var som helst kan visa. Varför skulle vi göra en sådan sak? Möj...

Förvandla din konst till en Quilt

Konst! Tyg!Jag tror ett sovrum är så mycket mer mysigt när det är anpassat till din specifika smak och preferenser. Visst, det är billigare att köpa ett täcke från en stor låda butik. Men att skapa ett vackert täcke för att pryda din säng är ett säke...

Förvandla din telefon till en svart ljus hacka

Förvandla din telefon till en svart ljus hacka. Dess super lätt att göra!Allt som krävs är en smartphone med en ljus, tre bitar av små band och två sharpies. En blå, en lila.Ta den första bit tejp, placera den över kameran flash på baksidan av telefo...

Förvandla din Tablesaw till en rikthyvel

Det finns några verktyg som kan vara svårt att komma med, antingen de är för dyra, svårt att hitta används, eller bara inte som vanligt för DIY'ers. Jag har hittat att lamellfräsar är bland dessa verktyg.Lyckligtvis finns det ett enkelt sätt att förv...

Vill du förvandla dina foton till en skulptur?

Kreativa människor älskar att göra nya saker och att föreställa sig nya prylar.Förresten, nu har vi en hel del teknik som kan hjälpa oss att utveckla miljontals coola saker. Jag gillar bilder och Selfies väldigt mycket och jag skulle älska att ha dem...

Förvandla din Arduino Uno till en USB-HID-Mididevice

medan bygga en Arduino Uno baserat Midi-Controller för Ableton Live, jag kom över HIDUINO projektet (http://code.google.com/p/hiduino/). Det kan du vända din Arduino Uno (eller någon annan enhet med en AVR-USB-chipset som 8u2) i en förarlös HID/MIDI-...

SensoDuino: Förvandla din Android till ett trådlösa sensorer nav för Arduino

Uppdateringar23 nov 2013: SensoDuino 0.160 får ett ansikte kvar.19 nov. 2031: yttrande: fantastiska synergin mellan Arduino & Android.19 nov 2013: SensoDuino 0.159 är ute. Sensorer som stöder Android telefon datum (y, m, d) och tid (h, m, s). Stöd fö...

Förvandla din laserpekare till en "spot-flash light" :)

Hi... i denna ultra lätt instructable kommer jag visa dig, varm för att ändra din laserpekare till en (plats) flash lätt.Delar du behöver:1. laserpekare2. kameralinsen från små "Spion" kamera3. limma pistol eller tejpOch det är det :)... passar...

Förvandla din Doodles till skatter!

Någonsin vill lägga din doodles på något rad men inte kunde riktigt lista ut? Tja, Techshop har fått lazer balkar och saker att göra dessa doodle drömmar!De saker som du behöver för detta projekt:En TechShop medlemskapEn doodleBalsa eller annat virke...

Förvandla din Wii till en webbserver

Steg 1: Hämta WWS AppInnan vi börjar Observera att din wii måste ha homebrew kanalen installerat för att detta ska fungera. (Om du vill ha mig att jag kan göra en instructable på hur man gör detta)1. gå till http://wiibrew.org/wiki/Wii_Web_Server och...

Förvandla din telefon till en Robot

Att införa PhoneBOT!En billig, enkel och snabb metod för att konvertera en Android-telefon till en kan programmeras om robot. Ingen ytterligare hårdvara (mikro-styrenheter, motor förare, etc.) krävs!Du kommer att kunna köra en färdiga PhoneBOT från d...

Hur du förvandla dina foton till fantastiska kylskåpsmagneter!

Tur dina mest älskade bilder till fab kylskåpsmagneter i minuter med denna snabba tre steg hur guide.I denna video:Magneter visitkort - limmet fram & magnetiska på baksidan...