Pages: [1] 2 3 ... 10
 1 
 on: November 08, 2017, 01:43:47 pm 
Started by mrspicman - Last post by nonentity
Beautiful!  Extremely nice workmanship, and use of wood.  Love how this looks.

As far as the real time clock, I've been picking at that problem now for a while as well.  And I am not a coder at all.  Wish I could show you the way to do it, as it'd be handy for me as well!

 2 
 on: November 08, 2017, 12:35:48 pm 
Started by Swjedi101 - Last post by Swjedi101
Hey guys, I'm somewhat new to nixies and I wanted some advice.

I'm driving (4) IN-8-2 nixies to display [hours] and [minutes] for a clock.  I'm using the V3 Driver Shield and the IN-17x6 V3 Tube Board.  This means I have the upper/lower seconds tubes are empty since i'm only driving 4 tubes total.

The IN-8-2 nixie is the type that has a decimal place. What I would like to do, is be able to animate the decimals.

Example: All 4 decimals light up in a cascading effect during one second -> each decimal lights up for 1/4 second, starting left to right, one after another.

I know the decimal needs to be limited with a 100k Ohm resistor due to its size.  I've thought about tying the decimals into one of the upper/lower [seconds] tube sockets that are open on my multiplexing board.  I'm not sure I'm thinking about this correctly though.


Any insights appreciated, thanks!

My Setup:



Multiplexing board:



IN-8-2 Pinout:



 3 
 on: July 20, 2017, 12:07:08 pm 
Started by mrspicman - Last post by mrspicman
Greetings!

This is my first-time post and wanted to share my journey to building a Nixie clock.  The old time nostalgia is what brought me to build one of these but bottom line, they look COOL!  Grin

Sorry for all the pictures but thought it would be a nice touch to see them and follow how I built and got to the end result.

One thing I am NOT is a coder and I use code graciously provided here at Arduinix http://www.robotpirate.com/forums/index.php?topic=298.0.  The one item I am struggling with is how to add a real time clock.  I have been looking at other's code but still can't quite wrap my head around it.  If anyone has any pointers or example code that I can use in my project it would be greatly appreciated.

I purchased several different kinds of nixie bulbs from a russian site and in this project I decided to use IN12 bulbs along with INS1 colon dots:







I purchase a bunch of pins for my needs and designed some sockets in Aspire Vectric to use with my hobby CNC machine and carved them out of wood.  The results turned out pretty good.  I did this with the purpose of being able to swap out any dead lamps in the future.  I went ahead and expoxied the pins into place:












Then came the first tedious part of wiring up the INS12 sockets, and properly adding heatshrink tubing. 





I had some oak and maple wood scraps lying around so I started of with the faceplate for the IN12 and INS1 sockets.  I messed up a bit on my CNC machine but because the plate gets the sockets inserted you don't notice a thing afterwards:





Here are all the sockets inserted.  I wanted a bit of a modern/techno look so I used M3 screws to affix all sockets and enclosure (to follow):







Next step was to wire it up to the Arduinix nice and neatly as I am dealing with some confined spaces when it comes to my enclosure:





Next came the enclosure.  Like I said I had some scrap oak and maple that I made it out of.  I used linseed oil and a spray of clear laquer and finally built it up with all the electronics inside.  The entire enclosure is sealed up with M3 screws:













It turned out quite nice but like I said I really need to get a real time clock involved since I am losing seonds and have to adjust it every once in a while.

Here is a video as well for your viewing pleasure:

https://youtu.be/WCTsQQ1ziMI

If you have any comments I would be more than glad to answer...and am hoping someone with better coding experience can help me out with the real time clock!

Cheers!

 4 
 on: February 25, 2017, 01:25:28 pm 
Started by maximevince - Last post by nonentity
Thank you for sharing Maxime!

 5 
 on: February 25, 2017, 02:54:29 am 
Started by maximevince - Last post by maximevince
Hey all,

Since I wanted a minimalist build with no buttons on my clock, I decided to throw in a GPS to get the time sync from!

Short list of features:
* Time sync from GPS (Ublox NeoM6 module, but can be any)
* Timer interrupt to refresh/multiplex the tubes in a stable way.
* Fully non-blocking tube multiplexing (no delay()-functions)
* Uses the Time class, rather than millis() to keep track of time

Overall I think the code is cleaner and easier to read, compared to the original example code.

You can find the code on GitHub:
https://github.com/maximevince/arduinix_gps_timer_isr

Let me know if you like it, use it, ... or send me a pull request on GitHub if you improved the code!

 6 
 on: November 19, 2016, 11:45:56 am 
Started by nonentity - Last post by nonentity
Sorry guys, we had some broken links on the assembly section and the code section.  Those should be fixed now.  Please let me know if you find anything else that is broken on the website.

Thanks!

Brad

 7 
 on: June 09, 2016, 02:53:59 pm 
Started by RJTPMP - Last post by nonentity
Has anyone tried using the IN-16 tubes? I'm working on mine now, but my first setup doesn't seem to work.  I think I just have the voltage set too low. I plan on getting back to it at some point this week if all goes well.

What voltage do you have it set to? What power supply are you using?  Make sure it's at least 650 milliamps or greater, one amp would be good. 

 8 
 on: June 09, 2016, 02:53:10 pm 
Started by Dr.Wizard - Last post by nonentity
digitalWrite is very slow and inefficient because it does error checking to make sure the user isn't trying something stupid, and because it has to decode which port and bit the requested pin is on.  And it makes your code much easier to read and understand.  Not necessarily bad, but in a multiplex routine, especially one called from an interrupt, speed counts.  The code gets executed hundreds of times a second.  If it's slow and inefficient, it leaves less processing power for other things.

A faster and more efficient way to control pins is the write directly to the control registers.  The disadvantages to this are the opposites of what I mentioned above.  You need to know what port and bit the pin is on.  You better get it right, because if you do it wrong, god only knows what could happen.  And it involves binary math and bit manipulation which can be rather confusing.

So here it is, a routine for controlling the output pins that writes directly to the ports.  It is literally 100 times faster (I benchmarked it!).

Code:
void setOutputs(byte bank, byte digit1, byte digit2) {

byte val1 = digit1 << 2; // Store number 1 in value 1, shift bits 2 places left (Move BCD value on last 4 bits to middle 4 bits)
byte val2 = digit2 << 6; // Put least 2 bits of Number 2 into upper 2 bits of Value 1
byte val3 = digit2 >> 2; // put highest 2 bits of Number 2 into lowest 2 bits of Value 2
byte val4 = (1 << (bank + 2));  // Choose which bit is needed to control the bank pins 10-13
// The bank selection is middle 4 bits, so the number needs to be shifted over by 2 bits

PORTD &= B00000011; // Turn pins 2-7 off
PORTB &= B11000000; // Turn pins 8-13 off
PORTD |= val1; // Set pins 2-5 to match BCD number held in middle 4 bits of Value 1
PORTD |= val2; // Set pins 6 & 7 to match highest 2 bits of value 1 which is lowest 2 bits of num2
PORTB |= val3; // Set pins 8 and 9 to lowest 2 bits of value 2 which is highest 2 bits of num2

PORTB |= val4; // Turn the appropriate pin (10-13) for the bank
}

This code is very specific to Arduino models Uno, Micro, Mini, Nano, and other Arduino clones that use the 328P chip.  To use it on a Mega, or some other type of microcontroller, you will need to change the ports and which bits get manipulated.


Wow, that's pretty awesome. 

It'd be nice to get a fresh codebase for the ArduiNIX one day, I've been looking into it, but I am not a coder, I am more on the art side and hardware side.

Very neat work!

 9 
 on: June 03, 2016, 01:37:41 pm 
Started by RJTPMP - Last post by Dr.Wizard
I'm using IN-16 tubes for my seconds, and IN-8-2 tubes for hours and minutes.  I didn't have any trouble with the IN-16's other than their weird pinout with the 7 and 2 reversed.  My voltage is set to 170, and I used a 6.8K resistor for the anodes.

 10 
 on: June 03, 2016, 01:27:21 pm 
Started by Dr.Wizard - Last post by Dr.Wizard
digitalWrite is very slow and inefficient because it does error checking to make sure the user isn't trying something stupid, and because it has to decode which port and bit the requested pin is on.  And it makes your code much easier to read and understand.  Not necessarily bad, but in a multiplex routine, especially one called from an interrupt, speed counts.  The code gets executed hundreds of times a second.  If it's slow and inefficient, it leaves less processing power for other things.

A faster and more efficient way to control pins is the write directly to the control registers.  The disadvantages to this are the opposites of what I mentioned above.  You need to know what port and bit the pin is on.  You better get it right, because if you do it wrong, god only knows what could happen.  And it involves binary math and bit manipulation which can be rather confusing.

So here it is, a routine for controlling the output pins that writes directly to the ports.  It is literally 100 times faster (I benchmarked it!).

Code:
void setOutputs(byte bank, byte digit1, byte digit2) {

byte val1 = digit1 << 2; // Store number 1 in value 1, shift bits 2 places left (Move BCD value on last 4 bits to middle 4 bits)
byte val2 = digit2 << 6; // Put least 2 bits of Number 2 into upper 2 bits of Value 1
byte val3 = digit2 >> 2; // put highest 2 bits of Number 2 into lowest 2 bits of Value 2
byte val4 = (1 << (bank + 2));  // Choose which bit is needed to control the bank pins 10-13
// The bank selection is middle 4 bits, so the number needs to be shifted over by 2 bits

PORTD &= B00000011; // Turn pins 2-7 off
PORTB &= B11000000; // Turn pins 8-13 off
PORTD |= val1; // Set pins 2-5 to match BCD number held in middle 4 bits of Value 1
PORTD |= val2; // Set pins 6 & 7 to match highest 2 bits of value 1 which is lowest 2 bits of num2
PORTB |= val3; // Set pins 8 and 9 to lowest 2 bits of value 2 which is highest 2 bits of num2

PORTB |= val4; // Turn the appropriate pin (10-13) for the bank
}

This code is very specific to Arduino models Uno, Micro, Mini, Nano, and other Arduino clones that use the 328P chip.  To use it on a Mega, or some other type of microcontroller, you will need to change the ports and which bits get manipulated.

Pages: [1] 2 3 ... 10