3D tryckt Microcontroller Dice Roller (3 / 10 steg)

Steg 3: Programmera mikrokontroller

Jag skrev min kod i MPIDE. MPIDE är helt gratis och kan laddas ner här. Obs: MPIDE kan programmera bara om någon mikrokontroller, inklusive alla chipKIT och Arduino styrelser. Om du använder en Arduino ombord och har redan Arduino's IDE som fungerar lika bra för.

Om du är helt ny till mikrokontroller och programmering i en IDE, här är en snabb tutorial som förklarar hur du installerar MPIDE och använda den för att kommunicera med din styrelse: Intro till MPIDE.

Jag skrev för mikrokontroller koden kan ses nedan. Det finns tre huvudsakliga delar till denna "skiss":

  • Roll() funktion som gör det ser ut som om dör faktiskt rullar. Detta är en funktion jag skapat själv och det ingår i koden nedan.
  • Generera ett slumptal mellan 1 och 6 med rand() funktion. (Funktionen är fördefinierade i huvudfilen stdlib.h.)
  • Och en serie om uttalanden att lysa upp rätt lysdioderna baserat på den slumpmässiga värde som genereras.

Denna kod kan kopieras direkt från rutan nedan och klistras in i din IDE. Sedan kan du överföra den direkt till din styrelse därifrån. Om du är osäker på hur man laddar upp skissen, kolla "Intro till MPIDE" tutorial länkade ovan.

Obs: Ledsen för mycket utrymmeskrävande formatering för koden. Det används för att visa i en fin liten låda du kan bläddra igenom, men Instructables gjort vissa ändringar i deras redigeringsgränssnitt och jag inte kan göra det längre.

#include / / för att använda funktionen rand()

Initierar PIN-koden för knappen input

CONST int btnPin = 26.

Initierar stift att kontrollera varje LED

CONST int led_left_top = 33. LED i övre vänstra hörnet av die

CONST int led_left_center = 32. LED i till vänster i die i raden center

CONST int led_left_bottom = 31; LED i det nedre vänstra hörnet i die

CONST int led_right_top = 30. LED i det övre högra hörnet i die

CONST int led_right_center = 29. LEDDE till höger i die i raden center

CONST int led_right_bottom = 28; LED i det nedre högra hörnet i die

CONST int led_center = 27. LED i mitten i die

Skapa en funktion för att simulera effekten av en dö rullande

Funktionen kommer att göra LED flimrar genom nummer 1-6

void roll()

{

int jag = 0; Räkna variabel för loop

för (jag = 0; jag < 5; i ++) / / cykla 5 gånger

{

Display 1

digitalWrite (led_left_top, låg);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, låg);

digitalWrite (led_center, hög);

Delay(50); vänta 50 ms innan visas nästa värde

Skärm 2

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, låg);

Delay(50);

Skärm 3

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, hög);

Delay(50);

Display 4

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, hög);

digitalWrite (led_right_top, hög);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, låg);

Delay(50);

Skärm 5

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, hög);

digitalWrite (led_right_top, hög);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, hög);

Delay(50);

Display 6

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, hög);

digitalWrite (led_left_bottom, hög);

digitalWrite (led_right_top, hög);

digitalWrite (led_right_center, hög);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, låg);

Delay(50);

}

} / / End av rulle funktion

Initiliazing variabel som representerar die värde

int die_value = 0;

Annullerasetup () / / configure microcontroller pins

{

SET-knappen pin för input

pinMode (btnPin, ingång);

Set LED stift till utgång

pinMode (led_left_top, produktionen);

pinMode (led_left_center, produktionen);

pinMode (led_left_bottom, produktionen);

pinMode (led_right_top, produktionen);

pinMode (led_right_center, produktionen);

pinMode (led_right_bottom, produktionen);

pinMode (led_center, produktionen);

}

Ogiltigloop )

{

Kontrollera om du trycker på knappen

om (digitalRead(btnPin) == hög) / / om knappen trycktes

{

roll(); Simulera die rulle

die_value = (rand() % 6) + 1; Välja slumpmässigt die värde, denna kod kommer att generera ett tal mellan 1 och 6

om (die_value == 1) / / bara centrum LED lyser

{

digitalWrite (led_left_top, låg);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, låg);

digitalWrite (led_center, hög);

}

ElseIf (die_value == 2) / / endast övre vänstra och nedre höger lysdioder lyser

{

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, låg);

}

ElseIf (die_value == 3) / / övre vänstra, nedre höger och center lysdioder lyser

{

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, hög);

}

ElseIf (die_value == 4) / / de fyra lysdioderna på hörnen lyser

{

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, hög);

digitalWrite (led_right_top, hög);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, låg);

}

ElseIf (die_value == 5) / / 4 hörn lysdioderna och stadens LED lyser

{

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, hög);

digitalWrite (led_right_top, hög);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, hög);

}

annat / / die_value == 6 och alla lysdioder lyser utom centrum en

{

digitalWrite (led_left_top, hög);

digitalWrite (led_left_center, hög);

digitalWrite (led_left_bottom, hög);

digitalWrite (led_right_top, hög);

digitalWrite (led_right_center, hög);

digitalWrite (led_right_bottom, hög);

digitalWrite (led_center, låg);

}

Delay(4000); visar dö värde för 4000ms eller 4 sekunder

}

annat / / lysdioder stanna utanför om knappen inte har tryckts

{

digitalWrite (led_left_top, låg);

digitalWrite (led_left_center, låg);

digitalWrite (led_left_bottom, låg);

digitalWrite (led_right_top, låg);

digitalWrite (led_right_center, låg);

digitalWrite (led_right_bottom, låg);

digitalWrite (led_center, låg);

}

}

Se Steg
Relaterade Ämnen

Holiday Dice Roller

vår familj alltid förlora tärningarna från spel, så vi behövde en mer permanent lösning...Detta är ett roligt projekt, baserat på Arduino. Jag valde ett helgtema för rutan, men du kan naturligtvis använda någon typ av box du.Denna enhet rullar två tä...

Hur man gör en 3D tryckt Microcontroller fallet

Överklagandet till 3D tryckta saker är ganska uppenbar. Du kan skapa alla möjliga saker i olika färger och införliva dem din egen fancy stilar. Om du är en person som gillar tanken på att kunna anpassa din elektronik eller har vissa teman i datorn oc...

Hur man gör en elektronisk tärning Roller

Det här inlägget Detaljer ett projekt jag avslutade förra sommaren, en elektronisk tärning roller. I detta inlägg, jag ska gå över hur och varför jag skapade det, och hur kan du göra en alltför!Steg 1: Varför bygga en elektronisk tärning Roller?Mitt...

Hur man spela Liar Dice

för Piraten i Karibien fläktar, du kommer förmodligen känna igen detta spel. Jag fick lära mig detta spel medan jag stoppades för natten på min senaste cross country roadtrip av olika slag. Liar Dice, eller Liar's Dice eller Perudo eller Dudo eller r...

AVR Assembler handledning 11

Välkommen till handledning 11!I den här korta guiden kommer vi slutligen att bygga den första delen av vårt sista projekt.Det första du bör göra är att gå till det allra sista steget i denna tutorial och titta på videon. Sedan komma tillbaka hit. [pa...

AVR Assembler handledning 6

Välkommen till Tutorial 6!Dagens handledning kommer att vara kort där vi kommer att utveckla en enkel metod att kommunicera data mellan en atmega328p och en med två portar ansluta dem. Vi kommer ta sedan tärningarna rullen från läraren 4 och registre...

AVR Assembler handledning 10

Välkommen till handledning 10!Ledsen att det tog så lång tid för att få denna nästa avbetalning ut men detta är en ganska hektisk tid på året. I alla fall, är här det!Vi har kommit långt och du förmodligen redan är kompetenta nog att skriva många int...

AVR Assembler Övningsexempel 9

Välkommen till Övningsexempel 9.Idag kommer vi att visa hur du kan styra både 7-segment display och en 4-siffrig display med våra ATmega328P och AVR assembler kod. I samband med detta får vi ta omvägar till hur du använder stacken för att minska anta...

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...

3D tryckt Turks huvud dice

jag arbetar på en app som genererar 3D-modeller av Turks huvud knop som sedan kan 3D tryckt. Jag trodde det skulle vara häftigt att generera Turks huvud dice, så gick jag om att göra det hända!Steg 1: Design Detta är ett verktyg som jag skrev som til...

3D tryckta Caster Wheel med Xerox Roller

Jag ville ge min DIY design showcase skåpet lite mer stabilitet. Så jag skrev ut ett par hjul hjul. Xerox mekaniker gav mig en stor låda av gammal feeder rullarna, så detta är ett bra projekt att använda några av dem.Det är ett riktigt enkelt projekt...

Mage dice tower: laserskuret och 3D tryckta

Vi spelar en massa brädspel runt mitt hus, och om du har barn, då vet du hur det är att hämtar tärningar från golvet varje par varv. Så några månader tillbaka, min flickvän och jag började undersöka dice torn för att hålla tärningarna från att flyga...

3D tryckt DNA lampa

För några månader sedan jag bläddrade online genom vissa 3D-modeller för 3D utskrift och jag hade idén att göra en cool roterande DNA Helix lampa. Jag blev inspirerad av de traditionella lavalampor men jag ville göra något lite annorlunda.Jag tänkte...

MicroView Dice

På grund av sin popularitet och användarvänlighet, Arduino är vår favorit controller och vi var super glada över att hitta något som gör det ännu mer mångsidig: denna MicroView styrelse! Det är första chip-storlek Arduino kompatibel vi har hittat som...

3D tryckta fjärrstyrda BB8 Droid - gör kursen

Detta instructable skapades enlighet projektet kravet på Makecourse vid University of South Florida (www.makecourse.com)Hej killar,Detta är mitt sista projekt för göra kursen på USF. Vi har kunnat bygga vad vi ville, så länge som det drivs med Arduin...

3D tryckt robotarm

Denna robotarm består nästan helt av 3D tryckta delar som snap tillsammans. Den har tre servo-kontrollerade leder, plus en roterande bas och gripare. Armen styrs av ett antal knappar som ansluter till en Arduino Uno gömd i basen. En enkel krets gör a...

3D tryckt interplanetära raket

Inspirerad av NASA: s nya SLS (Space Launch System), denna interplanetära raket är en skalenlig modell av ett etappvis space exploration system är ett roligt sätt att lära sig utrymme reser genom 3D-utskrifter. Med hjälp av en Dremel tanken Builder,...

Cykel BoosterPack: En 3D tryckt bärbara elektriska Assist

Jag ville verkligen en E-cykel men jag hade inte $4.000 för en helt ny, eller ens $1,500 för en hub motor konverteringssats. Så istället jag skapade ett tredje alternativ: Abillig värdefulla E-bike kit: 'Cykel BoosterPack'.BoosterPack utnyttjar anpas...

2 x 2 magnetiska Dice kub

strax efter avslutad mitt magnetisk Rubiks Dice kub, jag började tänka över möjligheten att skapa ett 2 x 2 version av dice kuben.Först av alla, vissa terminologi av kuben som du behöver veta. En "cubie" hänvisar till någon av de små sub tärning...