ITTT Jaw Masker

by ambervdh in Circuits > Art

179 Views, 0 Favorites, 0 Comments

ITTT Jaw Masker

Adruino LED mask filmpje

In deze Instructable zal ik het proces beschrijven van het maken van mijn masker voor ITTT.

Dit is het ITTT project van Amber van den Hoofdakker uit GAR1B

Supplies

Elektronica
- Adruino UNO
- Jumper kabels
- 1 Meter 60 LED neopixel strip
- Aluminiumfolie
- Resistor

Behuizing/Masker
- 10 mm EVA foam
- 2 mm EVA foam
- Foam klei
- Witte spray primer
- Zwarte acrylverf
- Mondmasker
- 2 mm plastazote foam

Het Ontwerp

Tekening concept.png

Voor dit project wilde ik graag een masker ontwerpen wat op zou lichten wanneer de mond open gaat. Dit project zou mij een leuke ontwerpuitdaging geven waarin ik prop design en interactie zou kunnen combineren.

Ik heb voor mijn project een masker ontwerp uitgetekend wat uitdagend zou zijn voor mij om te bouwen en waarin ik de elektronica goed kon verwerken. Het ontwerp is te zien in de bijgevoegde afbeelding.

De Behuizing Bouwen

20210523_140712.jpg
20210523_133252.jpg
20210525_183216.jpg
20210525_183212.jpg
20210526_174021.jpg

Voor het maken van de behuizing van mijn project ben ik begonnen met een basis voor de onderkaak van 10 mm EVA foam. Ik heb besloten van EVA foam gebruik te maken voor mijn project omdat dit relatief zacht en licht van gewicht is. Ik heb tanden van foam klei gemaakt en deze aan de onderkaak bevestigd. Vervolgens heb ik van 2 lagen 2mm foam gebruik gemaak om de bovenkaak te maken en deze meer vorm gegeven met foam klei. Toen ik tevreden was met mijn boven- en onderkaak heb ik deze geprimed met witte spray primer voor een glad resultaat. Daarna hebben de boven- en onderkaak aan de linker en rechterzijde een pin gekregen die ervoor zorgt dat de mond open en dicht kan draaien. Als laatste heb ik het masker een oude look gegeven met dunne zwarte acrylverf in de hoeken van het masker.

Iteraties Van De Adruino

20210525_153249.jpg
20210415_214439.jpg
Folie code test

Ik wist dat ik voor mijn Adruino project gebruik wilde maken van een neopixel LED-strip, en ik wist ook dat ik gebruik wilde maken van een aluminium button om te meten of de mond open of dicht was omdat dit mij een interessante techniek leek.
Ik ben als eerste begonnen met het testen van mijn LED-strip met wat test code. Toen ik wist dat dit werkte, ben ik begonnen aan het button-gedeelte van mijn project.

Het meten of de mond open of dicht is werkt als volgt:
Een jumper wire is verbonden aan de 3.3V pin van de Adruino, en de andere kant is verbonden aan een stuk aluminiumfolie.

In een van de GND pins is een jumper kabel verbonden met een transistor ertussen, die verbonden is aan het andere stuk aluminiumfolie

Er zit een jumper wire in pin 2, die op het andere stuk aluminiumfolie afleest of het alluminiumfolie van de 3.3V pin het andere folie aanraakt of niet.

Wanneer de stukken folie verbonden zijn telt de Adruino een value van 1, en wanneer deze niet verbonden zijn telt de Adruino een value van 0.

Vervolgens heb ik de code voor mijn animatie geschreven, die ook in stap 5 terug te lezen is. In de code zijn ook twee if-statements te vinden die bepalen of de LED animatie aan of uit moet. Wanneer val == 1 speelt er geen animatie, en wanneer val == 0 speelt de animatie wel af.

LED Strip

20210528_230737.jpg

Toen alle code werkte heb ik de LEDstrip opverdeeld in 6 delen en deze op een mondmasker bevestigd. Daarna heb ik de stukken LEDstrip weer opnieuw aan elkaar gesoldeerd zodat deze weer zou werken. Dit masker is toen vervolgens aan de binnenkant van de behuizing bevestigd om het uiteindelijke masker te vormen.

Elektronisch Schema

schematische weergave.png

De Code + Uitleg Comments

//Amber van den Hoofdakker, GAR 1B
//LED animatie met hulp van Ravi

//met gebruik van de FastLED library
#include <FastLED.h>

// LED variables
#define LED_PIN     6  // pin gebruikt voor led strip
#define NUM_LEDS    60 // aantal leds op strip
CRGB leds[NUM_LEDS];
int crawlAni = 0;

//button
int inPin = 2;    // pushbutton connected to digital pin 7
int val = 0;      // variable to store the read value

void setup() {
  pinMode(inPin, INPUT);
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}

void loop() {

  //De value van pin 2 word gelezen, wat bepaald of de mond open of dicht is.
  val = digitalRead(inPin);   // read the input pin
  //De value van pin 2 word in de console geprint voor controle.
  Serial.println(val);


  //Zorgt dat de animatie opnieuw begint wanneer het het einde heeft bereikt
  crawlAni ++;
  if (crawlAni > 59) {
    crawlAni = 0;
    leds[59] = 0;
  }


  //Als de mond open is (val==0) speelt de animatie af
  if (val == 0) {
    Animatie();
  }


  //Als de mond dicht is (val==1) gaat de animatie uit
  if (val == 1) {
    Uitgaan();
  }
}


//De animatie voor mijn LED strip
void Animatie()
{
  leds[crawlAni] = CHSV(20, 255, 255);

  if (crawlAni - 2 >= 0)
    leds[crawlAni - 2] = 0;

  if (58 - (crawlAni) >= 0)
    leds[58 - (crawlAni)] = CHSV(40, 255, 255);

  if (58 - (crawlAni - 2) <= 59)
    leds[58 - (crawlAni - 2)] = 0;
  FastLED.show();
  delay(0);
}


//De led animatie gaat uit omdat de brightness naar 0 verandert.
void Uitgaan()
{
  leds[crawlAni] = CHSV(0, 0, 0);
  FastLED.show();
  delay(0);
}

Reflectie

Met het maken van dit project heb ik veel nieuwe ervaringen opgedaan. Voorheen had ik nog nooit met een Adruino gewerkt. Ik vond het daarom ook vooral heel erg eng om te beginnen omdat ik niet zo goed begreep wat ik precies moest doen, wat het project erg overwelmend liet voelen. Ik heb tijdens dit project geleerd om mijn doel in kleinere stukken op te delen, zodat de gehele opdracht beter en makkelijker te verwerken is. Ook heb ik geleerd om naar anderen toe te stappen voor hulp wanneer ik er zelf niet helemaal uit kom. Dit is iets waar ik soms nog wel moeite mee heb maar dit project heeft er echt voor gezorgd dat ik uit mijn comfortzone ben gestapt en van anderen heb geleerd.