Stap 3: De Microcontroller programmeren
Schreef ik mijn code in MPIDE. MPIDE is volledig gratis en kan worden gedownload hier. Opmerking: MPIDE kan zowat elke microcontroller, inclusief alle chipKIT en Arduino boards Arduino boards program. Als u van een Arduino board gebruikmaakt en al de Arduino IDE die ook net zo goed zal werken.
Als je gloednieuwe microcontrollers te programmeren in een IDE, hier is een snelle tutorial die hoe uitlegt te installeren MPIDE en gebruiken om te communiceren met je board: Inleiding tot de MPIDE.
De code die ik schreef voor de microcontroller is beneden te zien. Er zijn drie voornaamste gedeelten aan deze "schets":
- De roll()-functie waardoor het lijkt alsof het sterven is daadwerkelijk rollen. Dit is een functie ik zelf heb gemaakt en wordt opgenomen in de onderstaande code.
- Het genereren van een willekeurig getal tussen 1 en 6 met de functie rand(). (Deze functie vooraf is gedefinieerd in het headerbestand stdlib.h.)
- En een reeks als verklaringen aan het licht van de juiste LED's op basis van de waarde die wordt gegenereerd.
Deze code kan worden direct van het vak hieronder gekopieerd en geplakt in uw IDE. Vervolgens kunt u het uploaden rechtstreeks naar je board vanaf daar. Als u niet zeker weet hoe het uploaden van de schets, check out de tutorial van de "Intro te MPIDE" gekoppeld hierboven.
Opmerking: Sorry voor de zeer ruimte verbruikt opmaak voor de code. Het gebruikt om weer te geven in een mooi doosje dat je doorlopen kan, maar Instructables enkele wijzigingen aangebracht in hun bewerken interface en ik ben niet in staat om dat te doen meer.
#include / / de functie rand() gebruiken
Initialiseren van de pin gebruikt voor knop input
Const int btnPin = 26;
Initialiseren van de pinnen te controleren van elke LED
Const int led_left_top = 33; LED in de linker bovenhoek van sterven
Const int led_left_center = 32; LED in aan de linkerzijde van het sterven in de rij van het center
Const int led_left_bottom = 31; LED in de linker onderhoek van het sterven
Const int led_right_top = 30; LED in de rechter bovenhoek van het sterven
Const int led_right_center = 29; LED aan de rechterkant van het sterven in de rij van het center
Const int led_right_bottom = 28; LED in de bodem juiste hoek van het sterven
Const int led_center = 27; LED in het midden van het sterven
Een functie om te simuleren van het optreden van een dobbelsteen rollen maken
Functie zal LEDs flikkeren door middel van de getallen 1-6
VOID roll()
{
int i = 0; Tellen van variabele for-lus
voor (ik = 0; ik < 5; i ++) / / cyclus van 5 keer
{
Weergave 1
digitalWrite (led_left_top, laag);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, laag);
digitalWrite (led_center, hoge);
delay(50); 50 ms wachten voordat het volgende waarde weergeven
Scherm 2
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, laag);
delay(50);
Weergave 3
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, hoge);
delay(50);
Display 4
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, hoge);
digitalWrite (led_right_top, hoge);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, laag);
delay(50);
Display 5
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, hoge);
digitalWrite (led_right_top, hoge);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, hoge);
delay(50);
Display 6
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, hoge);
digitalWrite (led_left_bottom, hoge);
digitalWrite (led_right_top, hoge);
digitalWrite (led_right_center, hoge);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, laag);
delay(50);
}
} / / Einde van roll-functie
Initiliazing variabele sterven waarde vertegenwoordigen
int die_value = 0;
VOIDsetup () / / configure microcontroller pinnen
{
Set-knop pin voor input
pinMode (btnPin, INPUT);
Set LED pinnen aan output
pinMode (led_left_top, OUTPUT);
pinMode (led_left_center, OUTPUT);
pinMode (led_left_bottom, OUTPUT);
pinMode (led_right_top, OUTPUT);
pinMode (led_right_center, OUTPUT);
pinMode (led_right_bottom, OUTPUT);
pinMode (led_center, OUTPUT);
}
VOIDloop )
{
Selectievakje voor druk op de knop
Als (digitalRead(btnPin) == HIGH) / / als knop is ingedrukt
{
Roll(); Simuleren van sterven roll
die_value = (ASELECT() % 6) + 1; Willekeurig sterven waarde, deze code genereert een getal tussen 1 en 6
Als (die_value == 1) / / alleen center LED brandt
{
digitalWrite (led_left_top, laag);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, laag);
digitalWrite (led_center, hoge);
}
elseif (die_value == 2) / / alleen de links boven- en onderkant rechts LEDs verlicht
{
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, laag);
}
elseif (die_value == 3) / / de hoogste linkerzijde, onderaan rechts en center LEDs verlicht
{
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, hoge);
}
elseif (die_value == 4) / / de vier LED's op de hoeken zijn verlicht
{
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, hoge);
digitalWrite (led_right_top, hoge);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, laag);
}
elseif (die_value == 5) / / de LEDs 4 hoek en het centrum LED verlicht
{
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, hoge);
digitalWrite (led_right_top, hoge);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, hoge);
}
anders / / die_value == 6 en alle LEDs verlicht zijn behalve het centrum een
{
digitalWrite (led_left_top, hoge);
digitalWrite (led_left_center, hoge);
digitalWrite (led_left_bottom, hoge);
digitalWrite (led_right_top, hoge);
digitalWrite (led_right_center, hoge);
digitalWrite (led_right_bottom, hoge);
digitalWrite (led_center, laag);
}
delay(4000); displays sterven waarde voor 4000ms, of 4 seconden
}
anders / / LEDs blijven uit als de knop is niet ingedrukt
{
digitalWrite (led_left_top, laag);
digitalWrite (led_left_center, laag);
digitalWrite (led_left_bottom, laag);
digitalWrite (led_right_top, laag);
digitalWrite (led_right_center, laag);
digitalWrite (led_right_bottom, laag);
digitalWrite (led_center, laag);
}
}