Stap 4: Programmeren met Arduino
Zodra de kubus is bedraad aan uw prototype circuit, schrijf wat code test!Een slimme functie ik ontwikkeld om efficiënt realiseren de output naar de decoders is gedocumenteerd hieronder, en ook gevonden in de programmacode die verbonden. Dit is waar sommige bitsgewijze zwarte magie uiteraard plaatsvindt.
/* //delay, this is the absoloute minimum time the light will be displayed./**
* Displays the anode column with the given number value; [0, 24].
*/
void displayNum(int num){
//constrain the argument to be between 0 and 24 inclusive.
num = constrain(num, 0, 24);
* AND: selects the bit, the bit at weight will be 1 if the pin is to be high
* >>: shifts the selected bit to the end of the word, making the value a 0 or 1
* first result is lsb
* digitalWrite: write the approptiate result (HIGH or LOW)
* to the appropriate decoder pin
*/
for(int weight=1, pin=0; pin < DECODER_BITS; weight*=2, pin++)
digitalWrite(decoderPins[pin] ,(num & weight) >> pin);
//ensures adequate delay for decoders as well.
delayMicroseconds(MICRO);
}
De rest van de code die ik gebruikt is hier eveneens bijgevoegd. Dit is onderverdeeld in 4 belangrijkste stukken.
LEDs.h:
Bevat alle definities van de pinnen en arrays met pinnen voor snelle herhalingen.
DisplayBasics.pde:
Bevat een paar "basisvormen" in de kubus, voor gebruik in patronen.
Patterns.pde:
Bevat patronen die de kubus kunt weergeven. Elk is gedocumenteerd in de code, en kan worden gezien in de video in de intro stap van dit instructable.
LEDCubePCB.pde:
Dit is de laatste versie van mijn code, en de Setup en loop functies. u zult merken dat ik kies welke patroon in reset wordt weergegeven op basis van de positie van de potentiometer (besproken volgende stap). Ik zou aanmoedigen een betere manier om te veranderen van patronen, ook besproken in de volgende stap.