KeyChainino - första spelet nyckelringen programmerbara med Arduino (3 / 14 steg)

Steg 3: Analysera skiss Init



Nu förklara jag för dig, steg för steg, alla rader av skiss.

De första raderna #include används för att importera avr specifika koden för handtag, i ordning:

  • Avbryta bibliotek för att hantera avbrottet från timer 1 och knappar. Avbrotten av de två knapparna används för att vakna upp mikrokontroller efter det går för att sova för att minska makten konsumerar.
  • PROGMEM biblioteket används att sätta konstant variabel till FLASH-minnet i stället för RAM-minnet. Det används eftersom alla variabler som används på skissen lagras i RAM-minnet av mikrokontroller och, oftast, RAM-minnet är mindre än FLASH-minnet.
    Så, när jag använder ett stort antal av konstant variabler - som nummer matrix - jag behöver sätta i blixten för att bevara det RAM-minnet.
    Jag vill informera er som IDE av Arduino, oftast, inte visar om RAM-minnet av mikrokontroller är full. Om du har fyllt hela RAM, helt enkelt skissen att krascha någon gång och du kommer att vara galen eftersom du inte lista ut varför det händer.
    Så, om du använder stora konstant variabler, som flerdimensionell array, Använd PROGMEM.
  • Sova bibliotek används för att sätta mikrokontroller i ett djupt tillstånd där den förbrukar mycket låg effekt.
  • Power bibliotek används för att hantera kraften i kringutrustning i mikrokontroller - som ADC, timers, etc. När vi inte behöver dessa kringutrustning stänga vi dem.

Nästa har vi konstantvärdet för matrisen, stiften och knapparna:

#define MATRIX_ROW 5
#define MATRIX_COL 6
#define PIN_NUMBER 7
#define BUTTON_A 6 //pin 6 - PCINT6
#define BUTTON_B 8 //pin 8 - INT0

I ordning:

  • MATRIX_ROW är antalet lysdioder rader. I detta fall 5 lysdioderper rad.
  • MATRIX_COL är antalet lysdioder cols. I detta fall 6 lysdioder av kolumn.
  • PIN_NUMBER är antalet stift används för 6 x 5 lysdioder Charlieplexing matris.
  • Button_A är den pin-kod på vänster knapp. Denna knapp utlösa PCINT6 avbrottet
  • Knappen _B är den pin-kod på rätt knapp. Denna knapp utlösa INT0 avbrottet.

Nu har vi de variabler som används för Charlieplexing lysdioder matrisen:

  • stift [PIN_NUMBER] är en array som lagrar 7 stiften används för Charlieplexing.
  • connectionMatrix [MATRIX_ROW] [MATRIX_COL] [2] är en multidimensionell Array som visar en enda anslutning av varje LED i matrisen Charlieplexing.
    Första numrerar av de två siffror som omsluts av klammerparentes, är anoden.
    Den andra siffran är katoden.

  • matrixState [MATRIX_ROW] [MATRIX_COL] är den flerdimensionell matris som anger som lysdioder måste slås på eller av. Om du ändrar en bit i denna matris, motsvarande lampan slås på av OFF enligt vilka bitar du infoga: 1 är på, 0 är avstängd.
    Denna matris används alltid i skissen för att för att visa objekt, som pad och klumpa ihop sig, måste de vara skrev i denna matris. Så måste du ta bort den tidigare ståndpunkten genom att objektet koordinaten i matrixState till 0, och sedan kan du skriva den nya positionen genom att sätta 1 för nya koordinater. Alltid i matrixState.

    Om du vill visa ett ansikte i matrisen lysdioder, måste du passerar varje bit av din ansikte matris till matrixState. Magiskt lysdioderna antar din ansikte matris! :)
    Detta eftersom matrisen Charlieplexing uppdateras automatiskt - med timer 1 spill avbrott - enligt endast för matrixState matris.

Se Steg
Relaterade Ämnen

Röst aktiverat LED-belysning med Arduino

Detta projekt är ett tillägg för taligenkänning med Arduino med leandro4b (). Men istället för att använda 3 separata färgade lysdioder, använde jag en multicolor 4-kanals RGBW LED utsläppskälla. Jag hade tillfälle att arbeta på LED Engin förra somma...

Knappsats med Arduino utan med hjälp av knappsatsen bibliotek (första Tutorial)

Knappsats används vanligtvis i de flesta projekt så att kunden att ta itu med projekt som (realtidsklocka (RTC) justera dag, tid, åtkomstkontroll,... etc) men om du använder den med knappsatsen bibliotek för Arduino är det så lätt och inte bra så här...

Programmerbar 8 loopar pedal kopplat med Arduino Mega2560

Senast uppdaterad: 17 februari 2016Detta är den andra delen av min tidigare handledning om hur man gör enkla programmerbara pedaler switcher (eller looper) nu med en MEGA2560 Arduino att uppnå 8 förvaringsbara öglor på 8 förinställningar.Obs det är m...

Den första användningen av 0,96" I2C OLED uppvisning med Arduino UNO

Idag, ska jag visa dig hur du använder 0,96" I2C OLED uppvisning med Arduino UNO styrelse. Det finns många olika typer av OLED-displayer. Jag har fått 4-nålas OLED uppvisning med mig. Här visas kan vara med SPI stift i stället för I2C. Dessa versione...

Den första användningen av ESP8266 med Arduino Uno

I dag ska jag visa dig att hur kan vi förbereda våra modul ESP8266 som ska användas med Arduino UNO.Behovet av lista:1. Arduino UNO (med USB-kabel som ansluten till datorn via USB-kabel, även det kommer att använda sin spänning)2. din dator (om du ka...

LED paraply med Arduino

The LED paraply med Arduino kombinerar ett paraply, en 8 x 10 ledde matrisen och en mikrokontroller Arduino att skapa en kontrollerbar, programmerbara ledde upplevelse i avskildhet i ditt eget paraply. Detta projekt var inspirerad av den elektriska p...

Tankeläsare med Arduino

Hej alla!Detta är min tankeläsare för Arduino.Tankeläsare kan berätta vilken bokstav i alfabetet (ABC) eller som spelar kort du har föreställt med bara några frågor.Det är ett mycket enkelt projekt för församlingen och med några tråd anslutningar men...

DIY virtuell verklighet Skateboard erfarenhet med Arduino och Google kartong

Detta är ett riktigt roligt och enkelt projekt som kan göras ungefär en timme. På botten av skateboard är en accelerometer/gyro med en Arduino ombord som överför kantiga rörelse i styrelsen via bluetooth till en liten virtuell verklighet spel jag gjo...

BLDC Motor Control med Arduino, bärgades HD motor och hallgivare

det finns ett stort intresse dessa dagar bland hobbyister kontrollera borstlösa DC (BLDC) motorer, som har bättre prestanda och bättre energieffektivitet övertraditionella DC-motorer, är men svårare att använda. Många off-the-shelf produkter finns fö...

DIY TV LCD skärm med Arduino och Smart fjärrkontroll

I nästa följande steg, du gör en DIY "TV" med koden för en smart fjärrkontroll, och faktiskt spela videor och även eventuellt ansluta smart fjärrkontrollen till faktiska moderkortet.Material:Folie/spegelSolid och inte sladdrigt stabilisatoren li...

Hur man programmerar ATtiny85 med Arduino uno styrelsen

I denna tutorial använder vi en Arduino ombord som en ATtiny programmerare.För att göra detta kommer att vi använda en Arduino UNO styrelse som en ISP (programmerare) och en ATtiny85 mikro-controller.Vi kommer att använda Codebender - online Arduino...

Borstlösa Gimbal med Arduino

Detta är ett våren 2014 elektronik projekt på Pomona College skapad av Andreas Biekert och Jonah Grubb. Tack till Professor Dwight Whitaker, Tony Grigsby och Pomona Fysikum.Vårt mål med detta projekt var att skapa en 2 axis borstlös gimbal styrs enba...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

KOMMA igång med ARDUINO #5

Hej, ledsen för förseningen av denna handledning. Här i denna tutorial kommer jag lära dig hur man kontrollerar två ledde med Arduino. detta är den grundläggande principen om trafikljus system. Där lätt förändringar från en färg till andra färg efter...

LCD-avståndsmätning med Arduino

Och efter att publicera upp några robotic tutorials, beslöt jag att lägga mer i detalj om hur sensorerna fungerar. Att börja med jag välja en ultrasonic sensor och en Arduino som mikro-controller.Detta Instructable är enbart för förvärvsinkomsten får...

Kapacitans mätare med arduino och 555 timer

KAPACITANS MÄTARE MED ARDUINO OCH 555 TIMER CHIPDetta projekt syftar till att bygga en enkel kapacitans mätare, en enhet för att mäta kapacitans i nanoFarads och microFarad, med en räckvidd på ca 1 nanoFarad till hundratals microFarads.Detta projekt,...

Taligenkänning och syntes med Arduino

I min tidigare Instructable visade jag hur man styr ett par lysdioder med en Arduino ombord och BitVoicer Server. I detta Instructable ska jag göra saker lite mer komplicerat. Jag kommer också att syntetisera tal med Arduino DUEdigital till analog om...

DIY en cykel bakljus med Arduino

Jag är en cykel entusiast.År sedan när jag är en ung vacker man, i mitt andra år på College, hade jag avslutat ritten från Sichuan till Tibet, den berömda G318 i Kina. Det är känt som världens vackraste och mest farliga väg. Om det finns en chans, bö...

Hur man gör ett brädspel med Arduino

i detta Instructable, ska vi lära dig hur du skapar din egen "skulle du hellre... "brädspel med hjälp av Konduktiv färg, en Arduino mikrokontroller och vissa elektronikkomponenter. Spelarna turas om att flytta på spelet vägen som regisserades av...