Binary Addition Assistant (sample post)
Front view of the binary adder, without power on, and all the counting switches in the off position.
(Above is a reasonable sample caption. This picture could be a bit brighter, but it's clear and shows the project effectively.)
(Introductory text goes here.)
This project helps me to learn how to add binary numbers up. Each of the vertical toggle switches represents one of the powers of two, so the rightmost switch is the ones, the next one over is the twos, the next over is the fours, and so on. The horizontal switch at the bottom changes the board back and forth between decimal and hexadecimal representation of the sum.
(This picture isn't so good! It's too small on the page which hides detail, and it shows an ugly background for no reason, which is distracting. It's also missing alt text.)
(This picture is not straight-on, is out of focus, too small, poorly cropped, and missing alt text.)
(This detail photo is big enough on the page, but it's focused on the wires, which obscures the connections behind them. If you wanted to draw your viewers' attention to the text labeling on the wires, or their colors, this would be a good photo; if you wanted them to look at the circuit boards behind the wires, though, this isn't so useful. It's also lacking alt text.)
All of the components are screwed into the back of the main board with wood screws. The wires are plugged into the Arduino, a small power rail for all the grounds, and they're soldered onto the back of the 7-segment display for security.
(The above caption is pretty good. Image note: this photo is taken from the same place as the one above it, but it's got the focal plane on the chips behind rather than the wires in front. It also has useful alt text.)
In this video, I show operation of the machine in decimal mode, flipping different switches on to make different sums. When all switches are off, the sum is 0; when the rightmost switch is on, the sum is 1, and then when that switch is off but the next one over is on, the sum is 2; when only the third switch over is on, the sum is 4; and so on.
(Note that videos don't have captions or alt-text options on Google Sites, so you just need to write your own text boxes below them like this.)
(Note that these videos are not on YouTube. They are inserted here by uploading a video file to this Google Drive folder and then under the Insert tab on the right, selecting "Drive," then clicking on the Shared drive called "60-223 f23." By keeping video files in that Shared drive, we ensure that this documentation page will remain intact for the long term.)
Process
Laying all the parts out before beginning assembly. It took a few hours to do all the lasercutting.
Placing the central vane in its right spot prior to glueing up the side and end walls.
Lay the mating edges right next to each other to apply a single bead of glue along the line—this saves lots of time.
Ready for assembly. Note the places where glue cannot be applied in one long line; those have to have the glue applied to the right mating faces manually.
Clamping for an hour or so ensures that everything's in the right spot permanently.
We used this masonite, which the manufacturer calls "tempered service." It is actually 6mm thick from our measurements, not 1/4" as the label says.
(Your process section should have at least 4 photos each of which is captioned, and ~100–300 words describing any aspect(s) of your process you'd like your readers to know about. Did something surprise you with how well or how terribly it went? Did something take much longer than expected? Did you get lucky and something worked out unexpectedly? Tell us about it.
Add captions and alt text to your images so your reader understands their relevance and meaning.)
Discussion
(Address all of the prompts below. It is best to address all of these topics in a natural piece of prose. However, if you prefer, you may write four disjoint paragraphs, each of which is addressing a prompt. (The first way is better.) In total, this section should be ~250–400 words.
Response to comments gathered during the in-class crit. Quote (verbatim) from *at least* two written critiques that you received (positive, negative, or otherwise) from the in-class crit, and respond to them. (You may agree or disagree—in either case, explain your position.) You can access the written critique feedback
Self critique pertaining to the project. Are you happy with how the project came out? Did it satisfy your own goals? This *should not* simply be a recital of your process, but rather a meaningful reflection.
What you learned about your own abilities and/or limitations through the process of working on this project. These could be technical in nature (i.e. "I found that coding this particular behavior was surprisingly difficult"), or not (i.e. "I enjoyed making cardboard forms very much, and I think it will be a useful prototyping medium for me in the future"). What would you do differently next time? What would your advice to your past self be? Did you get hung up at a particular point in progress, or fail to see an easy workaround to a problem? Did you find a creative spark you didn't anticipate? Etc.?
Next steps. Do you expect to build another iteration of this project? If so, describe what you're planning to do. If not, describe what you *would* do if you were to build another iteration, based on the experience you had with this first one.)
Technical information
(Include your schematic and block diagram here.)
/*
Scotty Driver for ISAM 102 workshop
Reads an infrared ranger as input and drives a servo motor as output.
Code written for an MH-ET Live Tiny 88 board, a cheap ATTiny88 implementation.
(Note that our testing got no analog read values out of pins A0 through A5
for an unknown reason, hence using A6 as our input pin.)
pin mapping:
Arduino pin | role | description
___________________________________________________________________
A6 input attached to output leg of IR proximity sensor
3 output driving a continuous rotation servo
Code released to the public domain by the author, 10/12/2023
Robert Zacharias, rzachari@andrew.cmu.edu
*/
#include <Servo.h>
const int PROXPIN = A6,
SERVOPIN = 3;
// max. observed voltage is 1.5V, convert to analogRead value
const int MAXANALOGREAD = 1.5 / 5.0 * 1024;
Servo gearDriver;
void setup() {
gearDriver.attach(SERVOPIN);
pinMode(PROXPIN, INPUT);
}
void loop() {
int proxVal = analogRead(PROXPIN);
int motorVal = map(proxVal, 50, 1000, 5, 175);
motorVal = constrain(motorVal, 5, 175);
gearDriver.write(motorVal);
delay(10);
}