Its summer time and that means tank tops, ice cream and bubbles! This robot friend makes a bountiful burst of bubbles all on its own.

Parts List

A Black woman's manicured hand holds a round microcontroller with lit up LEDs.
Circuit Playground Express is the next step towards a perfect introduction to electronics and programming. We've taken the original Circuit Playground Classic and...
$24.95
In Stock
Top down view of a Adafruit CRICKIT for Circuit Playground Express with a circular board connected.
Sometimes we wonder if robotics engineers ever watch movies. If they did, they'd know that making robots into servants always ends up in a robot rebellion. Why even go down that...
$29.95
In Stock
Standard hobby servo with three pin cable
This high-torque standard servo can rotate approximately 180 degrees (90 in each direction). You can use any servo code, hardware, or library to control these servos. Good for...
Out of Stock
DC Toy Hobby Motor
These are standard '130 size' DC hobby motors. They come with a wider operating range than most toy motors: from 4.5 to 9VDC instead of 1.5-4.5V. This range makes them perfect...
$1.95
In Stock

Wiring Diagram

Code

This simple robot doesn't do a lot but it does it very well!

We have one DC motor with a fan attachment, and one servo motor where we connect the bubble wand. Every few seconds, the wand goes down into the bubble mix, then back up, the fan turns on for 3 seconds, then turns off and the process repeats!

# SPDX-FileCopyrightText: 2018 Limor Fried for Adafruit Industries
#
# SPDX-License-Identifier: MIT

# CircuitPython 3.0 CRICKIT demo
import time

import board
from adafruit_motor import servo, motor
from adafruit_seesaw.pwmout import PWMOut
from adafruit_seesaw.seesaw import Seesaw
from busio import I2C

i2c = I2C(board.SCL, board.SDA)
ss = Seesaw(i2c)

print("Bubble machine!")

SERVOS = True
DCMOTORS = True

# Create 4 Servos
servos = []
if SERVOS:
    for ss_pin in (17, 16, 15, 14):
        pwm = PWMOut(ss, ss_pin)
        pwm.frequency = 50
        _servo = servo.Servo(pwm)
        _servo.angle = 90  # starting angle, middle
        servos.append(_servo)

# Create 2 DC motors
motors = []
if DCMOTORS:
    for ss_pin in ((18, 19), (22, 23)):
        pwm0 = PWMOut(ss, ss_pin[0])
        pwm1 = PWMOut(ss, ss_pin[1])
        _motor = motor.DCMotor(pwm0, pwm1)
        motors.append(_motor)

while True:
    print("servo down")
    servos[0].angle = 180
    time.sleep(1)
    print("fan on")
    motors[0].throttle = 1
    time.sleep(3)
    print("fan off")
    time.sleep(1)
    motors[0].throttle = 0
    print("servo up")
    servos[0].angle = 0
    time.sleep(1)

This guide was first published on May 16, 2018. It was last updated on Sep 17, 2018.

This page (Bubble Bot) was last updated on Nov 27, 2023.

Text editor powered by tinymce.