Animated Cat Toy

by bmohnsen in Living > LEGO & K'NEX

2098 Views, 6 Favorites, 0 Comments

Animated Cat Toy

catch3
__Cover.jpg

It never fails. I want to play with my cat and she wants to sleep. She wants to play and I am busy. What to do? The Automated Cat Toy mimics my cat’s favorite game - chase the laser dot.

The purpose of this Instructable is two-fold:

1) demonstrates automating a task and

2) continues the instructional sequence on using the 2020 Lego Mindstorm Robot Inventor Kit.

This Instructionable focuses on programming the Robot Inventor’s sound. It also elaborates on the movement, motor, and distance sensor commands which were introduced in the “Lego Robot Inventor Kit - Blast: On His Own” Instructable and the “Happy Pi Day!” Instructable.

Supplies

Lego Set - Mindstorms (51515)

Selected parts including hub, battery, 3 motors, distance sensor, technic beams (1x11, 1x7), connector beams, wheels, frames, pins, and bushing.

Additional Legos

1x1 plate round (4073) - red - quantity 5

1x1 round brick (3062b) - white or gray - quantity 10

2x2 round plate (4032) - white - quantity 2

2x2 round plate (4032) - red - quantity 1

2x2 round brick (3941) - white - quantity 2

2x2 dish (4740) - dark bluish gray - quantity 2

1x1 technic brick (6541) - reddish brown or dark bluish gray - quantity 1

Arduino Nano and Arduino Software

Laser Diode

Breadboard

9-volt Battery

Battery connector

Piece of Wire for the tail

Velcro

Mindstorms software

Build the Mouse

01Make.jpg
02Make.jpg
03Make.jpg
04Make.jpg
05Make.jpg
06Make.jpg
07Make.jpg
08Make.jpg

This step shows how to build the Mouse. Follow the images using parts from Lego Kit 51515 as well as the additional lego parts listed under Supplies.

1) Connect the three motors to each other using black pins, position eight black pins on the outputs of the two outside motors, position one (1/2) pin on the center motor, attach the connector beams (3x3) to the bottom of the two outside motors, attach 1x3 beams to the outside of each connector beam, and insert one blue (pin/axle) pin on the outside of each connector beams (see images 1 and 2).

2) Connect 1x11 beam to front of the connector beams, attach 1x7 beam to front of 1x11 beam, insert five 1x1 round red plates into the middle of the 1x7 beam (the mouth), and attach all four wheels (see image 3).

3) Connect two 1x9 beams (stacked) to the motors between the rear tires using 3L blue pins and attach two 1x9 beams (stacked) to the motors between the front tires using 3L blue pins. These beams raise the hub higher (so that it doesn’t interfere with the wheels) and flatten the wires (see image 4).

4) Connect ten 1x1 round bricks together (thread the extra piece of wire through the bricks), position one 1x1 technic brick to the (½) pin on the middle motor, and connect the string of round bricks to the technic brick (see image 5).

5) Connect the technic frame to the top of the hub using black pins, attach 1x9 beam to the front of the hub using black pins, attach two 1x2 beams to the front of the hub, and insert two black pins in the 1x9 beam, one black pin in each 1x2 beam, and four black pins to the bottom of the hub (see image 6).

6) Connect two 2x2 round plates and two 2x2 round bricks together, attach a 2x2 cone to the round plates/bricks, attach a white 2x2 plate and a red 2x2 plate to the top of the cone to form a nose. Attach the hub to the motors, connect a 1x5 beam to the two 1x2 beams, and attach the nose to the 1x5 beam using a 3L axle with a bushing (see image 7).

7) Connect two 1x3 beams to the front of the technic frame using black pins and connect a 2x2 dish to each 1x3 beam (see image 8) for ears.

8) Attach distance sensor to the black pins on the front (see image 8) for eyes.

Attach Wires to the Hub

01Wire.jpg
02Wire.jpg
03Wire.jpg

This step shows the attachment of the motor and distance sensor wires to the hub.

1) Attach the motors and distance sensor to the hub (see image 1 for the lettering).

Port D - Distance sensor (see image 2).

Port A - Left motor for left wheel (see image 3).

Port C - Center motor for tail (see image 3).

Port E - Right motor for right wheel (see image 3).

Set Up the Mindstorm Program

01Mind.png
02Mind.png
03Mind.png
04Mind.png
05Mind.png
06Mind.png

This step shows how to set up the Lego program (Mindstorms App) which will control the Mouse’s movement.

1) Open Mindstorms App (see image 1).

2) Click on Projects (bottom of image 1).

3) Scroll down to Other (see image 2).

4) Click on Create new Project (see image 2 for + symbol).

5) Select Word Blocks and click Create (see image 3).

6) Click on the three vertical dots and select Rename Project (see image 4).

7) Type “Mouse” for name (see image 5).

8) The new project automatically gets the code line “When Program Starts” (see image 6).

Outline the Programming Logic

logic_2.png
logic_1.png

The code (see images 1 and 2) instructs the Mouse to move forward until an obstacle is encountered. Then, the mouse reverses and alternates between turning left and right.

Write Code: Set Up

01SetUp.png
02SetUp.png
03SetUp.png

This step prepares the motors and the distance sensor for programming. It also sets up the one variable used in the program to monitor left and right turns.

1) Make a variable named “times” (see image 1) and drag “Set times to” under the “When program starts” command (see image 2). Make sure the "times" variable is selected from the drop down menu and a "0" is in the white oval (see image 2).

2) Drag “Set speed to” from Motor Category to under the “Set times to” command (see image 2). Make sure "Motor C" (the tail) is selected from the drop down menu and put "25" in the white oval (see image 2). The speed can be set between 1% and 100% of maximum speed.

3) Drag “Set movement motors to” from Movement Category to under “Set speed” command (see image 2). Select motors A and E (see image 3) with A on the left and E on the right.

4) Drag “Set movement speed” from Movement Category to under “Set movement motors to” (see image 2). Put "50" in white oval. The speed can be set between 1% and 100% of maximum speed.

Write Code: Programing the Sound

01Snd.png
02Snd.png
03Snd.png
04Snd.png
05Snd.png
06Snd.png
Sound

This step programs the playing of the cat meow sound just before the Mouse's first move to get the cat's attention.

1) Drag “Start sound “Cat Meow 1” from the Sound Category (see image 1) to under “Set movement speed to” (see image 2). The “Play sound” is similar but it completes the sound before moving on to the next step.

The Cat Meow 1 shows up because I previously selected it from the sound library.

1. Click on the dark violet oval and select "Add Sound" (see image 3).

2. Click on the "Library" and scroll down to select Cat Meow 1 (see image 4).

3. You also can edit the sound by clicking on the dark violet oval and selecting "Edit Sound" (see image 3).

4. The sound editing screen (see image 5) allows for editing (echo, louder, softer, looping, cutting, copying, pasting, and deleting) the selected sound.

5. An entirely new sound may also be recorded in this section by clicking on "Record" (see top of image 6) and then clicking on the red circle (see bottom right of image 6).

2) Clicking on the last image (image 7) shows a video with audio so that you can hear the Cat Meow coming from my computer. If you watch long enough you also will hear the beeps (see Step 9).

Note: Other than beeps, the sound is played from your device (computer, tablet) and not the hub.

Write Code: Movement

01Move.png

This step programs the Mouse to start moving.

1) Drag “Start moving” from the Movement Category to under the “Start sound” command (see image 1). Make sure "straight:0" is selected for the white oval.

Write Code: Wait Until

01Wait.png
02Wait.png
03Wait.png
04Wait.png
05Wait.png
06Wait.png

Steps 8 through 13 presents the code section which will be moved into the repeat loop in Step 14. Specifically Step 8 programs the distance sensor to determine when the Mouse is closer than 12” from an obstacle.

1) Drag "Wait until" (see image 1) from the Control Category to an open space below the first section of code (see image 2).

2) Drag “Distance Sensor (icon) is” from the Sensors Category (see image 3) to an open space near “Wait until” (see image 4).

3) Change the variables: motor D, closer than, 12, and in (see image 5).

4) Drag the “Distance Sensor (icon) is” inside the “Wait until” darker area (see image 6).

Note: Once the Mouse is closer than 12” from an obstacle, the next step in the code executes.

Write Code: Beep

01Beep.png
02Beep.png
Sound

This step programs the hub to beep three times when the Mouse encounters an obstacle.

1) Drag “Set volume to” from Sound Category (see image 1) to below “Drag Sensor” (see image 2). Make sure "100" is in the white oval.

2) Drag “Play beep for seconds” from Sound Category (see image 1) to below “Set Volume” (see image 2). Repeat two more times (see image 2). Change the first white oval to "88" (the key) and the second white oval to ".3" (duration in seconds) for the three commands.

Note: The beep sound will play from the hub.

Write Code: Reverse Movement

01Rev.png
02Rev.png

This step programs the Mouse to move in reverse for 10 inches.

1) Drag “Move for” from Movement Category to below the last “Play beep” (see image 1).

2) Change the variables: down arrow, 10, and in (see image 2).

Write Code: If/Then - Right/Left

01If.png
02If.png
03If.png
04If.png
05If.png
06If.png
07If.png
08If.png

This step sets up the If/Then command to determine whether the Mouse turns right or left after backing up. Throughout the running of the program, the variable times will be 0, 1, 2, or 3. The variable was set to 0 in the setup phase of the code. When the variable is 0 or 1, the mouse turns left and when it is 2 or 3 the mouse turns right. The mouse moves left, left, right, and right which keeps it from getting stuck in a corner.

1) Drag "If then else” (see image 1) from Control Category to an open space (see image 2).

2) Drag “Or” from Operators Category to an open space near “If then else” (see image 3).

3) Drag “=“ from Operators Category to an open space near “If then else” (see image 4). Repeat for a second “=“ (see image 4). Change the first ovals to times and put 0 in the second oval for the first “=“ and 1 in the second oval for the other “=“ (see image 4).

4) Drag the “times = 0” into the first dark space on the “Or” and the “times =1” into the second dark space on “Or” (see image 5).

5) Drag the “Or into the dark space on “If then else” (see image 6).

6) Drag “Move for” from Movement Category to under the “If” (see image 7). Change the first drop down box to left arrow, put 5 in the white oval, and select "in" from the second drop down arrow (see image 7) .

7) Drag another “Move for” from the Movement Category to under the “else” (see image 7). Change the first drop down box to right arrow, put 5 in the white oval, and select "in" from the second drop down arrow (see image 7) .

8) Drag “Start moving” from the Movement Category to under the “Move [left arrow] for” command (see image 7). Make sure straight:0 is selected for the white oval.

9) Drag “Start moving” from the Movement Category to under the “Move [right arrow] for” command (see image 7). Make sure "straight:0" is selected for the white oval.

10) Drag the entire “If Then Else” command under “Move [down arrow] for” (see image 8).

Write Code: Wag the Tail

01Wag.png
02Wag.png
03Wag.png

This step programs the C Motor to move which wags the tail.

1) Drag “Run for” from Motors Category (see image 1) to an open space and then drag a second “Run for” from Motors Category to under the first "Run for" (see image 2).

2) Change variables for the first “Run for”: C, [right arrow], 45, degrees (see image 2).

3) Change variables for the second “Run for”: C, [left arrow], 45, degrees (see image 2).

4) Drag the two “Run for” below the “If then else” block (see image 3).

Write Code: Change the Variable

01Var.png
02Var.png
03Var.png
04Var.png
05Var.png
06Var.png
07Var.png
08Var.png

This step increases the variable "times" by one until it reaches 3 and then resets it to 0.

1) Drag "If then else” from Control Category (see image 1) to an open space (see image 2).

2) Drag “times” variable from Variable Category (see image 3) and “=“ from Operators Category to area near the “If then else” command (see image 4).

3) Move “times” to the first white oval in “=“ and type "3" in the second white oval (see image 5).

4) Drag “=“ to dark area in “If then else” (see image 6).

5) Drag “Set to” from Variables Category (see image 3) to under “If” (see image 7). Make sure variable is "times" and "0" is in the white oval (see image 7).

6) Drag “Change by” from Variables Category (see image 3) to under “else” (see image 8). Make sure variable is "times" and put "1" in the white oval (see image 7).

7) Drag “If then else” block to under “Run for” (see image 8).

Write Code: Repeat

01Repeat.png
02Repeat.png
03Repeat.png
04Repeat.png

This step adds the “Repeat” block to the code and inserts the code into the block.

1) Drag “Repeat” from Control Blocks Category (see image 1) to an open area and put "5" in the white oval (see image 2). The "5" means that the block will repeat five times.

2) Move “Repeat” under “Start moving” (see image 3).

3) Drag the new code segment inside the “Repeat” block (see image 4).

Write Code: Finalize the Program

01Fin.png
02Fin.png
03Fin.png
04Fin.png
Movement

This step adds the last two lines of code to the program. These lines stop the motors and end the program.

1) Drag “Stop moving” from the Movement Category and “Stop” from the Control Category (see image 1).

2) Drag “Stop moving” and “Stop” below “Repeat” loop (see image 2). Make sure “and exit program” is selected from the drop down menu. Since these two lines are outside the repeat block, they will not be repeated.

3) See images 3 and 4 for the entire code.

4) Clicking on the last (image 5) shows a video of the Mouse responding to obstacles.

Design Circuit for Laser Pointer

01Circuit.jpg
02Circuit.jpg

This step creates the laser pointer/Arduino circuit.

1) Position the Arduino Nano on the breadboard (see image 1).

2) Connect the 9-volt battery to Gnd and VIN (see images 1 and 2).

3) Connect the laser to Gnd and D5 (see images 1 and 2).

Program the Arduino to Control the Laser Pointer

01Arduino.png

This step creates the Arduino program which controls the laser pointer. The pointer will turn on for 3 seconds and off for 1 second.

1) Open Arduino program.

2) Type the code shown in image 1.

3) Watch the laser turn on and off.

Attach the Breadboard and 9 Volt Battery to the Hub

01Attach.jpg
03Attach.jpg

This step attaches the breadboard and the 9 volt battery to the hub.

1) Attach velcro to the top of the hub, the long side edge and back on the breadboard, and both narrow sides and the back of the battery (see image 1).

2) Position the breadboard and battery on the top of the hub (see images 1 and 2).

Test Auomated Mouse

01Test.png
02Test.png
Ready1
catch5a

This step tests all the features to ensure everything is working.

1) Turn on hub.

2) Press hub icon in upper right hand corner of the screen (see image 1) and follow the on-screen directions to complete the connection sequence.

3) Place the Mouse on floor.

4) Click on the start icon (see image 2) in the lower right hand corner of the screen.

5) Watch the Mouse checking for errors or problems (see image 3).

6) My cat catching the dot as soon as the Mouse stops - she is a little lazy. You may increase the number of repeats if you have a lazy cat as well.