Introduction: 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

Step 1: Pijn

Vergaar alle compartementen. Ben er zeker van dat je alles klaarhebt voordat je begint

Step 2: 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.

Step 3: 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

 }

}


Step 4: 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.

Step 5: 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.

Step 6: 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

Step 7: Vacht En Zo

Voeg vacht toe met hete lijm, het is te doen zonder patroon door de zachte achterkant van het vacht.

Step 8: Profit

Hij is nu klaar :)

Step 9: 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 :)