Tasmota/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be
2025-08-01 19:34:23 +02:00

88 lines
2.9 KiB
Plaintext

# Generated Berry code from Animation DSL
# Source: police_lights.anim
# Generated automatically
#
# This file was automatically generated by compile_all_dsl_examples.sh
# Do not edit manually - changes will be overwritten
# Original DSL source:
# # Police Lights - Red and blue alternating flashes
# # Emergency vehicle style lighting
#
# strip length 60
#
# # Define zones for left and right halves
# set half_length = 30
#
# # Left side red flashing
# animation left_red = pulse_position_animation(
# 0xFF0000, # Bright red
# 15, # center of left half
# 15, # half the strip
# 2 # sharp edges
# )
# left_red.priority = 10
# left_red.opacity = square(0, 255, 400ms, 50) # 50% duty cycle
#
# # Right side blue flashing (opposite phase)
# animation right_blue = pulse_position_animation(
# 0x0000FF, # Bright blue
# 45, # center of right half
# 15, # half the strip
# 2 # sharp edges
# )
# right_blue.priority = 10
# right_blue.opacity = square(255, 0, 400ms, 50) # Opposite phase
#
# # Add white strobe overlay occasionally
# animation white_strobe = solid(0xFFFFFF)
# white_strobe.opacity = square(0, 255, 100ms, 5) # Quick bright flashes
# white_strobe.priority = 20
#
# # Start all animations
# run left_red
# run right_blue
# run white_strobe
import animation
# Police Lights - Red and blue alternating flashes
# Emergency vehicle style lighting
var strip = global.Leds(60)
var engine = animation.create_engine(strip)
# Define zones for left and right halves
var half_length_ = 30
# Left side red flashing
var left_red_ = animation.pulse_position_animation(0xFFFF0000, 15, 15, 2)
animation.global('left_red_').priority = 10
animation.global('left_red_').opacity = animation.square(0, 255, 400, 50) # 50% duty cycle
# Right side blue flashing (opposite phase)
var right_blue_ = animation.pulse_position_animation(0xFF0000FF, 45, 15, 2)
animation.global('right_blue_').priority = 10
animation.global('right_blue_').opacity = animation.square(255, 0, 400, 50) # Opposite phase
# Add white strobe overlay occasionally
var white_strobe_ = animation.solid(0xFFFFFFFF)
animation.global('white_strobe_').opacity = animation.square(0, 255, 100, 5) # Quick bright flashes
animation.global('white_strobe_').priority = 20
# Start all animations
# Start all animations/sequences
if global.contains('sequence_left_red')
var seq_manager = global.sequence_left_red()
engine.add_sequence_manager(seq_manager)
else
engine.add_animation(animation.global('left_red_'))
end
if global.contains('sequence_right_blue')
var seq_manager = global.sequence_right_blue()
engine.add_sequence_manager(seq_manager)
else
engine.add_animation(animation.global('right_blue_'))
end
if global.contains('sequence_white_strobe')
var seq_manager = global.sequence_white_strobe()
engine.add_sequence_manager(seq_manager)
else
engine.add_animation(animation.global('white_strobe_'))
end
engine.start()