alexvh's firmware. Update: Hidden strobe, Ramping and optional mode memory added.

I have a firmware with a medium press. It’s a little hard to actually get a medium press though. It might be possible to get it working nicely by using more bits and trying different thresholds for the medium press. Right now it uses 32 bits and a medium press is less than 20 bits of decay. Anything less than about 800ms seems to be a medium press.

I created a branch on github if anyone wants to try it out and experiment with different values:

Maybe it’s just the times for each type of press, but I think I agree with Mike C. I’m not sure if I like a UI with a medium press.

Never! The ramping mode doesn’t use the eeprom. I store the value in SRAM, and it stays there until the next power on as long as it’s off for less than about 500ms. The firmware doesn’t actually touch the eeprom unless you enable mode memory.

Once I’m done with my 85 firmware I can share it if there is interest, but it’s not going to be ready for a while. It’s pretty well organized and commented so it could be useful for others wanting to get into 85 programming, or AVR programming in general. However, it uses the I/Os differently than the standard Nanjg driver, but is easy to understand and change pins as needed.

That’s what I really like about this. I might not be a fan of the different lengths of off times, but I’m all over the method of using the no init area. I’m stashing all kinds of stuff in there. My 85 firmware I am writing has a user reprogram mode where amount of modes and level of each mode can be set, and I’m using the normal short “brownout” press to do all the programming, only writing to the EEPROM when everything has been configured.

I also have the integer for the voltage readout in there so it’s always updated when the light is on and under load. When I do my voltage readout routine (three short presses) I blink the level that was stored there. Then I get the current level (not under load) and blink it out if it differs from the “under load” value.

I’ve got so much space in the 85, plenty of ideas and don’t have to worry about limiting myself… yet… Like a user enabled lock out code or similar. Who wants their children to be able to flash 10000 lumens in their face if they find the light lying around on your desk, or set fire to your backpack because the switch was bumped while hiking. These days lights are getting dangerous…

Stashing arrays, bytes and flags into the no init area without having to read and write between each press has made this all sooo much easier… So yeah, thanks again :beer:

I have 5 pieces of Attiny85V ready for your new firmware. Thanks for your guys’ effort for us to have a perfect flash light what we want.

I should perhaps mention that the 85 firmware I’m coding is written with standard clicky button only in mind. I do have a few projects with both clicky and E-switches that I’ve yet to start coding (have all the hardware), but they all use the ATtiny24 or 84 which is a 14 pin chip.

14 pin chip is perfect for bigger light such as lantern and has more I/O pins to play with.

I’ll be posting threads about the lights when I get around to them… Ahh, so many projects, so little time… And heading for a PC free vacation week on Sunday.

Anyhow, don’t won’t to hijack this thread any more with my off topic clutter. I’ll make new threads when I have something to show.

As you have mentioned, it is hard to get a medium press precisely. I prefer to the original one.

Hi, I know this is way late… but I finally made a version of STAR which uses memory decay instead of a capacitor to measure off time. In case anyone wants it:

http://bazaar.launchpad.net/~toykeeper/flashlight-firmware/trunk/files/head:/ToyKeeper/STAR_noinit/

It’s just STAR_off_time 1.3 with the OTC bits replaced by mem-decay bits. No other changes.

Shall I need to set the high fuse to 0xED instead of 0xFF?

I have just tested my build is successful and working well but with 5 warmings. Need not set the high fuse to 0xED. 0xFF is OK.

Hi, sorry, I forgot to include the flashing script and fuse settings. That’s fixed now, and re-published. :slight_smile:

Thanks for doing this, I’m sure quite a few people appreciate it. :beer: :beer:

I played the STAR_noinit for a while. It worked perfectly with my QX5241 buck driver but it did not work with my CL6807 ( similar to PT4115 ) driver. The driver became no memory. I thought may be the 3.3V VCC to the Attiny13A from the voltage regulator is too low for the ram retention. I will replace with a 5V regulator to test again when I am free.

Any chance we can get a version of this with a hidden beacon instead of the hidden strobe?

Is there a standard beacon? I’ve never used a light with one. How long on, off, how many flashes etc?

I’m not aware of any sort of standard beacon, but there are a few I find useful… one is what I call a heartbeat beacon, which flashes in the following pattern:

  • On 5ms
  • Off 245ms
  • On 5ms
  • Off 745ms
  • repeat

Another I find useful is a looping battery check mode, which flashes once for each 25% of the battery’s current charge, then pauses and re-checks and repeats. It’s more like 100ms on-time with 400ms between, and 2-3s between cycles. If left on for a long time, the number of flashes will decrease until the light eventually shuts off.

One more thing to consider is the brightness. A signal beacon should be pretty bright, but a “find the light indoors at night” type beacon should be dim. For the latter, one popular approach is a short (~3ms) flash at a moon or low level every 2s.

The one I use the most is a stutter beacon, used on a head light or tail light while biking or skating. It stays on all the time, but changes brightness to make itself more noticeable. The pattern I use there is:

  • High 5ms
  • Low 65ms
  • High 5ms
  • Low 65ms
  • High 5ms
  • Low 65ms
  • High 5ms
  • Low 65ms
  • Low 720ms
  • repeat

So, 4 brief high-brightness blinks and then it rests at low, and repeats at 1Hz. As for the levels to use, I’ve found that 40lm / 400lm works well, or 7lm / 150lm. There must be a pretty big difference between high and low.

This is what i was thinking.
Although would have to check the timings to see if they are suitable.

Do you want a hidden beacon instead of the strobe? Or a bunch of “strobe modes” including beacon modes, accessible after activating the strobe?

I was after a hidden beacon and no other flashier.