Introduction: Bewegende Oogbal Ooglap

video: https://youtube.com/shorts/YQdOBcKWMME?feature=share

Ik heb een bewegende oogbal in een ooglapje gemaakt, geïnspireerd van “Mad-Eye” Moody uit Harry Potter. De uitdaging hiervan was om alles zo compact mogelijk te maken, wat met het solderen goed gelukt is. Maar de oogbal staat redelijk ver naar voren door het skelet wat eromheen zit. De oogbal beweegt heen en weer vanuit 1 servo en wordt aangestuurd door een switch knop aan de zijkant. 

Wat heb ik geleerd?

Vanaf het begin dachten veel mensen dat ik iets te moeilijks had gekozen, wat ik zelf uiteindelijk ook begon te denken tijdens het project, ik had veel obstakels. Toch heb ik voor bijna alles een oplossing kunnen vinden en dat heb ik op mijn eigen manier gedaan. De code is niet al te ingewikkeld of veel, ik heb al veel moeite met programmeren dus toch ben ik tevreden met wat ik er uit heb kunnen halen. Ik heb veel geleerd over ruimtelijk denken, daar was ik voorheen ontzettend slecht in. Denken over hoe ik de oogbal ging laten bewegen, wat de oogbal op z’n plek houd etc. zijn allemaal dingen waar ik moeite mee had. Ik heb geleerd hoe ik een multi meter gebruik, om te kijken of de dingen die ik had gesoldeert ook echt werken. (wat het zeker niet altijd deed)


Supplies


  • Arduino Nano              
  • 9V duracell batterij      
  • Toggle switch             
  • 10k resistor               
  • Button                    
  • Nano servo                
  • Wire, solder               
  • Aluminium sheet  
  • Thermoplastic
  • needle and thread
  • Glass
  • Fabric scraps
  • Metal scraps
  • Iron wire  
  • hot glue, superglue
  • hair ties

Step 1: De Oogbal

Ik was begonnen met het maken van een oogbal, ik had er 3 gemaakt uit thermoplastic, glas, rood draad en vernis. De eerste 2 die ik had gemaakt waren half en wat platter. Ik merkte dat deze veel vast bleven haken bij het roteren en besloot om ook een hele te maken, ook al neemt het meer ruimte in, het bewoog een stuk beter.

Ik had 2 rubberen ringen gevonden in een schuur, deze paste er perfect omheen, met nog redelijke bewegingsruimte. 

De randjes van het rode draad en het vernis wilde soms nog wel blijven haken aan de rubberen ringen. Dus heb ik een stukje van een heel fijn stofje ertussen gelijmd waardoor het een stuk soepeler draait.



Step 2: Oogbal Skelet

Vervolgens heb ik een skelet om de oogbal heen gebouwd van ijzerdraad, zodat het punt waarmee de oogbal wordt bestuurd niet in je eigen oog steekt. Later wikkel ik het ijzerdraad in een fijne stof, zodat het ijzerdraad niet in je gezicht prikt en voor irritatie zou kunnen zorgen.

Step 3: De Servo

Ik heb een hele kleine servo gebruikt, om het ontwerp zo compact mogelijk te kunnen houden. Ik heb de servo aan de onderkant vastgemaakt en verbonden met het oog met ijzerdraad.

Ik heb de code aan het begin heel simpel geschreven dat de oogbal 1 richting in keek wanneer er op de knop gedrukt werd. Zo kon ik nog makkelijk de positie van de servo aanpassen

Later heb ik de code zo geschreven dat wanneer je op een knop drukt er een cyclus afspeelt waarin de oogbal verschillende richtingen in kijkt. De servo staat links op positie 1, rechts 120 en midden op 70. Ik heb waardes tussen deze posities toegevoegd om meer natuurlijke (en manische) beweging te krijgen. Dit moest vaak aangepast worden omdat de servo nog niet helemaal goed vast zat en veel bewoog, waardoor de posities niet meer klopten.

Ik had geprobeerd de arduino op 2 batterijen van 1,7V te zetten, het was wel gelukt met het solderen maar het was niet genoeg voor de servo. De servo bewoog wel maar het was te zwak om de oogbal mee te trekken.




Step 4: Solderen

Ik was eerst van plan een kleine powerbank te gebruiken zodat je het kon opladen, dit was echter veel te zwaar en ook te groot. Dus heb ik een 9V oplaadbare batterij gebruikt. Ook heb ik nog een toggle switch toegevoegd zodat de servo niet altijd aan staat en oververhit. Ik heb alles op een klein stukje karton vast gelijmd zodat het minder beweegt.

Ik had mijn code geschreven en getest op een andere arduino. Op de arduino nano die ik uiteindelijk heb gebruikt stond een oudere versie van code op. Helaas kwam ik hier pas achter na het solderen, vervolgens lukte het niet om de nieuwe code er nog op te zetten. Hierdoor is de knop overbodig, nu doet de oogbal een constante cyclus wanneer de stroom aan wordt gezet.

Een ander probleem waar ik tegenaan liep tijdens het solderen was dat ik per ongeluk een servo draadje kapot trok, toen ik deze opnieuw probeerde te solderen werkte de servo niet meer. Na een test bleek dat de servo zelf kapot was gegaan door wat ik denk dat kortsluiting was. Gelukkig had ik meerdere servo’s gekocht en had deze vervangen met een werkende.



Step 5: De Ooglap

Richting het einde zit het verpakt in stukjes stof. En was ik begonnen met de versieringen erop zetten. Hiervoor had ik veel troep gezocht in kringloopwinkels en in m’n vader’s schuur. Ik heb met veel haarelastiekjes de achterkant aan elkaar geknoopt.



Step 6: Schema

Step 7: Code Juiste Versie

#include <Servo.h>


//define servo

Servo leftRightServo;

int pos = 70;


//servo positions

#define left 120

#define middle 70

#define middleRight 30

#define middleLeft 90


#define waitTime 750


void setup() {

  leftRightServo.attach(9);

  pinMode(2, INPUT);

}


void loop() {

  {

    if (digitalRead(2) == LOW) {


      leftRightServo.write(middle);

      delay (1200);

      leftRightServo.write(left);

      delay (waitTime);

#define right 1

      leftRightServo.write(middle);

      delay (waitTime);

      delay (1000);

      leftRightServo.write(right);

      delay (1000);

      leftRightServo.write(middle);

      delay (waitTime);

      leftRightServo.write(middleLeft);

      delay (1000);

      leftRightServo.write(right);

      delay (1000);


    }

    else


      leftRightServo.write(70);

  }

}

Step 8: Code Zonder Cyclus Knop

#include <Servo.h>


//define servo

Servo leftRightServo;


//servo positions

#define left 120

#define right 1

#define middle 70

#define middleRight 30

#define middleLeft 90


#define waitTime 750


void setup() {

  leftRightServo.attach(9);

  pinMode(2, INPUT);

}


void loop() {


  leftRightServo.write(middle);

  delay (1200);

  leftRightServo.write(left);

  delay (waitTime);

  leftRightServo.write(middle);

  delay (waitTime);

  delay (1000);

  leftRightServo.write(right);

  delay (1000);

  leftRightServo.write(middle);

  delay (waitTime);

  leftRightServo.write(middleLeft);

  delay (1000);

  leftRightServo.write(right);

  delay (1000);


}