Close

Code

A project log for Unity Candle

Taking the idea of a unity candle to the next level

QuinnQuinn 06/02/2014 at 14:220 Comments

Pretty much all code is now written and mostly tested. The biggest problems I had were around the serial data from the arduino into the philips microcontroller as characters would be dropped. As the original interface port was wired with hardware handshaking, it is possible that the philips microcontroller cannot actually keep up with 9600 baud. I wasn't going to add hardware handshaking, and didn't care enough to prove this was the case(nor find out if what I was seeing was signal integrity issues that are being covered by the parity being used in the serial), and just broke up strings and added delays. It seems highly reliable now.

Code here: https://github.com/Quinn-D/SequencingController
[add reverse link back]

Given how many buttons I had available, I was able to make the UI quite simple with a main screen, and sub-menus simply accessed via dedicated buttons. This greatly simplifies the code, and quickness of the UI as the user doesn't have to drill down in multi-tiered menus. Supported features/menus:

Lockout. Prevents any operation until passcode is entered. Boots up into this state.

Basic/Detailed display modes. Toggles between cleaner display and maximum data display.

Load/Save sequences. 6 saves, stored in EEPROM.

Passcode update. Stored in EEPROM.

Display the current sequence. Prints the sequence out in compact form, paging 3 lines at a time.

Reset the arduino.

Toggle state of aux outputs. In this case, the two HSIs, as well as the unused output.

Edit the sequence in memory.

The left side button illuminates when the system is ready to run. This turns off when ever a submenu is entered, or in lockout. Pressing the left side button arms the system. It must be held to allow firing.

The right side button blinks when the system is armed. Pressing this button when armed will fire the sequence.

When in lockout, both side buttons blink.

In testing, I found one bad connection with one of my pull resistors, and the speaker no longer worked. The pull resistor was replaced, and I debugged a bit on the speaker to see that the FET driving it appears to have failed. I don't have time to mess around with replacing it right now, and it isn't actually needed, so left it. Not clear why it failed, but I suspect either static damage, or I'm missing something on the impact of my additional input(which I never actually drove) which damaged it. It's also possible I damaged it during reflow of the 7805 regulator, though I am generally pretty careful with temperature when doing this.

I also found that I mixed up the lighted push buttons, so that the red one was on the left(arming), and the green one on the right(firing). Thankfully the leds are removable from the button, given that I glued it with epoxy to the circuit board. So those were pretty easily swapped.

Discussions