Voltooien van de printplaat Lab & POV visitekaartje (13 / 13 stap)

Stap 13: Program de PIC


De Raad van bestuur nu voltooien, we hoeven maar te geven het een programma wilt uitvoeren en zullen we u onze gratis creatie in het wild klaar!

De PIC kan worden geprogrammeerd in C++ of assembler. Ik koos C++, voor meestal om tijd te besparen, maar ook omdat ik niet per se wil verbinden aan deze architectuur, en toegegeven, programmeertalen zijn niet leuk! Voor eenvoud ontwikkeld ik het bord met behulp van de DIP-PIC12F509, die compatibel is met de 508 pin is. Het is ook groter en gemakkelijker te manipuleren voor testdoeleinden, en ik vond dat er meer geheugen dan ik nodig had, dus ik was in staat om te downgraden de chip voor het eindproduct.

De werking van de POV-kaart
_______________________________________________________________________

De kaart is uitgeschakeld totdat de kortstondige op schakelaar ingedrukt wordt gehouden. Op inschakelen simuleert het programma een weinig rollende bal met een binaire teller die in en uit te met de schuine stand van de kaart rollen. Na ongeveer vier kantelt heen en weer, het dan schakelt over naar de modus Persistence Of Vision en doorloopt een aantal geprogrammeerde patronen. Momenteel staat mijn naam, gevolgd door een nette blokgolf patroon dat als een scheidingsteken, waarna mijn telefoonnummer fungeert. Wanneer de tilt schakelaar sluit, wordt dat door het programma herkent als het begin van een golf, en speelt de huidige patroon een keer door, dan wacht tot een andere golf begint. Zolang de golf doet niet dubbel terug te vroeg, en het patroon niet te lang is, zal er geen overlapping zoals het patroon zal niet leeg totdat het herstelt.

De patronen
_______________________________________________________________________

Elk patroon is een matrix met bytes, elke byte van een kolom in de reeks. De tijd die elke kolom (frame) in het patroon nog aan en de tijd tussen frames bepaalt de snelheid van het scherm, en hoe dicht de frames gelijkmatig verdeeld wanneer de kaart wordt gezwaaid. In feite, verandert de breedte van de tekens en het patroon als een geheel. Bovendien, de snelheid waarmee u de kaart golf speelt ook een rol in de afstand, maar niet genoeg om het onleesbaar; Aangezien het veranderingen frames met een constante snelheid, de variatie is niet genoeg om de materie, maar is genoeg om het dynamische kijken. Nette, hè?

Het om patronen te maken, ik heb een script die ik gevonden, geschreven door Andrew Masongewijzigd. Mijn versie is aangepast zodat alternatieve byte opmaak en aantal LEDS, maar de plaatsing van de LED is vastgesteld, voor het moment. Elk patroon die u wilt, kun je mits het is klein genoeg om te passen in het geheugen van de foto's. Het tarief dat het patroon speelt terug bij kan worden gewijzigd in de code, evenals.

Het programma
_______________________________________________________________________

De code is erg eenvoudig. Zonder PWM of onderbreekt waren er niet veel lastige dingen die ik doen kon, zelfs als ik wilde. Behoud van ruimte en optimaliseren maakte het een beetje meer interessant, echter gezien de tweaken nodig om de code in de PICs tiny het geheugen passen.

Om te spelen een patroon, controleert de PIC gewoon voor de tilt-switch wordt geactiveerd, dan een patroon doorlopen. De GPIO output wordt ingesteld op de huidige byte in de array, die een frame vertegenwoordigt, wacht een ingestelde periode, dan verhoogt de matrix. Zodra het patroon heeft gespeeld helemaal door, het blanks het scherm en wacht totdat de tilt schakelaar heeft geweest geactiveerd. Dit betekent een nieuwe golf van start gegaan, en het gaat door het patroon nogmaals.

De frame-code ziet er als volgt, zonder aanhalingstekens: "0b00000000,". De 0b bakent een byte en de komma scheidt elke byte van het volgende. Dit ligt allemaal binnen een matrix van constanten, aangezien het zal niet tijdens het afspelen veranderen en dat RAM bespaart. Vijf van de bits in de matrix geven een LED uitgang, terwijl een ongebruikte is en een een beetje van het alleen-lezen voor de invoer pin gebruikt is. De bits die gebruikt zijn: 0bXX12X543, waar het cijfer de pin geeft.

De Code
_______________________________________________________________________

#include < htc.h >
#include < stdlib.h >

 __CONFIG(MCLRE_OFF & WDT_OFF & CP_OFF & OSC_IntRC); constchar waveform[] = {/* 0bXX12X543 - sets pin at number, to output high, e.g.: 0b00100111, complete array code omitted for space; see attached .c file for complete code */}; constchar binary[] = {/* code omitted */}; constchar name[] = {/* code omitted */}; voidinit(void) { OPTION = 0b01000111; //sets pin 2,3,5,6,7 output, pin 4 input TRIS = 0b00001000; }voiddisplay_roll (constchar p[], constchar pattern_length) {char i = 0; for (unsigned int j = 0; j < 350; j++) {//plays pattern forwards or backwards depending on tiltif (GP3 == 0 && i < pattern_length) { i++; }elseif (GP3 == 1 && i > 0) { i--; } GPIO = p[i]; //sets LED outputs to current frame in current pattern _delay(16000); //frame delay in number of cpu cycles}}voiddisplay_pattern (constchar p[], constchar pattern_length, constchar loops, constchar speed) {for (char i = 0; i < loops; i++) {//exits display either at swing restartfor (char j = 0; j < pattern_length && GP3 == 1; j++) { GPIO = p[j]; //frame delay in multiples of 10 microseconds :)for (char k = 0; k < speed; k++) { _delay(40); }} GPIO = 0b00000000; //blank output so pattern doesn't overlap while swinging back to startwhile (GP3 == 1); //if still waving, wait until swing restarts and switch contacts _delay(5000); //lazy debounce}}voidmain(void) { init(); display_roll(binary, 31); while (1) {/* function variables are: pattern name, length of pattern (in bytes/frames), number of loops, speed of display/framerate */ display_pattern(name, 69, 110, 25); display_pattern(waveform, 71, 100, 25); display_pattern(number, 61, 110, 25); }} 

Programmering van de Raad van bestuur
_______________________________________________________________________

Alle code is geschreven in Notepad ++, een uitstekende vrije meertalige redacteur. U moet ook de MPLAB IDE met een kopie van de HI-TECH C Compiler. Beide zijn beschikbaar in de gratis versies.

U moet een kopie van de Microchip PICKit 2 programmeersoftware. Verbonden met de chip en de iCP01 aangesloten, stelt u de apparaat-familie "Baseline" en selecteer PIC12F508 uit de dropdown apparaat. Vervolgens laad het hex bestand en druk op de Schrijf knop.

Verwijzingen

  1. PIC12F508/509/16F505 gegevensblad
  2. Hi-Tech C 9.81 Compiler User Guide
  3. POVgen Online LED patroon Generator
  4. Hi-Tech C Compliler
  5. MPLAB Integrated Development Environment

Tools & Supplies

Gerelateerde Artikelen

Demontage van de printplaat

Demontage van de printplaat

ik heb nooit graag elektronica.  Ik ben vastbesloten om te leren over stralingsenergie en overmatige eenheid circuits nu, hoewel, en de plaats om te beginnen is het begin.  Als u sommige delen om mee te spelen, ben ik de demontage van de voeding van
Voltooien van de ontmanteling van de iMac G3

Voltooien van de ontmanteling van de iMac G3

WAARSCHUWING: ONTMANTELING VAN IETS MET EEN CRT-MONITOR JE WEL EEN RISICO VAN ELEKTRISCHE SCHOKKEN, ALS GEVOLG VAN DE LADING OPGESLAGEN IN DE ANODE. Deze gids is een onvolledige wandeling van de ontmanteling van de iMac G3, samengesteld uit foto's wi
Instructies voor het voltooien van de Mock-Up van Track Diaontwerp voor Lift/laagste van Center gemonteerde voetsteunen op macht rolstoelen

Instructies voor het voltooien van de Mock-Up van Track Diaontwerp voor Lift/laagste van Center gemonteerde voetsteunen op macht rolstoelen

instructies voor het voltooien van de Mock-Up van Track Diaontwerp voor Lift/laagste van Center gemonteerde voetsteunen op macht rolstoelenCentrum gemonteerde voetsteunen om te worden opgeborgen onder de stoel goed te heffen, en lagere worden ingezet
De klok van de muur van de printplaat

De klok van de muur van de printplaat

hebben veel willekeurige printplaten rond leggend? Wilt u recycleren voor een beter doel? Dit is een cool en decoratieve printplaat Wandklok gemaakt van enkele leveringen.Stap 1: Tools en benodigdheden u nodig:Oude printplaat (geborgen)Super lijm ($1
Afgedrukt van de printplaat (PCB) sproeier Machine

Afgedrukt van de printplaat (PCB) sproeier Machine

Hoe zou u willen maken van één of meerdere Printed Circuit Boards in minder dan 2 minuten?Hey weer.  Hoop dat iedereen genoten van mijn laatste Instructable op hoe maak je een grijphaak launcher.  Vandaag ga ik een iets andere weg van de schepping.Di
De houder van de printplaat

De houder van de printplaat

Mijn idee is het creëren van een variabele printplaat houder voor het werken op de planken.De foto is slechts een voorbeeld van een bestaande oplossing, wil ik een verschillende montage-mechanisme.
Instructies voor het voltooien van Mock-Up of Spring-Loaded Design voor Lift/laagste van Center-Mounted voetsteunen op macht rolstoelen

Instructies voor het voltooien van Mock-Up of Spring-Loaded Design voor Lift/laagste van Center-Mounted voetsteunen op macht rolstoelen

Center gemonteerde voetsteunen om te worden opgeborgen onder de stoel goed te heffen, en lager worden ingezet. Een mechanisme voor een onafhankelijke exploitatie van voetensteun stuwage en implementatie is niet opgenomen in de markt macht rolstoelen
Voltooien van schouders & onderarmen vrije gewichten opleiding W / Supersets & Dropsets

Voltooien van schouders & onderarmen vrije gewichten opleiding W / Supersets & Dropsets

Deze volledige schouders en onderarmen free Weight training workout gebruik beide drop sets en supersets tijd onder spanning voor de bouw van de grootte/sterkte van de spier en doelstellingen te maximaliseren alle drie hoofden van de schouder spieren
Persistentie van de visie weergeven (POV)

Persistentie van de visie weergeven (POV)

Hi guys! Dit is mijn eerste Instructable zo als een gewoon geen fouten maakt me vertellen. OK laten we aan de slag!WAT U NODIG ZULT HEBBEN-Arduino uno-vaste kern draad of lint kabel-9v batterij module-6v motor (ik heb de mijne uit een CD-speler)-rest
Instructies voor het voltooien van Mock-Up van Track Diaontwerp voor Lift/laagste van Center-Mounted voetsteunen op macht rolstoelen

Instructies voor het voltooien van Mock-Up van Track Diaontwerp voor Lift/laagste van Center-Mounted voetsteunen op macht rolstoelen

Center gemonteerde voetsteunen om te worden opgeborgen onder de stoel goed te heffen, en lager worden ingezet. Een mechanisme voor een onafhankelijke exploitatie van voetensteun stuwage en implementatie is niet opgenomen in de markt macht rolstoelen
Voltooien van koplamp of Mistlamp restauratie: saai, nevelig, geel, ontpit lichten Fix

Voltooien van koplamp of Mistlamp restauratie: saai, nevelig, geel, ontpit lichten Fix

dit zal u tonen hoe te herstellen van oude kunststof hoofd/foglights die zijn geworden wazige, geoxideerd, of afgestoken/ontpit zodat ze gloednieuw kijken. Ook, afhankelijk van hoe slecht uw koplampen zijn verslechterd, ziet u veel betere lichtopbren
Voltooien van pure sinewave omvormer

Voltooien van pure sinewave omvormer

volledige pure sinewave omvormerStap 1: InleidingDe omvormer PCB is eenvoudig te monteren door het volgen van het label van de onderdelen moet worden ingevoegd. De keuze van de spanning om te worden gebruikt voor het aandrijven van de omvormer 12v va
PCBVac(TM) schoonmaken van uw printplaat

PCBVac(TM) schoonmaken van uw printplaat

De PCBVac(TM) is de enige tool die u zal nood te halen afhelpen van zowel droge als natte media uit een PCB. Het is als een winkel vac voor uw PCB reparatie behoeften.Voor meer informatie bezoek op www.soldertools.net
Voltooien van lagere lichaam mobiliteit Warmup (enkels, heupen, & knieën)

Voltooien van lagere lichaam mobiliteit Warmup (enkels, heupen, & knieën)

Probeer deze volledige lagere lichaam mobiliteit warmup aan uw heup-, knie- en enkel gewrichten losser voor een veiligere en doeltreffendere training.