Proffieblaster DL-44 with HUD

It’s not the first DL-44 proffie blaster, but it might be the first to feature a functioning HUD in the scope! At least that’s what I’m shooting for.
I love the animated scope displays that are out there, but I’m disappointed by the OLED blocking the see through of the scope.
Solution: Heads Up Display. Concept is to lay a 64x32 OLED flat on the inside of the fat part of the scope, shooting up. Mirror the output. Stick a piece of reflective plastic above it at an angle, maybe 45 degrees?
Things to figure out:

  1. angle of the plastic
  2. Getting the OLED to display “mirrored” ( I think Fredrik has already supplied the correct code for this, I just need to use it properly)
  3. Getting some cool .bmp animations to actually play back in the OLED and would also be super cool to find out how to have an ammo count. Some way for the OLED code to interact with trigger pulls.

Also, yes I know about BlastFX and the Blaster Core board, but they aren’t Proffie!
Aside from the usual build challenges with the small space of the blaster itself, anything I’m missing? Does any of this seem remotely do-able?

2 Likes

I think the available code can rotate 180 degrees, but I don’t think there is an option for mirroring.
Would be relatively easy to add though. I also want to add some sort way to control better what is on the display. Kind of like styles, but for displays. Not sure exactly what that will look like yet though.

1 Like

For the moment, the display doesn’t need to mirror, or even flip 180, because the image is mostly just a round recticle that might rotate a bit or have some bits that look like the Star Wars alphabet. But once we figure out ammo count and stuff like that, that needs to be in readable english (or whatever) then we can explore the mirror image thing.
Also, I don’t know if the HUD concept is even going to be do-able so, plan B is to just have it upright and installed normally.

I’ve been reading some of the blaterfx code:

It seems like to me that most of what it is doing is simply drawing an image of some sort, and then showing the ammo count on that image.

For ProffieOS, I think it makes sense to just load the image itself from the SD card and then just draw the ammo count over it somewhere. Is there something else that we would need really?

I wasn’t sure it was possible to draw over top of an existing image, so yeah that seems like a good solution . Maybe just assign a corner of the screen dedicated to ammo count numbers only and then build an animation around that corner

I think what I need is to break out all the drawing into it’s own class, then make that class selectable on a per-display basis. The logic for how to draw text and load images would be in the actual display class, so that part would be shared. This would be more like how the prop class works than how styles work, but it would give a lot of control over what goes on the display.

Would you be able to select different graphics slaved to the different blaster styles? Like, make it part of a “blaster font” since they will live on the same SD card as the sound files?

At the very least it should be easy to have the different pictures/animations for different fonts.

Given my extremely limited knowledge of what your talking about, I think that seems like a solid solution then! :joy: So, your saying basically that you could put all sorts of things related to the function of the board, like battery level and/or volume? Maybe range finding? Either real or simulated based on blaster angle, Like an interactive x and y axis indicator? And that these things could be displayed over the graphic animations?

The tricky part is how to make things different between different fonts.
Changing out the images is easy, but if we want to change where the ammo count is drawn. (Or anything other dynamic piece of graphics.) it gets harder.
Maybe I really need “styles” for displays.

Maybe offer three different “complexity levels” depending on how large or small a persons OLED screen is? The larger rifle-style blasters with standard size (128x64) screens can select the style with the most spaces for extra stuff, but smaller displays only have room for the ammo count corner and the animated recticle?

The goal is really to build a system that makes it possible to offer any number of levels.
I have kind of an idea of how I want it to work, but I have to fix some things to make it work like that.
Right now, the image-reading code deposits data into the frame buffer into a one of four different formats, and as we copy the data out to the i2c bus, I do the conversion. That won’t work well if I have to draw things into the frame buffer in between.

So drawing has to happen before it hits the frame buffer?

No, I think the solution is to move the conversion into a common format so that it happens in the frame buffer. That way we can draw into the frame buffer before sending it to the i2c bus.

Ok, there is a thing that happens with sabers that just happened to me with the blaste build but I dont recall the fix for it. When I’m hooked up to the Proffie via USB, I can turn the blaster on via serial monitor. Primary and secondary buttons work fine and show up properly in the monitor. But when Im disconnected and pull the kill key, I get the boot sound, but the buttons do nothing. There is no “on” button.

Do you have a fire button?
(What does your config file look like?)

#ifdef CONFIG_BUTTONS

Button FireButton(BUTTON_FIRE, auxPin, “fire”);

Button ModeButton(BUTTON_MODE_SELECT, powerButtonPin, “modeselect”);

#endif

They’re reversed because they were doing the opposite of what I wanted them to do. Mode button was being the fire button and vice versa. But even then, after I pulled the kill key, heard the boot sound, the buttons wouldn’t do anything.

It could be that the battery needs to be charged.

SM says 4.0 on the voltage?

Hmm, I seem to recall that maybe blasters have an on/off mode IF there is a hum sound in the font?