Examples#

Example: Display a single image.#

import Luxbeam
from Luxbeam.sample import number_image

#  This is the equivalent example of displaying non-scrolling images in the LB 4600 user guide.

# Connect to the Luxbeam
luxbeam = Luxbeam.Luxbeam("192.168.0.10", timeout=1)  # modify the ip address if required.

# Prepare the image (display 123 on the DMD)
image = number_image(123, luxbeam.cols, luxbeam.rows)

# Set image type to 1 (binary). (One-time Operation)
luxbeam.set_image_type(1)

# Set inum size to 1080. (One-time Operation)
luxbeam.set_inum_size(luxbeam.rows)

# Disable the sequencer.
luxbeam.set_sequencer_state(Luxbeam.SEQ_CMD_RUN, Luxbeam.DISABLE)

# Set sequencer in reset-state
luxbeam.set_sequencer_state(Luxbeam.SEQ_CMD_RESET, Luxbeam.ENABLE)

# Load the image to inum = 0.
luxbeam.load_image(0, image)

# Compose the sequencer file.
seq = Luxbeam.LuxbeamSequencer()
for _ in seq.jump_loop_iter():  # A while-true loop
    seq.load_global(0, 400)  # Load data from Inum (0) to DMD
    seq.trig(Luxbeam.TRIG_MODE_NEGATIVE_EDGE, Luxbeam.TRIG_SOURCE_INTERNAL, 0)  # Neg. edge internal trigger
    seq.reset_global(40)  # Display contents on DMD

# View the generated sequence file
print(seq.dumps())

# Send sequence file.
luxbeam.load_sequence(seq.dumps())

# Take sequencer out of reset-state
luxbeam.set_sequencer_state(Luxbeam.SEQ_CMD_RESET, Luxbeam.DISABLE)

# Start the sequencer
luxbeam.set_sequencer_state(Luxbeam.SEQ_CMD_RUN, Luxbeam.ENABLE)

Example: Compose the sequncer code with python#

import Luxbeam

# This example shows how one can use LuxbeamSequencer to program the LuxBeam sequencer code with python.

seq = Luxbeam.LuxbeamSequencer()

reg0 = seq.assign_var_reg(regno=0)  # Assign register 0
for _ in seq.jump_loop_iter():  # While-True loop
    seq.load_global(0, 400)  # Load the image 0
    for _, inum in seq.range_loop_iter(0, reg0):  # inum changes from 0 to register_0
        seq.reset_global(40)  # Display the image
        seq.load_global(inum + 1, 400)  # Load the image inum+1
        seq.trig(Luxbeam.TRIG_MODE_NEGATIVE_EDGE, Luxbeam.TRIG_SOURCE_SOFTWARE + Luxbeam.TRIG_SOURCE_ELECTRICAL,
                 0)  # Waiting for negative software or electrical trigger

print(seq.dumps())
"""
Generated sequencer code: 

AssignVar ConstVar0 0 1
AssignVarReg Var0 0 1
Label Loop0 1
LoadGlobal ConstVar0 400
AssignVar Var1 0 1
Label Loop_1 1
ResetGlobal 40
AssignVar Var2 1 1
Add Var2 Var1 1
LoadGlobal Var2 400
Trig 1 9 0
Add Var1 1 1
JumpIf Var1 < Var0 Loop_1 1
Jump Loop0 1
"""