Slutföra kretskort Lab & POV visitkort (13 / 13 steg)

Steg 13: Programmera PIC



Styrelsen nu fylla, vi behöver bara ge det ett program att köra och vi är beredda att ställa vår skapelse fri i naturen!

BILDEN kan programmeras antingen i C++ eller assembler. Jag har valt C++, mest för att spara tid, men också eftersom jag inte nödvändigtvis vill begå denna arkitektur och visserligen, församlingen språk är inte roligt! För enkelhetens skull utvecklat jag styrelsen med dopp PIC12F509, som är pin kompatibla med 508. Det är också större och lättare att manipulera för att testa, och jag fann att det hade mer minne än jag behövde, så jag var kunna nedgradera chip för slutprodukten.

Hur POV kortet fungerar
_______________________________________________________________________

Kortet är avstängd tills den ögonblickliga på switch hålls ner. Strömmen upp simulerar programmet en liten rullande boll med en binär räknare som rullar in och ut med lutningen på kortet. Efter ungefär fyra lutar fram och tillbaka, det och sedan växlar till Persistence Of Vision läge och cyklar genom en serie av programmerade mönster. För närvarande, står det mitt namn, följt av ett snyggt fyrkantsvåg mönster som fungerar som en avgränsare och sedan mitt telefonnummer. När växeln tilt stängs programmet känner igen som i början av en våg, och spelar nuvarande mönster en gång igenom, sedan väntar tills en annan våg börjar. Så länge vågen inte dubbel tillbaka för tidigt, och mönstret inte är för lång, blir det ingen överlappning som mönstret blir tom förrän det återställs.

Mönster
_______________________________________________________________________

Varje mönster är en matris av byte som varje byte en kolumn i sekvensen. Den tid som varje kolumn (ram) i mönstret är kvar på och tiden mellan ramar bestämmer hastigheten på displayen, och hur nära ramarna är fördelade när kortet är vinkade. I grunden ändrar bredden på karaktärerna och mönstret som helhet. Dessutom spelar den hastighet med vilken du vinkar kortet också en roll i avståndet, men inte tillräckligt för att göra det oläsligt; sedan det ändringar ramar med en konstant hastighet, variationen inte räcker för att fråga, men är nog att det ser dynamisk. Snyggt, va?

För att skapa mönster, ändrade jag ett skript som jag hittade skriven av Andrew Mason. Min version är anpassade för alternativa byte formatering och antal lampor, men LED placeringen är fast, för närvarande. Du kan göra något mönster som du vill, förutsatt att det är liten nog att passa i PICs-minnet. Den hastighet med vilken mönstret spelar tillbaka på kan ändras i koden, liksom.

Programmet
_______________________________________________________________________

Koden är mycket enkel. Utan PWM eller avbrott fanns det inte mycket många knepiga saker jag kunde göra, även om jag ville. Bevara utrymme och optimera gjorde det lite mer intressant, dock, med tanke på den tweaking behövs för att göra koden passa i bilder mycket liten minne.

För att spela ett mönster, PIC helt enkelt kontrollerar för växeln tilt aktiveras, sedan loopar igenom ett mönster. Det uppsättningar GPIO utgångarna till den nuvarande byten i arrayen, vilket utgör en ram, väntar en fastställd period, då ökar matrisen. När mönstret har spelat hela vägen igenom, blanketter i displayen och väntar tills växeln tilt har aktiverats. Detta tyder på en annan våg har startat, och den går igenom mönstret igen.

Frame koden ser ut så här, utan citationstecken: "0b00000000,". 0b skisserar en byte och semikolonet särskiljer varje byte från nästa. Detta är alla placerade inuti en rad konstanter, eftersom det inte kommer att förändras under uppspelning och som kommer att spara RAM. Fem bitar i matrisen anger en LED utgång, medan en är oanvända och en är lite skrivskyddad används för input stift. De bitar som används är: 0bXX12X543, där siffran anger PIN-koden.

Koden
_______________________________________________________________________

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

__CONFIG (MCLRE_OFF & WDT_OFF & CP_OFF & OSC_IntRC);
constchar vågform [] = {/ * 0bXX12X543 - anger pin nummer, att produktionen hög, t.ex.: 0b00100111, slutföra array koden utelämnas för utrymme; se bifogade .c fil för komplett kod * /};
constchar binärt [] = {/ * koden utelämnas * /};
constchar namn [] = {/ * koden utelämnas * /};
voidinit(void) {
ALTERNATIV = 0b01000111;
uppsättningar pin 2,3,5,6,7 utgång, stift 4 ingång
TRIS = 0b00001000;
} voiddisplay_roll (constchar p [], constchar pattern_length) {char jag = 0;
för (unsigned int j = 0; j < 350; j ++) {//plays mönster framåt eller bakåt beroende på tiltif (GP3 == 0 & & jag < pattern_length) {i ++;} ElseIf (GP3 == 1 & & jag > 0) {i--;}
GPIO = p [i]; anger LED utgångar till aktuell bildruta i nuvarande mönster
_delay(16000); Frame försening i antalet cpu-cykler}} voiddisplay_pattern (constchar p [] constchar pattern_length, constchar loopar, constchar hastighet) {för (char jag = 0; jag < loopar; i ++) {//exits visas antingen på swing restartfor (char j = 0; j < pattern_length & & GP3 == 1; j ++) {
GPIO = p [j];
utforma dröjsmål i multiplar av 10 mikrosekunder:) för (char k = 0; k < hastighet; k ++) {_delay(40);}}
GPIO = 0b00000000; Tom utdata så att mönstret inte överlappar samtidigt svänga tillbaka till startwhile (GP3 == 1); om fortfarande viftande, vänta tills swing omstarter och switch kontakter
_delay(5000); lata debounce}}voidmain(void) {
init();
display_roll (binär, 31).
samtidigt (1) {/ * funktionen variabler är: Mönsternamn, längden på mönster (i byte/frames), antal loopar, hastigheten på display/framerate * /
display_pattern (namn, 69, 110, 25);
display_pattern (vågform, 71, 100, 25);
display_pattern (nummer, 61, 110, 25);
}}

Programmering i styrelsen
_______________________________________________________________________

All kod skrevs i Notepad ++, en utmärkt gratis multi-language editor. Du behöver också MPLAB IDE med en kopia av HI-TECH C-kompilator. Båda finns i gratis versioner.

Du behöver en kopia av mikrochips PICKit 2 programmering programvara. Med chip ansluten och iCP01 inkopplad, ange enhet familjen att "Baseline" och välj PIC12F508 från listan för enheten. Sedan läsa in hex filen och tryck på knappen Skriv.

Referenser

  1. PIC12F508/509/16F505 datablad
  2. Hi-Tech C 9.81 Compiler User Guide
  3. POVgen online LED Pattern Generator
  4. Hi-Tech C Compliler
  5. Integrerad utvecklingsmiljö MPLAB

Verktyg & tillbehör

Se Steg
Relaterade Ämnen

Att göra kretskort på eller nära hem: en omfattande översikt, nästan en Guide

finns det lite kontroverser över att göra egna mönsterkort, många beslutsfattare tror att professionella styrelser är så billig nu när de är vägen att gå. Andra vill ha mer kontroll och förhoppningsvis kort sväng runt tid som kommer med att göra sina...

Hur man skriver en allmän kemi labbrapport

detta instructable kommer att lära dig hur man skriver en enkel men korrekt labbrapport för en akademisk nivå kemi lab kurs. För att slutföra denna lab, behöver du tillgång till ett Microsoft Word-program; alla versioner kommer att fungera. Detta är...

ElectroPlush - sovande Nalle som vaknar upp när beröring på magen

med detta Instructable, kommer du att kunna göra den typiska nallebjörn plysch leksak och hacka den med vissa kretsar för att göra det "vakna upp" när dess mage vidrörs. ElectroPlush använder kapacitiv avkänning på sin mage, lysdioder på dess ög...

Varinha POV - BSB FAB LAB

Sistemas baseados em Persistencia da Visão são uma maneira divertida de criar fotografias de longa exposição muito interessantes, bem como visar de luz. Nossa varinha consiste em uma fileira de lysdioder controlados por um Arduino Nano. Quando ligada...

Bygga din egen FM-Radio Astronomy Lab

eftersom jag är en enkel man, och tanken på att försöka förstå allt okändan är mer än jag kan hantera, jag föredrar den enklare sidan av astronomi. Min personliga astronomi verktyg inkluderar ett 4,5" reflektor teleskop, ett par av kikare och en FM-R...

Gör dina egna präglade visitkort med syra etsning

Etch. Tryck på. Skriv ut. Vill du lära dig att emboss papper för dina egna visitkort? Skapa dina egna mönster på datorn och etch det in en mässingsskylt.Jag har velat göra mitt eget präglade visitkort sedan jag lämnade en verkligen otroligt en på en...

BÄRBAR MINI LAB i en ryggsäck

Jag är en by pojke, arbetar som ingenjör utanför min egen stat. Varje år jag glida hem till två eller tre gånger, från hassle och jäktet i stadslivet så att jag kan koppla av och njuta av i den naturliga skönheten i min by och fars gård. Under min vi...

Gamla ATX PC strömförsörjningen till nya lab makt leverans fallet

Hej alla.Jag vill visa dig hur du omvandlar en gammal ATX PC power supply till ett nytt fall för lab strömförsörjning.Frame höljet är i aluminium och sidorna från 3mm klart akrylglas. Vita omslaget skyddar akryl glaset från repor (om du vill kan du t...

Visitkort med Polaroid + Arduino

Målet med vårt projekt var att skapa en maskin som producerar visitkort.Vi beslutade att hacka en polaroid att utnyttja inre mekanism för att skapa våra personliga visitkort som bär logotypen för Fab Lab Turin.Vi ersätter slutaren med en RGB LED och...

Bygga en POV, Propeller klocka motor

under tiden Propeller klocka av Bob Blick är känd lugnt bra i DIY samhällen http://www.bobblick.com/techref/projects/propclock/propclock.html .Vissa människor gör galna saker http://www.ledcontrol.narod.ru/eng/index.htm .Ett problem att bygga en kloc...

Magic Wand POV (ännu en POV leksak)

NY! (11/14/2014) Detta kit har uppgraderats till ett professionellt tillverkade kretskort och priset har sänkts till endast $9 per kit. (Och för lärare, ett rabatterat pris på endast $8.00 per kit.)Denna persistens av Vision (POV) leksak är enkel att...

Ändring av laserskrivare Lexmark E260 för direkt laserutskrift för Double Sided kretskort

Detta är den tredje versionen av min Instructable för återanvända en Lexmark E260 laserskrivare att skriva ut toner direkt på copperclad styrelser. När tryckt och "fast" att koppar av aceton vapor, fungerar tonern som en motstå under normala ets...

Rainbow Lab

Denna rainbow lab är en "skiktad lösning" med olika densitet av saltvatten. Materialen är superbilligt och slutresultatet är imponerande.Eleverna är engagerade i en praktisk erfarenhet som uppmuntrar verkliga världen anslutningar och tvingar dem...

CCNA Lab Setup

Jag har nyligen börjat studera för CCNA examen och men att det skulle vara häftigt att ha några fysiska redskap att spela med också. Det visar sig det finns ganska några prisvärda alternativ (relativt) för att göra detta.Detta instructable beskriver...

Ansluta till den virtuella Computing Lab (VCL)

Välkommen till de virtuella Computing Lab installationsanvisningarna.Följ stegen nedan för att få anslutas till VCL och börja ditt lab uppdrag.Steg 1: Kontrollera din webbläsare Det rekommenderas att du använder den senaste versionen av Mozilla Firef...

3D visitkort (för projektion konstnärer)

Hej, jag har designat en 3D visitkort för projektion konstnärer.Alltför lätt att göra! Kolla upp det!Visitkort är ofta kastas bort om det är en platt tråkigt kort.Jag har designat ett visitkort som förvandlas till ett 3D popup-kort.Detta kan människo...

Enkel och iögonfallande visitkort

Välkommen till min tutorial på att göra en enkel men iögonfallande visitkort, det kan vara för något företag eller organisation.Allt du behöver är adobe Photoshop, om du inte vill köpa det du kan ladda ner testversionen av 30 dagar istället.Njut av-L...

Koppar bordläggningen holiday ornament - kemi lab

varje år, jag har min kemi studenter gör juldekorationer med kemiska medel. När de görs, kan de ta hem och hänga sina koppar pläterad ornament på deras "Chemis-träd".Syfte:Vid slutförandet av denna lab, studenter kommer att kunna skriva och bala...

Nukleära kemi och fysik Lab för gymnasiet klassrummet

dess lite svårt för att inte nämna farligt att använda starka strålkällor i klassrummet och ge eleverna verklig erfarenhet till radioaktivt sönderfall. Här är ett snabbt sätt att ge eleverna en möjlighet att utforma och genomföra en undersökning om a...