Stap 6: De code
De code is ontworpen om gewoon ervoor zorgen dat alles werkt. Alles wat het doet is graaf van 0 tot 99 en deze waarden worden weergegeven op de watergeest buizen. De byte verzonden naar het shift register is eigenlijk twee vier bits segmenten die elk 74141 chip welk nummer aan het licht omhoog vertellen. Vanwege dit is elk van de mogelijke 100 uitgangen een verschillend binair getal. Profiteren van dit ik berekend het decimale equivalent van elk van die 100 bytes en het opzetten van een matrix die het decimale 0 converteert - 99 waarde naar de juiste byte. Dus, alles wat men moet doen is om de code met een getal van twee cijfers (de variabele 'x') en het zal worden weergegeven.Ik heb sommige opdrachten van de serial.print om ervoor te zorgen dat het alle werken is opgenomen.
/ * een schets te rijden twee nixie-buizen met twee SN74141 BCD-chips en een enkele SN74HC595N shift register
ontwikkeld op basis van de tutorials op Adafruit.com en arduino.cc
de schets zal leiden tot twee watergeest buizen te tellen van 0 tot 99 maar u kunt het maken van een twee-cijferig getal en hebben de nixie-buis weer te geven
Jeff Glans 2013
Vrijgegeven in het publieke domein
*/
de pinnen voor communicatie met de shift register instellen
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int x; Maak een tellen variabele
Maak een matrix die decimale getallen in een passende byte vertaalt voor het verzenden van het shift register
int charTable [] {0,128,64,192,32,160,96,224,16,144,8,136,72,200,40,168,104,232,24,152,4,132,68,196,36,164,100,228,20,148,12,140,76,204,44, =
172,108,236,28,156,2,130,66,194,34,162,98,226,
18,146,10,138,74,202,42,170,106,234,26,154,6,134,70,198,38,166,102,230,22,150,14,142,78,206,46,174,110,238,30,158,1,129,
65,193,33,161,97,225,17,145,9,137,73,201,41,169,105,233,25,153};
byte nixies = 255; starten van de byte worden verzonden naar het register van de verschuiving en stel deze in op de nixies leeg
VOID Setup {}
pinMode (latchPin, OUTPUT);
pinMode (dataPin, OUTPUT);
pinMode (clockPin, OUTPUT);
Serial.begin(9600);
}
void loop {}
nixies = 255; Maak een lege byte
updateShiftRegister(); de lege byte verzenden het shift register
delay(500);
voor (x = 0; x < 100; x ++) {/ / tellen van 0 tot 99
nixies = charTable [x]; vertalen naar een byte te sturen naar het shift register
updateShiftRegister(); verzenden van het shift register
delay(500);
Serial.Print ("x =");
Serial.println(x);
Serial.Print ("nixies =");
Serial.println(nixies);}
}
het proces van het versturen van een byte naar het shift register
ongeldig updateShiftRegister() {}
digitalWrite (latchPin, laag);
shiftOut (dataPin, clockPin, LSBFIRST, nixies);
digitalWrite (latchPin, hoge);
}