Kör två Nixie rör med en Arduino via ett skiftregister och två SN74141s. (6 / 9 steg)
Steg 6: Koden
Koden är avsedd att helt enkelt se till att allt fungerar. Allt det gör är räkningen från 0 till 99 och visar dessa värden på nixie rör. Den byte som skickas till skiftregister är faktiskt två fyra bitars segment som berättar varje 74141 chip vilket nummer till ljus upp. På grund av detta är alla möjliga 100 utgångarna en distinkt binärt tal. Dra nytta av detta jag beräknat decimal motsvarar var och en av de 100 byte och sätta upp en matris som omvandlar det decimala 0 - 99 värde till lämpliga byten. Således, allt man behöver göra är att ge koden med ett två siffrigt nummer (variabeln "x") och det kommer att visas.Jag har tagit några serial.print kommandon att se till att det är alla arbetar.
/ * en skiss att köra två nixie rör med två SN74141 BCD chips och ett enda SN74HC595N skiftregister
utvecklats från tutorials på Adafruit.com och arduino.cc
skissen kommer att orsaka två nixie rör räkna från 0 till 99 men du kan ändra den för att skapa ett tvåsiffrigt nummer och har nixie röret Visa den
Jeff ollonet 2013
Släpps ut i det offentliga rummet
*/
Ställ in stiften för kommunikation med skiftregister
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int x; skapa en räknande variabel
skapa en array som översätter decimaltal till ett lämpligt byte för att skicka till skiftregister
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; inleda byten för att skickas till skiftregister och sätta den till en tom nixies
void setup() {
pinMode (latchPin, produktionen);
pinMode (dataPin, produktionen);
pinMode (clockPin, produktionen);
Serial.BEGIN(9600);
}
void loop() {
nixies = 255; skapa en tom byte
updateShiftRegister(); Skicka den tomma byten till skiftregister
Delay(500);
för (x = 0; x < 100; x ++) {/ / räkna från 0 till 99
nixies = charTable [x]; översätta till ett byte att skicka till skiftregister
updateShiftRegister(); Skicka till skiftregister
Delay(500);
Serial.Print ("x =");
Serial.println(x);
Serial.Print ("nixies =");
Serial.println(nixies);}
}
processen för skickar en byte till skiftregister
void updateShiftRegister() {
digitalWrite (latchPin, låg);
shiftOut (dataPin, clockPin, LSBFIRST, nixies);
digitalWrite (latchPin, hög);
}