Files
micromelon-website/content/resources/activity-servo-gauge.mdx
Tim Hadwen ae3ae18585 Major site overhaul: resources hub, content migration, new blog posts, forms
- Redesign /resources as sectioned hub with category pages
- Migrate 645 Squarespace CDN images to local /images/content/
- Create 9 new news/blog posts with event photos
- Fix blog post slugs (rename gibberish filenames)
- Rename Design Blog to Design Blogs across site
- Remove education page, replace with Platform in nav
- Redesign rover repair request form with dynamic rover entries
- Add school search combobox to contact, store, and repair forms
- Extract shared KNOWN_SCHOOLS data
- Make /rover-expansion-3d-printing dynamically pull from MDX
- Add related resources sections to product pages
- Fix homepage broken /quote links to /store
- Store page: sample kit cards, inline quote builder, mailing list opt-in
2026-03-01 17:14:05 +10:00

75 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Activity: Servo Gauge"
date: "2024-12-31"
categories: ["Activities", "All", "Simulator Activities"]
tags: ["Attachments", "Servo Motors", "Intermediate"]
excerpt: "Use a micro servo to make your own visual gauges. Program the gauge to react to a sensor value, motor speed, or robot tilt to visualise data in a new way. In this activity, well be making a gauge to display the stability of the rover."
featuredImage: "/images/resources/activity-servo-gauge.jpg"
---
Use a micro servo to make your own visual gauges. Program the gauge to react to a sensor value, motor speed, or robot tilt to visualise data in a new way. In this activity, well be making a gauge to display the stability of the rover.
### Setup
**1)** We need a visual scale to attach to the servo. Start by printing the scale attachment below. It can help to glue the paper to card or cardboard for additional rigidity.
[Scale Attachment](/s/gauge.png)
![](/images/content/f93209-gauge.png)
**2)** Cut out the scale on the outer black line, as shown in the picture below.
![](/images/content/48cbaf-cut.jpg)
**3)** Position the scale on the front of the servo with the axle at the centre of the scale. Poke through the circles on the scale, and screw in two servo-mounting screws to keep the scale in place.
![](/images/content/292a59-screw.jpg)
**4)** Connect the servo to the left servo port on the rover and turn it on. Calibrate the servo by setting the servo to position -90, and attaching the servo horn pointing to the red portion on the scale.
![](/images/content/9f935c-set-servo.png)
![](/images/content/74b90e-program.jpg)
### Heres Our Approach
**Constant -** A constant is a variable that never changes when the code is run. In python, we write this in all capitals with underscores between words.
#### 1) Prepare the Loop:
![](/images/content/d0ea64-loop.png)
Start by setting up a While loop that will run forever. The gauge will read the sensor and update itself each time in this loop.
#### **2) The Scale Function:**
![](/images/content/2ed8d9-scale.png)
1st row (x) - This is the sensor value that will be scaled
2nd row (xmin) - This is the lowest number the sensor can be
3rd row (xmax) - This is the highest number the sensor can be
4th row (newMin) - The lowest number the scaled value can be
5th row (newMax) - The highest number the scaled value can be
From the math section, grab the Scale Number block. The purpose of this block is to take an input (like a sensor reading) and scale it to suit an output (like servo movements). This block works similarly to the diagram below. Here are the inputs for the block:
![](/images/content/6f008c-map_diagram.jpg)
*Example of the scale function from [0, 1023] to [0, 4]*
For this activity, we will use the y-axis of the accelerometer as our sensor. The limits of this sensor are [-1, 1]. We will connect this to the output of a servo with limits of [-90, 90]. Fill in the Scale block using these values.
#### **3) Complete Code:**
Finally, place a Move Servo block into the loop and put the scale function inside. Run the code and tilt the robot on its side. The gauge should move the hand the more you tilt the rover.
![](/images/content/c89ca3-complete-code.png)
**Tip:**
Try changing some of the colours on the scale and adding numbers to it. Maybe connect it to other sensors like the Ultrasonic, and use the gauge to display how close an object is to the rover.