I always wanted to build a Lego Roller Coaster, but I only got to know the possibilities with the 31084 Pirate Roller Coaster set. This set triggered me to design my own roller coaster.
I decided to use two real-life roller coasters of the Bellewaerde theme park as inspiration:
The Boomerang first launches you through a set of loopings. And just when you think you’re done, it launches you back… but this time in reverse. This reverse-idea is so cool that I’ve used it in my roller coaster design.
This brand new roller coaster has a moving track: You first pass a straight piece of track to end up over the water. But a bit later this straight piece swaps places with a turn, guiding you back to the starting point. I certainly wanted those moving tracks in my design (even though it turned out to be quite hard!)
For the ramp, I had a look at the 10261 Lego Roller Coaster set. I mainly followed the design of that set. I don’t own the set, but I’ve ordered most of the track parts separately via the Lego shop.
And as you can see, I copied the yellow-red design for the roller coaster cart from my favorite roller coaster: The Boomerang.
The moving track
The moving track contains a small chain to pull the cart until the button. Once the button is pressed, the complete track starts moving. And then you can continue the ride in reverse.
This was by far the hardest part of the design. I tried multiple ways to pull the cart, but in the end the chain worked best.
The full ride
I typically use MicroPython for programming my Mindstorms EV3. Here’s the coding:
#!/usr/bin/env pybricks-micropython from pybricks.hubs import EV3Brick from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, InfraredSensor, UltrasonicSensor, GyroSensor) from pybricks.parameters import Port, Stop, Direction, Button, Color from pybricks.tools import wait, StopWatch, DataLog from pybricks.robotics import DriveBase from pybricks.media.ev3dev import SoundFile, ImageFile from time import sleep # This program requires LEGO EV3 MicroPython v2.0 or higher. # Click "Open user guide" on the EV3 extension tab for more information. # Create your objects here. ev3 = EV3Brick() chain_motor = Motor(Port.D) track_motor = Motor(Port.B) touch_sensor = TouchSensor(Port.S1) # Variables normal_speed = 70 # % of max speed high_speed = 85 # % of max speed chain_rotating_time = 5 #seconds wait_time_until_repeat = 20 #seconds # Write your program here. ev3.speaker.beep() while True: #The chain keeps on running forward, until the button is pressed while not touch_sensor.pressed(): chain_motor.dc(normal_speed) chain_motor.dc(0) #After a button press, the chain is stopped and the track moves track_motor.run_until_stalled(-180,then=Stop.HOLD,duty_limit=40) #The chain reverses at high speed for a couple of seconds chain_motor.dc(-1*high_speed) sleep(chain_rotating_time) chain_motor.dc(0) #The track goes back to its original position track_motor.run_until_stalled(180,then=Stop.HOLD,duty_limit=40) #after some time, it all starts over again sleep(wait_time_until_repeat)
Here’s the roller coaster in action:
Check out my other Lego Mindstorms EV3 projects: