Skip to content

Commit cf25320

Browse files
committed
Replaces pipe with colon in title.
1 parent b776c36 commit cf25320

1 file changed

Lines changed: 33 additions & 33 deletions

File tree

collections/_posts/2026-02-20-critical-making-fellowship-2025-2026.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
author: ammon-shepherd
33
layout: post
44
date: 2026-02-20 12:54:00
5-
title: "Critical Making Fellowship 2025-2026 | Part 1"
5+
title: "Critical Making Fellowship 2025-2026: Part 1"
66
slug: 2026-02-20-critical-making-fellowship-2025-2026-part-1
77
summary: "Fist update on the 2025-2026 Critical Making Project"
88
category: essay
99
tags:
10-
- research-and-development
10+
- research-and-development
1111
- makerspace
1212
- critical-making
1313
---
@@ -17,81 +17,81 @@ Beginning in 2023, the Makerspace has funded a graduate student, usually in the
1717

1818
# Project Overview
1919

20-
This project aims to visualize electoral voting patterns in previous presidential elections using an interactive data-sculpture. Each state is represented with a cluster of hexagonal cells equal to the number of electoral votes allocated to the state.
20+
This project aims to visualize electoral voting patterns in previous presidential elections using an interactive data-sculpture. Each state is represented with a cluster of hexagonal cells equal to the number of electoral votes allocated to the state.
2121

2222
[!["2012 US Electoral map"](/assets/post-media/critical-making-projects/3d-usa-map/2012_United_States_presidential_election.png)](https://www.mapchart.net/usa-hex-cartogram.html)
2323

2424

25-
The state-block will have two actions in response to input data:
25+
The state-block will have two actions in response to input data:
2626

27-
1. light up blue or red depending on the party of the winning candidate and
28-
2. raise or lower itself proportional to the margin of victory.
27+
1. light up blue or red depending on the party of the winning candidate and
28+
2. raise or lower itself proportional to the margin of victory.
2929

30-
The data on state-level electoral votes is from UCSB’s American Presidential Project website.
30+
The data on state-level electoral votes is from UCSB’s American Presidential Project website.
3131

32-
# Data
32+
# Data
3333

34-
The data has already been scraped from UCSB’s website and contains data on the 1924-2024 elections. They are stored in the election data folder on the shared drive, with a separate .csv file for each election year. Files are named with the convention `Election_####`, e.g. `Election_1968`. Years with atypical electoral votes have been noted in the data description document, which can also be found in the election data folder.
34+
The data has already been scraped from UCSB’s website and contains data on the 1924-2024 elections. They are stored in the election data folder on the shared drive, with a separate .csv file for each election year. Files are named with the convention `Election_####`, e.g. `Election_1968`. Years with atypical electoral votes have been noted in the data description document, which can also be found in the election data folder.
3535

36-
The data columns are as follows:
36+
The data columns are as follows:
3737

38-
State: State where the data was collected
38+
State: State where the data was collected
3939

40-
Total: total votes tallied for the state
40+
Total: total votes tallied for the state
4141

42-
Popular_D: Number of popular votes won by the Democratic candidate
43-
44-
Prop_D: Proportion of total votes received by the Democratic candidate
42+
Popular_D: Number of popular votes won by the Democratic candidate
4543

46-
EV_D: Number of electoral votes won by the Democratic candidate
47-
48-
Popular_R: Number of popular votes won by the Republican candidate
44+
Prop_D: Proportion of total votes received by the Democratic candidate
4945

50-
Prop_R: Proportion of total votes received by the Republican candidate
46+
EV_D: Number of electoral votes won by the Democratic candidate
5147

52-
EV_R: Number of electoral votes won by the Republican candidate
48+
Popular_R: Number of popular votes won by the Republican candidate
49+
50+
Prop_R: Proportion of total votes received by the Republican candidate
51+
52+
EV_R: Number of electoral votes won by the Republican candidate
5353

5454
* If a 3rd party candidate won electoral votes, the votes will be recorded with similar conventions as above, with "_3rd" as the suffix.
5555

56-
EV_Outcome: Column with electoral vote outcomes. Data is stored with integer values of electoral votes, followed by the party they were cast for, separated by spaces. E.g. `3 D 0 R 0 I`, where 3 votes were cast for the Democratic candidate, and 0 for the Republican and Independent/3rd party candidate.
56+
EV_Outcome: Column with electoral vote outcomes. Data is stored with integer values of electoral votes, followed by the party they were cast for, separated by spaces. E.g. `3 D 0 R 0 I`, where 3 votes were cast for the Democratic candidate, and 0 for the Republican and Independent/3rd party candidate.
5757

58-
Margin: Margin of victory, calculated using
58+
Margin: Margin of victory, calculated using
5959

6060
```
6161
MOV = (Raw margin of victory) / (Total votes in state)
62-
```
62+
```
6363

64-
where the raw margin of victory is the difference in popular votes between the first and second place candidates in the state.
64+
where the raw margin of victory is the difference in popular votes between the first and second place candidates in the state.
6565

6666

67-
# Hardware
67+
# Hardware
6868

69-
The state-blocks will be 3D printed by Ammon at the Makerspace and mounted on a similar 3D printed rack-and-pinion mechanism to achieve the raising and lowering.
69+
The state-blocks will be 3D printed by Ammon at the Makerspace and mounted on a similar 3D printed rack-and-pinion mechanism to achieve the raising and lowering.
7070

71-
The vertical movement will be powered by 180-degree rotation Servo motors. They were chosen because their degree of rotation can be specified in code. This allows for an easy transition from the MOV value in the data into Servo motor directions. The Servo motors will be connected to the Adafruit 16-channel PWM bonnet, and a brief tutorial on connecting and using the bonnet can be found [here](https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi/overview). For this project, the bonnets will use the 3x4 right angle male headers, so the Servo motors can all interface to the pi.
71+
The vertical movement will be powered by 180-degree rotation Servo motors. They were chosen because their degree of rotation can be specified in code. This allows for an easy transition from the MOV value in the data into Servo motor directions. The Servo motors will be connected to the Adafruit 16-channel PWM bonnet, and a brief tutorial on connecting and using the bonnet can be found [here](https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi/overview). For this project, the bonnets will use the 3x4 right angle male headers, so the Servo motors can all interface to the pi.
7272

73-
The light-up portion of the project will be completed with the 5050Neopixels, whose product specifications can be found [here](https://cdn-shop.adafruit.com/product-files/1655/SKC6812RV__12VOP0274E_REV.A1_EN%2812%29.pdf). A pdf of the specs will also be in the shared drive. The pin configuration can be found on page 5 of the pdf. When connecting the Neopixel to the bonnets, the signal pin should connect to pin 2 (DIN), the power pin should connect to pin 3 (VDD), and the ground should connect to pin 1 (GND).
73+
The light-up portion of the project will be completed with the 5050Neopixels, whose product specifications can be found [here](https://cdn-shop.adafruit.com/product-files/1655/SKC6812RV__12VOP0274E_REV.A1_EN%2812%29.pdf). A pdf of the specs will also be in the shared drive. The pin configuration can be found on page 5 of the pdf. When connecting the Neopixel to the bonnets, the signal pin should connect to pin 2 (DIN), the power pin should connect to pin 3 (VDD), and the ground should connect to pin 1 (GND).
7474

7575
* It should be possible to chain multiple Neopixels by chaining pin 4 (DOUT) to pin 2 (DIN) on another Neopixel, but I haven’t had a chance to test it.
7676

77-
# Software
77+
# Software
7878

79-
There is some Python code for powering the Servos simultaneously. This is on the Raspberry Pi and should be stored in the “Code” folder. The packages used for powering the Servos and Neopixels must be used in a virtual environment. On Thonny, you can go to “Run”, then “Select interpreter”, then choose the venv that is in the “Code” folder. Not much has been done for the software portion of this project.
79+
There is some Python code for powering the Servos simultaneously. This is on the Raspberry Pi and should be stored in the “Code” folder. The packages used for powering the Servos and Neopixels must be used in a virtual environment. On Thonny, you can go to “Run”, then “Select interpreter”, then choose the venv that is in the “Code” folder. Not much has been done for the software portion of this project.
8080

8181

8282

8383
# February 2026 update
8484
Further consideration about the project led us to expand the vision of the project. Instead of being tied to electoral data, the map will be able to use any two data points to compare states. The LEDs will not be exclusively red or blue, but RGB LEDs will be used to allow a range of colors.
8585

86-
As of February 2026, the hardware side of things has improved a bit. California was chosen for the test case as it is the largest with the most electoral votes. This would test the capability of the inexpensive 180 servo motors to move the 3D printed states.
86+
As of February 2026, the hardware side of things has improved a bit. California was chosen for the test case as it is the largest with the most electoral votes. This would test the capability of the inexpensive 180 servo motors to move the 3D printed states.
8787

88-
Originally, it was hoped to use the output of data from the R statistical program to generate the 3D models for printing. The resulting hexagons from this workflow were inconsistent.
88+
Originally, it was hoped to use the output of data from the R statistical program to generate the 3D models for printing. The resulting hexagons from this workflow were inconsistent.
8989

9090
![Map showing inconsistent hexagon and height](/assets/post-media/critical-making-projects/3d-usa-map/r-generated-map.png)
9191

9292
An additional issue, was that the generated file created a map with states at varying heights. We are going to account for this in the hardware by moving the states up and down, so they all need to be the same height.
9393

94-
Modeling each state by hand in Fusion 360 is the solution.
94+
Modeling each state by hand in Fusion 360 is the solution.
9595

9696

9797
![Model of California](/assets/post-media/critical-making-projects/3d-usa-map/hexafornia.png)

0 commit comments

Comments
 (0)