Protogen Head Voor De HKU
Ik heb voor dit vak een attempt gemaakt om een Protogen fursuit hoofd te creeƫren met een LED set ogen door gebruik van de arduino. Mijn intentie was hiermee iets te maken waardoor ik een goeie grondlegging had waarmee ik later ook potentieel zou kunnen uitwerken naar een meer gecompliceerde creatie met meer animaties etc. Maar voor nu, een kostuumhoofd met LED ogen :)
Ik heb met dit werk geprobeerd te werken met 3D modeling en printen, en ook al was dit in principe initieel goed gegaan, was in de uiteindelijke uitwerking iets zo fouttallig uitgekomen dat het 3D print proces zo fout was gegaan dat ik het idee moest laten vervallen en enkel met foam bezig was geweest. Toch heb ik uit dit proces een paar dingen kunnen leren:
Ten eerste, hoe ik LEDs kan programmeren met Arduino IDE en hoe de animaties werken. Ook heb ik geleerd hoe de stroomwerking van de Arduino uberhaupt werkt en wat de pinnetjes bedoelen. Ik heb geprobeerd te werken aan mijn soldeervaardigheid, maar weet nu ook zeker dat dit voor mij geen mogelijkheid is door fysieke problemen (zwaar onstabiele handen, mee geboren helaas). Ten slotte ook een meer werkzaamhedig vlak, dat je beter alle dingen zelf kan gaan regelen dan te vragen of een ander dat voor je kan doen.
Supplies
Arduino UNO
Half breadboard
5x FTF kabels
5x FTM kabels
11x MTM kabels
LED 2x 16x8 matrix OF 1 32x8 Matrix
https://www.bitsandparts.nl/LED-Matrix-Display-Module-8x8-4-voudig-MAX7219-Blauw-p1920181
Enige vacht van jouw keuze, ik heb vacht van https://www.howlfabrics.com/
Fleece
Dunne EVA foam van jouw keuze, ik heb gebruik gemaakt van deze https://www.minque-creative.com/nl/materialen/foam/eva-foam-high-density-cf100/
Soldeerbout & tin
Hete lijmpistool
Knopje van keuze
Pijn
Vergaar alle compartementen. Ben er zeker van dat je alles klaarhebt voordat je begint
Begin Van De LED Arc
In de situatie dat je een 32x8 matrix had zoals ik, snijd hem doormidden met een zeer accuraate zaagmachine (1mm of minder qua zaag preferabel) en soldeer de pinnetjes aan het afgezaagde stuk.
Testen LEDS
Voeg deze code in Arduino toe, installeer LEDcontrol library. Hiermee zou je een werkend oog moeten krijgen.
#include <LedControl.h>
// Define the number of MAX7219 modules and pins connected
#define NUM_DEVICES 2
#define DATA_IN_PIN 11
#define CLK_PIN 13
#define CS_PIN 10
#define BUTTON_PIN 2
// Create a LedControl object
LedControl lc = LedControl(DATA_IN_PIN, CLK_PIN, CS_PIN, NUM_DEVICES);
// Define the custom patterns for each matrix
const uint8_t eyeOne[8] = {
B11111110,
B11111110,
B00000010,
B00000010,
B00000010,
B00000100,
B00011000,
B11100000
};
const uint8_t eyeTwo[8] = {
B01111111,
B01111111,
B01000000,
B01000000,
B01000000,
B00100000,
B00011000,
B00000111
};
// Define Blink
const uint8_t blink1[8] = {
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B11111111,
B11111111,
B00000000
};
const uint8_t blink2[8] = {
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B11111111,
B11111111,
B00000000
};
// Define the duration of each pattern display in milliseconds
#define PATTERN_DURATION 100 // 0.5 seconds per pattern
// Define the interval for repeating the alternating animation
#define ANIMATION_INTERVAL 7000 // 10 seconds
// Define variables to keep track of timing
unsigned long lastAnimationTime = 0;
boolean displayEnabled = true; // Variable to keep track of display state
void setup() {
// Initialize the MAX7219 devices
for (int i = 0; i < NUM_DEVICES; i++) {
lc.shutdown(i, false); // Wake up displays
lc.setIntensity(i, 8); // Set brightness level (0 is min, 15 is max)
lc.clearDisplay(i); // Clear display register
}
pinMode(BUTTON_PIN, INPUT_PULLUP); // Set the button pin as input with internal pull-up resistor
// Booting up animation
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, B11111111);
lc.setRow(1, row, B11111111);
delay(50);
}
delay(500); // Pause for 0.5 seconds between states
for (int row = 0; row < 8; row++) {
// Booting up animation 2
lc.setRow(0, row, B11111111);
lc.setRow(1, row, B11111111);
delay(50);
}
delay(500); // Pause for 0.5 seconds between states
}
void loop() {
// Check if the button is pressed
if (digitalRead(BUTTON_PIN) == LOW) {
// Invert the display state
displayEnabled = !displayEnabled;
delay(200); // Debouncing delay
}
if (displayEnabled) {
// Check if it's time to update the animation
unsigned long currentTime = millis();
if (currentTime - lastAnimationTime >= ANIMATION_INTERVAL) {
// Display blink for half a second
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, blink1[row]);
lc.setRow(1, row, blink1[row]);
}
delay(PATTERN_DURATION); // Display for 0.5 second
// Display blink2 for half a second
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, blink2[row]);
lc.setRow(1, row, blink2[row]);
}
delay(PATTERN_DURATION); // Display for 0.5 second
// Reset the last animation time
lastAnimationTime = currentTime;
} else {
// Display eyeOne pattern on the first matrix
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, eyeOne[row]);
}
// Display eyeTwo pattern on the second matrix
for (int row = 0; row < 8; row++) {
lc.setRow(1, row, eyeTwo[row]);
}
delay(1000); // Display for 1 second
}
} else {
// If display is disabled, turn off all LEDs
for (int i = 0; i < NUM_DEVICES; i++) {
lc.clearDisplay(i);
}
delay(200); // Debouncing delay
}
}
delay(1000); // Display for 1 second
}
}
Testen Van Beiden LEDS Aan Elkaar
Deze stap is rommelig maar zeer nodig, ik heb beiden de IRL view toegevoegd en hoe het er netter uitziet in een programma. Verbind de kabels op de juiste manier aan een breadboard. Zorg ervoor dat beiden LED matrix dezelfde pins volgen zodat ze dezelfde plaatjes kunnen hebben.
Voeg de button toe via pin2 als je zeker weet dat de LEDs werken. Zo kun je het handigste testen waar de fout is.
Soldeer
Soldeer de delen aan elkaar op een soldeerbord op een soortgelijke manier als de breadboard setup. je kunt de kabels aan elkaar linken tussen de gaatjes door er tin tussen te smelten. Ben voorzichtig met de hitte omdat een soldeerbord wel kan smelten met te hoge temperaturen of er te lang tegen te houden.
Jank
Er zijn 2 manieren om een Protogen hoofd te maken. De beste manier die ik zou kunnen voorstellen is om dit 3D model te printen en met gebruik van hun tutorial in elkaar te zetten. https://b0xcat.gumroad.com/l/protato
Lukt dat echter niet en ben je geforceerd om alles met foam te doen, gebruik de 3d model als een inspiratie om je hoofd in elkaar te zetten met foam. Ik zou aanraden als je als beginner niet goed bezig kan met foam deze template te bestellen van etsy: https://www.etsy.com/nl/listing/815616892/protogen-fursuit-head-template-digitaal?click_key=d6071ab8b179a7c82a53ea33d3ae4a042780a559%3A815616892&click_sum=d0093a87&ref=internal_similar_listing_bot-2&listing_id=815616892&listing_slug=protogen-fursuit-head-template-digitaal En daarmee met het maken van dit project een gat te snijden voor waar je de LEDs wil plaatsen
Vacht En Zo
Voeg vacht toe met hete lijm, het is te doen zonder patroon door de zachte achterkant van het vacht.
Profit
Hij is nu klaar :)
Downloads
Het Struggle Gedeelte
Dit proces ging zoals ik eerder had vernoemd niet helemaal soepel. Hier zijn nog de fotos van mijn proces voordat ik op de foam overging. Ik had een concept art gemaakt waarmee ik verder wilde gaan in 3D printen. Ik ga dit wel opnieuw proberen zodra ik iets meer tijd heb voor een persoonlijk project, want het was wel erg leuk :)