Starcade's Digital Display for laser projector

the code below is a moddiefied code I made from BOT Dan’s Digital clock

to work the display:
goto “Display Input Section
In the code change “v = if( fake_z == 0, let_???, v );” to “v = if( fake_z == 0, let_a, v );” for the letter A
In the code change “v = if( fake_z == 0, let_???, v );” to “v = if( fake_z == 0, num_6, v );” for the number 6

due to the nature of the code some letters are unavailable they are (M, V, W, Z)
and you are limited to 6 letters per laser projector

[quote]
###########################################################
###########################################################
#LASER PROJECTOR #

DIGITAL Display

- Original code by BOT Dan - digital clock

- Altered code by Starcade - digital display

SETTINGS:

- Shape: Rectangular Grid

- Grid Size: 20 x 20

- Colour: White

Set the scale of the Display here

scale = 2;

#Set the distance between letters here #
gap = 8;

Colour settings can be found at the bottom

###########################################################

Make 7 (6x10) display squares ( Top-left = (0,0) )

fake_z = floor( index / 60 );
fake_y = floor( ( index - ( fake_z * 60 ) ) / 6 );
fake_x = ( index % 6 );

Place the lasers into the display squares

x’ = -( fake_x * scale + ( fake_z * ( 6 * scale + gap ) ) );
x’ = x’ + ( 20 * scale ) + ( 3 * gap );
y’ = ( fake_y * scale );
y’ = y’ - ( 5 * scale );

Break up the 7th display square into 2 colon columns

fake_x = if( ( index>=360 & index<=379 ),
( index % 2 ),
fake_x);
fake_y = if( ( index>=360 & index<=379 ),
floor( ( index - 360 ) / 2),
fake_y);

fake_x = if( ( index>=380 & index<=399 ),
( index % 2 ),
fake_x);
fake_y = if( ( index>=380 & index<=399 ),
floor( ( index - 380 ) / 2),
fake_y);

Position these 2 colon columns

x’ = if( ( index>=360 & index<=379 ),
-( fake_x * scale + ( 2 * ( 6 * scale + gap ) ) ) + ( 20 * scale ) + ( 3 * gap ),
x’ );
y’ = if( ( index>=360 & index<=379 ),
fake_y * scale - ( 5 * scale ),
y’ );

x’ = if( ( index>=380 & index<=399 ),
-( fake_x * scale + ( 4 * ( 6 * scale + gap ) ) ) + ( - floor( 3 / 2 ) * ( 2 * scale + gap ) ) + ( 20 * scale ) + ( 3 * gap ),
x’ );
y’ = if( ( index>=380 & index<=399 ),
fake_y * scale - ( 5 * scale ),
y’ );

Define the 7 segments of display grid and the “:”

seg_t = (fake_y<=1);
seg_t_l = ((fake_x<=1) & (fake_y<=4));
seg_t_r = ((fake_x>=4) & (fake_y<=4));
seg_m = ((fake_y>=4) & (fake_y<=5));
seg_m_t = ((fake_x>=2) & ((fake_x<=3)) & (fake_y<=4));
seg_m_b = ((fake_x>=2) & ((fake_x<=3)) & (fake_y>=5));
seg_b_l = ((fake_x<=1) & (fake_y>=5));
seg_b_r = ((fake_x>=4) & (fake_y>=5));
seg_b = (fake_y>=8);
seg_dot = ( fake_y >= 2 & fake_y <=3 ) | ( fake_y >= 6 & fake_y <= 7 );

Define 0 to 9 using the segments

num_0 = seg_t + seg_t_l + seg_t_r + seg_b_l + seg_b_r + seg_b;
num_1 = seg_m_t + seg_m_b;
num_2 = seg_t + seg_b_l + seg_t_r + seg_m + seg_b_l + seg_b;
num_3 = seg_t + seg_t_r + seg_m + seg_b_r + seg_b;
num_4 = seg_t_l + seg_t_r + seg_m + seg_b_r;
num_5 = seg_t + seg_t_l + seg_m + seg_b_r + seg_b;
num_6 = seg_t + seg_t_l + seg_m + seg_b_l + seg_b_r + seg_b;
num_7 = seg_t + seg_t_r + seg_b_r;
num_8 = seg_t + seg_t_l + seg_t_r + seg_m + seg_b_l + seg_b_r + seg_b;
num_9 = seg_t + seg_t_l + seg_t_r + seg_m + seg_b_r;

#Define letters
let_a = seg_m + seg_t + seg_t_l + seg_t_r + seg_b_l + seg_b_r;
let_b = seg_t + seg_t_l + seg_t_r + seg_m + seg_b_l + seg_b_r + seg_b;
let_c = seg_t + seg_t_l + seg_b_l + seg_b;
let_d = seg_t_r + seg_m + seg_b_l + seg_b_r + seg_b;
let_e = seg_t + seg_t_l + seg_m + seg_b_l + seg_b;
let_f = seg_t + seg_t_l + seg_m + seg_b_l;
let_g = seg_t + seg_t_l + seg_t_r + seg_m + seg_b_r + seg_b;
let_h = seg_t_l + seg_m + seg_b_l + seg_b_r;
let_i = seg_m_t + seg_m_b;
let_j = seg_t_r + seg_b_r + seg_b;
let_k = seg_t_l + seg_t_r + seg_m + seg_b_l + seg_b_r;
let_l = seg_t_l + seg_b_l + seg_b;
let_m = seg_m_b #no way to make an m
let_n = seg_m + seg_b_l + seg_b_r
let_o = seg_t + seg_t_l + seg_t_r + seg_b_l + seg_b_r + seg_b;
let_p = seg_t + seg_t_l + seg_t_r + seg_b_l + seg_m;
let_q = seg_t + seg_t_l + seg_t_r + seg_b_r + seg_m;
let_r = seg_b_l + seg_m;
let_s = seg_t + seg_t_l + seg_b_r + seg_b + seg_m;
let_t = seg_t + seg_m_t + seg_m_b;
let_u = seg_b_l + seg_b_r + seg_b;
let_v =#no way to make an v
let_w =#no way to make an w
let_x = seg_t_l + seg_t_r + seg_m + seg_b_l + seg_b_r;
let_y = seg_t_l + seg_t_r + seg_m + seg_m_b;
let_z =#no way to make an z
blank =#use this for spaceing

v = 0;
###########################################################

Display Input Section

change let_??? to the letter or number(num_1-0) you want

v = if( fake_z == 0, let_???, v );
v = if( fake_z == 1, let_???, v );
v = if( fake_z == 2, let_???, v );
v = if( fake_z == 3, let_???, v );
v = if( fake_z == 4, let_???, v );
v = if( fake_z == 5, let_???, v );
###########################################################
s = 1;
h = 0;

###########################################################

OTHER SETTINGS AT THE TOP

COLOUR SETTINGS:

- [1] Block Colour

- [2] Rainbow - Full

- [3] Rainbow - Horizontal

- [4] Rainbow - Vertical

Set this to one of the numbers above

colour_type = 4;

If using block colour, set your colour here (0-360)

colour_block = 245;

If using rainbow, change the cycle speed here

colour_speed = 39;

If using rainbow, change the stretch of colour

colour_stretch = 8;

###########################################################

h = if( colour_type == 1, colour_block, h );
h = if( colour_type == 2, timecolour_speed, h );
h = if( colour_type == 3, time
colour_speed + x’colour_stretch, h );
h = if( colour_type == 4, time
colour_speed + y’*colour_stretch, h );
###########################################################[/quote]

15 Likes