Champaign-Urbana Community Fab Lab
Champaign-Urbana Community Fab Lab

Author Archive

Craig Santo – Iteration

(Iteration on Arduino Week 1)

Original: Simple temperature sensor that shows a color between blue-green-red depending on where the temperature is relative to a low-medium-high set-value.

Light on Low Setting

Light on Middle Setting


My goal was to turn the temperature sensor into a more useful, more ‘physical’ thermometer. Feature-wise, this included integrating more sensors that I’ve never used before: An lcd screen, buzzer, button, and changed the single RGB LED for an array of neopixels. The max-min range of the thermometer is changeable in the code easily. The neopixels start at blue at the bottom, and interpolate up to red at the top. An alarm can be set to go off if the temperature goes above (or below, with a different flag) a certain temperature – and a button can enable/disable the alarm. The lcd screen displays the current temperature.


Pastebin of final code:

I spent a lot of time tinkering with the LCD – the trouble being that there are several libraries with the same name (LiquidCrystal_I2C.h) and it took a while to find one that worked. This library did the trick:

Clean wiring was another thing I struggled with – especially when factoring in the box itself. I used a simple press-fit box and smoothed out an edge on each of the walls.

Otherwise, incrementally adding more components to the arduino wasn’t an issue – adding more sensors is easy enough once you’ve done it a few times.

I’m pretty happy with how it turned out, but if I had the chance to iterate again, I might redesign the box with thought given to how the components will sit.

Continue Reading

Craig Santo – Arduino 2

Prototype 1:

Sadly this one didn’t make it much past the conceptual stage. After working with the logistics of it, I quickly realized that making the robot walk with stability, in addition to dragging the arduino/breadboard, would take a lot of work. I’d maybe like to work on an alternative version of this design (more akin to a gorilla, or something that drags itself using its front legs, keeping its back legs on the ground) for the iteration assignment?

Prototype 2:

More of a proof-of-concept for the final version. I decided to go with something more snake-like (with this video kicking around in the back of my mind:

The first attempt at using paperclips to attach the paper towel roll to the motor was unsuccessful due to the inability – but I was able to prove the movement was possible.


My second iteration on this idea used more reinforcement to keep the tubes bound to the motors – threading them through, using more tape, etc. I strung together two motors and spent a lot of time playing with their velocities, starting positions, and directions until I found something that would work. I discovered during my testing that surface traction was very important for my bot’s movement, which is fitting, given that this happens for actual snakes.

I also modified my code to be able to specify separate forward/backward velocities for each motor (instead of just a single velocity for each)

I was fairly surprised by how complicated it was to attach things to the motor and build a comprehensive motor – there were more “physical” logistics than I expected – how to get around wires, boards, etc – how to actually attach things to the motors in a stable way that would eschew movement, etc.

Final demo: I believe I’ll be able to show it live during section!

Pastebin for final code:

Continue Reading

Arduino 1 – Craig Santo

Temperature Input -> RGB Output

Being a CS Major, this week was fairly easy for me – but it’s still fun to tinker with this stuff. I have little experience messing with hardware in general, so wiring things up was a bit of work. Additionally, the RGB wiring on the LED didn’t seem to match the component’s labels (R and B were swapped), and the main guide for the temperature sensor had the GND and 5V pins switched, causing temperature to increase/decrease in the opposite direction.


Circuit function:

Temperature is read in. If it’s below the minimum threshold, the light color is blue. If it’s above the maximum, it’s red. A middle value can be specified. Between low and mid = lerp between blue and green; between mid and high = lerp between green and red.

Circuit connection: 

Thermal Sensor: S in A0, middle in GND, – in 5V.

RGB LED: – in GND, R (actually B) in 10, G in 9, B (actually R) in 11. 

Check out the code at this pastebin:

Continue Reading

3D Printing – Craig Santo

Part 1 (in class)

Part 2

Concept Sketches

Originally, I thought I’d end up doing the Terrible Silverware Set, but I ultimately ended up going forward with the Card Holders because I wanted to design something that I knew I’d definitely keep and use.

I decided to learn Fusion360 to build the card holders, and this was definitely the most difficult part of the assignment. In my opinion, it was worth it to learn a more powerful modeling tool, because playing with many of the options, even if they didn’t get used in my design, has started inspiring me for the final project.

The “core” of the design is relatively simple – a 1.5″ high box, with a 4″ x 3″ base with a 10mm fillet. That’s what’s pictured on the left. On the right is my first draft of the bottom piece that holds the stacked boxes together. Even though I liked how it looked, I realized that the bottom would need to have a harder cut-off, so the stacked boxes simply didn’t slide off of each other. Additionally, in the concept art, the bottom piece also acts as an insert inside of the box that the cards can rest in, but I realized that this wouldn’t provide any benefit, and the cards not at the bottom would slide around anyway.

I was fairly happy with how the main part of the holders turned out – it was the simplest part of the design, anyway. I played with the bottom piece a bit more though, eventually making its shape a just a smaller version of the main box. I then figured that hollowing out the base, leaving only its rim, would save on materials. In retrospect, this wasn’t the case due to printing logistics – plenty of material was still used in building a bed for the print to sit on.

More difficulty came in learning the tool, and making sure things were nice and centered. For instance, in scaling pieces, I needed to calculate non-uniform scaling, and figure out how to translate the scaled pieces to the proper position. For example, the base of the box is a scaled-down version of the box’s dimensions – but I wanted to change the base’s x and z scale such that both had an equal rim size (uniform scaling leads to unpleasing distortion). Here’s a sample of that math. I scaled the 3″ side down to 90% of its original side, and had to calculate how to scale the 4″ dimension to maintain a constant rim-size (the answer was 92.5%).

4in -> 101.6mm
3in -> 76.2mm

76.2mm * .9 = 68.58mm
76.2mm – 68.58mm = 7.62mm

101.6mm – 7.62mm = 93.98mm
93.98mm/101.6mm = .925

The top piece was fairly simple. The above image shows the underside of the box’s top – it’s ultimately two concentric rims. The tops of the box’s sides sit between the two downward facing rims, “locking in” slightly. In retrospect, the top/locking mechanism is the thing I’d like to change the most. At the very least, lengthening the outer rim would make it more secure fairly cheaply. Unlike the base of the box, the lid’s hollow nature did save on material costs – given that I printed the top upside-down, no bedding was really necessary.

I’m pleased with how the final product turned out. Though they’re relatively simple, I got a lot out of designing them, and a simpler design was ultimately a better design. It’s something that other people could easily use, either printing as-is or changing the design dimensions slightly to fit different card decks, perhaps for other games or something. They’re also pretty easily to customize with stickers or something.

Continue Reading

Paper Circuits – Craig Santo


“I have not failed. I have just found 10,000 ways that won’t work.” – Thomas Edison

The above drawing uses 2 LEDs in parallel – yellow and red. Though they require similar voltages, I needed to add a resistor (approximately 42 ohms) to the yellow LED’s path in order to get the red LED to light up.

3D Object

I’ve failed at origami the few times that I’ve tried, so I wanted to force myself to learn something here. With a friend teaching me how to do it, the results turned out pretty well.

Though the second crane (the one I’m holding) turned out better than the first, I actually ended up using the first one. The way it folds was useful in designing the switch mechanism.

My final design has two parallel LEDs (blue) in parallel with each other, both in series with a yellow LED. Because blue LEDs require ~3-3.3V, I knew I would likely need two batteries in series.

In principle, my circuit design was simple – two batteries link up to a yellow LED, which then links up to two parallel blue LEDs – no resistors necessary. What made this project difficult was its geometry. Wiring everything up without destroying the bird was challenging, and it definitely didn’t come out unscathed – there are plenty of folds on it, and the tape-job I did on the batteries could’ve been cleaner.

My wiring could definitely be better from an aesthetic design point – if I had more confidence/experience, I may have tried my initial design. I suppose it would also be possible to further incorporate copper wire into the pattern, given that dead-ends have little-to-no effect on a circuit.

However, over-all, I’m happy with the final product – I had to do little in the way of circuit debugging, as everything largely worked the first time around.

Continue Reading

Stickers – Craig Santo

I created the first two images during lab section – I didn’t know that we needed to do a logo for the layered one, but I’d say it’s pretty close to the twitter logo…

My Griffin sticker is a corgi-bird hybrid, created by cutting apart a bird silhouette (removing most of the bird, and then breaking the wings and tail apart) and unioning them with the corgi silhouette.

For the “Twitter” logo, I found a black-and-white outlined picture of a bird, and used two copies of it to make the separate pieces – one became the full black background that the rest of the pieces would go on, and the other turned into the separate pieces that would be layered on top (main body/head, wing, beak).

I don’t have any in-progress shots of the “Twitter” sticker, but the layering was wing, body, beak. In retrospect I slightly missed the wing sticker’s placement.

For the final sticker, I edited the “Welcome to Nightvale” art depicted below

There were some printing mishaps – after sacrificing a few vinyl sheets, I decided to do the two black pieces (tower and waves) separately because I wasn’t quite able to get them on the same sheet – the alignment of the printing sheet was not quite what it said it was.
All the layers finalized
Backsplash layer with tower
Eye on top of backsplash layer
Center of eye added
Final – waves added

The toughest part about this assignment was getting the black pieces of the sticker to peel out and stick properly – I need to pluck out pluck out pieces from the tower sticker, and delicately pull the waves from the rest of their vinyl.

Continue Reading

Name Tag – Craig Santo

In order to add complexity to my design, I decided to make a custom shape using the union tool – a semicircle, rounded rectangle, and regular rectangle. The regular rectangle is barely visible, as it is only used to make a smooth connection between the rounded rectangle and the semicircle.

The smaller semicircle cutouts on both layers function both as a keychain clip, as well as a way for me to let more of the bottom layer show through from the front.

Initial template with top and bottom pieces.

My original (lab time) design used the same raster image, but with a different shape (a simple, rounded rectangle). My name and the image were also not imposed over each other. The most difficult part about putting the shape together was the merging point of the regular rectangle and the semicircle – the “mathematically correct” point resulted in a sharp corner where they connect.

I considered adding circular cutouts to the bottom layer that corresponded to the holes in the letters in my name (a, g, o), but ultimately decided against it. I decided that I didn’t want anything under/behind the name tag to “bleed through,” and that I would instead choose a font that made the letters distinct enough to be discernible without the cutouts visible. I would further highlight the cutout letters by choosing a lighter material for the top layer than the bottom layer.

I chose a VR headset for my image because I’ve been on VR course staff for 4 semesters, and I do VR work as an intern for the Advanced Visualization Lab at the NCSA.

Added name and raster image to top piece

This is how the name tag turned out. I used 1/8″ green acrylic for the front layer, and 1/8″ black acrylic for the back. The two layers were glued together with medium-strength acrylic glue (the water-based acrylic glue ended up not being strong enough). Getting the two pieces to set together was tricky – a small amount of the glue can be seen in the lettering, but it’s hard to see unless you’re really close.

Finished product. Used two colors of 1/8″ acrylic.

I originally wanted to do a lighter color for the top layer, but in retrospect I’m content with the dark green. There’s enough contrast in the two layers to make the text pop without the “inside” of the letters, and a lighter acrylic would likely not have shown the etched image as sharply as I wanted. Over all, I was really happy with the result, seeing as I have 0 experience with anything physical like this!

Continue Reading