Cryptap: Een ritme gebaseerde deurslot (5 / 5 stap)

Stap 5: Code


ik heb geprobeerd om het commentaar van mijn code. Houd er rekening mee dat dit 1.0 software, wat betekent dat er geen bug-vrij.

## OPERATIE ##

1. Druk op de knop start/stop om aan te geven dat u bent klaar om te beginnen code invoer. Het statuslampje begint te langzaam knipperen.
2. Tik in uw code op de knop code. Het statuslampje zal knipperen op 120 hsm, dus u dit als uw metronoom gebruiken kunt als u wilt. Echter zullen het cryptap-programma meten de lengtes van de puls ten opzichte van elkaar proportioneel, dus u ook uw eigen tempo kunt. Zorg enkel ervoor u die nauwkeurig genoeg!
3. Wanneer de invoer van de code wordt gedaan, druk nogmaals op de knop start/stop. Het programma zal dan beslissen of u om binnen te laten.

Aangezien mensen niet zeer nauwkeurige tijd keepers (jouwe is echt niet), stel ik de verhouding van de tolerantie tot +/-30%. Dat betekent dat de beat lengtes kunnen met dat bedrag onjuist, en nog steeds gaan opbrengen.  Dit is goed genoeg om te zeggen het verschil tussen vrij gelijkaardig muziek. Er is een kleine hoeveelheid moeilijk bereikbare overlapping tussen dubbele en drievoudige-lengte beats, maar de code is nog steeds erg moeilijk te breken.

Om te ontgrendelen van de deur, moet de beats in de juiste verhoudingen met elkaar zijn verbonden (+/-de tolerantie-verhouding), en het aantal beats moet goed zijn. Als een ongeldig wachtwoord wordt ingevoerd, wordt het programma wacht op een paar seconden, terwijl het negeren van de tussenkomst van de gebruiker. Het zal ook het statuslampje snel knipperen.  Indien de juiste code is ingevoerd, de statuslampje zal oplichten gestaag en de deur zal openen voor 8 seconden.

## GEBRUIKERSCONFIGURATIE ##

De sleutel is opgeslagen in een matrix als volgt:
#define sleutellengte 5
Const int sleutel = {1, 3, 2, 3, 3}; "Happy birthday to you"

De matrix bevat de hoeveelheid tijd dat tussen de beats gebeurt. Dus als uw wachtwoord heeft zes merkt als "Happy birthday to you", moet er vijf elementen in de matrix. Als uw wachtwoord echt lang is en je meer dan 16 beats, (echt hard hebt, dat ik beveel het niet), moet u het getal gedefinieerd in deze lijn verhogen:
#define inputCodeLength 16

## DE REST VAN DE CODE ##

Ik was nieuwsgierig over interrupts, dus ik had mijn knoppen activeren interrupts.  Om deze interrupts makkelijk te gebruiken, had ik mijn interrupt handlers controleren voor bepaalde functieverwijzingen. Als de aanwijzer niet op NULL is ingesteld, wordt de functie naar verwijst opgeroepen.  Deze zijn ingesteld met de verschillende functies van de "modus-instelling" binnen cryptap.c.

Ik een inspanning gedaan om buffer overflows te voorkomen door een maximum aantal ingevoerde pulsen. Als het maximum aantal pulsen worden ingevoerd, wordt het programma onmiddellijk begint wachtwoord analyse en besluit of om de deur te openen.

Ik hoop dat mijn commentaar in de code-help.

## BUGS ##

Ik probeerde te verwijderen van de USB debugging code, maar de code werkt niet, als ik dat doe. Dus, ik liet in usb_init() en de verklaringen van de verschillende print(). Ik zou het waarderen als iemand kon weghalen en nog steeds het werk van het programma hebben. Nog beter als zij kunnen uitleggen waarom het niet werkte voor mij.

Onmiddellijk na wordt geprogrammeerd, accepteert de Teensy soms geen invoer van de code.  Om dit oplossen, uit-en inschakelen het circuit.

Gerelateerde Artikelen

Groovin' Grover: Een Microcontroller gebaseerde marionet

Groovin' Grover: Een Microcontroller gebaseerde marionet

Kolkende Grover is een marionet, gemanipuleerd door vier hobby servo's en een Pololu Maestro microcontroller gebaseerde servo controller. U kunt elk van Grover's ledematen onafhankelijk controle en maken hem lopen, Golf en meeste onderhoudend - maken
Monteren van een Arduino gebaseerd rook / hitte Alarm

Monteren van een Arduino gebaseerd rook / hitte Alarm

Zoals je uit deze blog entry zien kunt ik ontwikkelde de basis voor dit project twee jaar geleden als een alarm / uitschakeling schakelaar voor de RepRap 3D Printer kit die ik had net samengesteld... en dat had gerookt!Het eerste ProjectIk heb sindsd
Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

ProjectoverzichtStudenten op New Lothrop High School in Michigan hebben samengewerkt om te bouwen van een lage hoogte remote sensing platform genaamd een "Aeropod" en het uitgerust met een "Arduino" gebaseerd weer instrument om sfeervo
Een zeer goedkope deurslot

Een zeer goedkope deurslot

Asslam u alailkum dit eerste keer is, ik ben het posten van mijn project hier. Ik ga vertellen u over het maken van een zeer goedkope deurslotStap 1: Dingen die je moet Alles wat u nodig zijnSommige dradenEen oude nutteloos servomotor of een motor me
Mobiele robotica met Scratch: een Arduino gebaseerde insect-achtige Walker bouwen en programmeren met Scratch

Mobiele robotica met Scratch: een Arduino gebaseerde insect-achtige Walker bouwen en programmeren met Scratch

Laten we scurry rond? Dit is een Arduino gebaseerde, gemakkelijk om te bouwen van de versie van het insect-achtige walker gemaakt met kapstok draad en oorspronkelijk ontworpen door Jerome Demers (Zie ook dit instructable) en Gareth Branwyn. Het komt
Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hier is een Instructable die u hoe tonen zal te bouwen van een licht met een Arduino gebaseerd-nachteen kleine infrarood afstandsbediening waarmee u doorlopen 10 pre set kleuren, en een willekeurige fadingkleur routine die voor eeuwig lussen.Dit inst
InPace - een Arduino gebaseerde GPS gegevens vastleggen van fitness armband met bluetooth en een iOS-app

InPace - een Arduino gebaseerde GPS gegevens vastleggen van fitness armband met bluetooth en een iOS-app

InPace is een Arduino gebaseerde fitness armband, met een begeleidende iOS applicatie, die live kan feedback over hoe de gebruiker pacing zelf tijdens een run, lopen of fietsen route. Zij sporen GPS-locaties en huidige tijden de huidige prestaties va
How-To: Maak een RGB-combinatie deurslot

How-To: Maak een RGB-combinatie deurslot

een aangepaste ontworpen elektronisch slot zetten uw space lijkt een geek recht van doorgang. Voor onze nieuwste werkruimte besloten we te slaan het saai genummerde toetsenblok en bouwen van een aangepaste RGB backlit toetsenbord aangedreven door een
Binguino: Een Arduino gebaseerde Bingo Number Generator

Binguino: Een Arduino gebaseerde Bingo Number Generator

Bingo!Mijn kleindochter speelt Bingo, dus ik ging naar buiten en haar kocht eengoedkope vastgesteld op een lokale korting op te slaan. De kaarten en de markers zijn prima,maar de spinner schijf voor het selecteren van de nummers is een stuk van vuiln
Bouwen van een Web ingeschakeld deurslot met Rest API en Raspberry PI

Bouwen van een Web ingeschakeld deurslot met Rest API en Raspberry PI

In dit instructable, bouwen we een web-enabled elektronische deurslot vanaf nul RESTFUL API, knooppunt JS en Raspberry PI gebruikt om de web-service die wordt verbruikt door de mobiele app of een REST-client.De architectuur is verdeeld in twee 3 dele
Instellen van een computer gebaseerd DVR (met Mythtv voor linux).

Instellen van een computer gebaseerd DVR (met Mythtv voor linux).

In verschillende instructables, ik heb gesproken over Mythtv een computergebaseerde dvr (digitale videorecorder). Deed zien geen enkele reden waarom ik een huurprijs betalen moet wanneer er is goedkope computerapparatuur hetzelfde te doen. Niet allee
Bijhouden van uw auto met een Arduino gebaseerde Lojack

Bijhouden van uw auto met een Arduino gebaseerde Lojack

De autodiefstal van de is een echte slepen! Verhoog uw kansen van het herstellen van uw auto door het installeren van deze eenvoudige Arduino gebaseerde tracker in uw auto.Dit project is vrij eenvoudig, en zou een goed project voor een nieuwe Arduino
TapTunes - een Tap-gebaseerde Interface naar iTunes

TapTunes - een Tap-gebaseerde Interface naar iTunes

als onderdeel van mijn Human-Computer interactie termijn Project, opgeklopte ik een klein programma waarmee gebruikers om te controleren iTunes door te tikken op verschillende patronen op een piëzo-elektrische sensor zou.  De Stichting van dit projec
Avontuur maken een tekst gebaseerd

Avontuur maken een tekst gebaseerd

Heb je ooit wilde maken van uw eigen tekst gebaseerd spel kostenloos met geen gedoe. Goed dit is voor jou. Alles wat je gaat nodig hebben is een creatief idee en een computer. Dus laten we aan de slag?Stap 1: De code die u wilt gebruikenDus om te beg