Introduction: Automatische Dicetower

Voor een project op school moest ik iets maken met een Arduino. ik heb ervoor gekozen om een automatische dicetower te maken die de dobbelstenen voor jou rolt.

Benodigdheden:

- Arduino Uno

- 6 servos

- 6 blauwe LEDs

- 5 rode LEDs

- 1 potentiometer

- 1 drukknop

- 1 schakelaar

- 6 weerstanden van 220 Ohm

- 6 weerstanden van 100 Ohm

- Koperdraad (rood en zwart)

- Hout

- (Hout)lijm

- Verf om je project mee te decoreren

Step 1: De Behuizing

Je kan de behuizing zo groot en ingewikkeld maken als je zelf wilt, ik heb gekozen voor een simpele toren.

Zaag je hout uit in verschillende planken:

- 25 x 35 cm (de onderkant, 1x)

- 25 x 40 cm (de zijkanten, 4x)

- 25 x 25 cm (de bovenkant, 1x)

- 25 x 30 cm (de onderste schuine plaat in de toren, 1x)

- 25 x 15 cm (de bovenste schuine plaat in de toren, 1x)

Zaag uit een van de zijkanten een gat wat de 'deur' van je toren word, hier komen de dobbelstenen uitrollen. Plak de vier zijkanten tegen elkaar aan met houtlijm en zet deze stevig tegen elkaar aan met lijmklemmen of tape. Plak vervolgens deze op de onderkant met de extra ruimte aan de kant van de opening. Als de basis goed droog is kan je de schuine platen in de binnenkant plakken. De onderste plaat komt tegen de opening en de achterkant te staan, en de bovenste plaat tegen de voorkant aan. Als je nu de dobbelsteen laat vallen vanaf de bovenkant zal die naar beneden en uit de toren rollen.

Helemaal bovenin de toren komen nu vakjes waar de dobbelstenen in komen te liggen. Verdeel de ruimte in negen vakjes. Hiervan kan je er drie aan de zijkant samenvoegen, je hebt er maar zes nodig voor de dobbelstenen, en nu heb je ruimte om je Arduino in te leggen. Laat in de bodem van alle vakjes een gaatje over waar de dobbelsteen doorheen kan vallen.

Verzin nu ook een leuke plek voor het knopje om de dobbelsteen te laten rollen. Je kan een geheim knopje maken of een grote hendel die je moet overhalen.

Step 2: Het Circuit

Dit is hoe het circuit eruit ziet. Elke dobbelsteen heeft zijn eigen servo en blauwe LED. De potentiometer is om de verschillende dobbelstenen mee te selecteren. Het drukknopje is om de servo te laten draaien zodat de dobbelsteen zal vallen. De schakelaar is om je toren aan en uit te zetten. En de rode LEDs zijn om de binnenkant van de toren een kleurtje te geven.

#include <Servo.h>

//servos benoemen voor welke dobbeslteen ze zijn
Servo d4;
Servo d6;
Servo d8;
Servo d10;
Servo d12;
Servo d20;

void setup() {
  d4.attach(A1);
  d4.write(90);
  d6.attach(A2);
  d6.write(90);
  d8.attach(A3);
  d8.write(90);
  d10.attach(A4);
  d10.write(90);
  d12.attach(10);
  d12.write(90);
  d20.attach(11);
  d20.write(90);
  pinMode(A0, INPUT);
  pinMode(13, INPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(12, INPUT);
}


void loop() {    
  digitalWrite(8, HIGH);
    
  int value = analogRead(A0);
  int dice = map(value, 0, 1023, 6, 1); //draaiknop om de dobbelsteen te selecteren
  int buttonState = digitalRead(13); //knop om te rollen
  bool roll = false;
  
  int switchVal = digitalRead(12); //aan/uitknop
  if (switchVal == HIGH){
    //het correcte lichtje laten branden
    if (dice == 1){
      digitalWrite(2, HIGH);
    }
    else{
      digitalWrite(2, LOW);
    }
    if (dice == 2){
      digitalWrite(3, HIGH);
    }
    else{
      digitalWrite(3, LOW);
    }
    if (dice == 3){
      digitalWrite(4, HIGH);
    }
    else{
      digitalWrite(4, LOW);
    }
    if (dice == 4){
      digitalWrite(5, HIGH);
    }
    else{
      digitalWrite(5, LOW);
    }
    if (dice == 5){
      digitalWrite(6, HIGH);
    }
    else{
      digitalWrite(6, LOW);
    }
    if (dice == 6){
      digitalWrite(7, HIGH);
    }
    else{
      digitalWrite(7, LOW);
    }
    
    //de correcte servo aansturen
    if (buttonState == 1){
      roll = true;
    }
    if (roll == true){
      if (dice == 1){
        d4.write(180);
        delay(1000);
        d4.write(90);
        roll = false;
      }
      else if (dice == 2){
        d6.write(180);
        delay(1000);
        d6.write(90);
        roll = false;
      }
      else if (dice == 3){
        d8.write(0);
        delay(1000);
        d8.write(90);
        roll = false;
      }
      else if (dice == 4){
        d10.write(0);
        delay(1000);
        d10.write(90);
        roll = false;
      }
      else if (dice == 5){
        d12.write(180);
        delay(1000);
        d12.write(90);
        roll = false;
      }
      else if (dice == 6){
        d20.write(0);
        delay(1000);
        d20.write(90);
        roll = false;
      }
    }
  }
  else {
    //alle lichtjes uit, behalve de binnenste laten knipperen
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
    delay (1000);
    digitalWrite(8, LOW);
    delay (3000);
  }   
}

Dit is de code om je toren te laten werken. Belangrijk is dat elke servo en blauwe LED op de goede pin zit, anders zal de verkeerde dobbelsteen er straks uitkomen.

Step 3: De Servos

Om met de servo telkens dobbelstenen door te laten moet er een opzetstukje komen. Deze vorm zorgt ervoor dat er telkens maar één dobbelsteen valt. Maak dus 6 van deze vormen en lijm ze op de opzetstukjes van de servos. De servos kan je nu vastmaken in de vakjes bovenin de toren met de blokjes boven de openingen. Let op dat de servo nog wel genoeg ruimte heeft om te draaien, maak desnoods de gaatjes nog wat groter.

Step 4: De Elektronica in De Toren Zetten

Het is nu tijd om alles te gaan solderen! Als het goed is heb je alles al werkend in het breadboard gehad, dit kan je nu precies zo solderen. Let wel op dat je overal genoeg draad overhoud, anders word het moeilijk alles goed in de toren te krijgen. Ook is het handig om regelmatig tussendoor even te checken of de verschillende onderdelen het doen, dat scheelt aan het einde weer een hoop werk als er iets niet helemaal goed zit waar je niet meer bij kan. Verder kan je het drukknopje op de goede plek vastzetten en samen met de servos aansluiten. Soldeer voor de draaiknop de LEDs op de goede plek met de potentiometer in het midden. Als deze klaar is kan je die op de toren vastmaken (door middel van een gaatje in de toren kan je de draden naar binnen doen) en dan kan je er een behuizing omheen maken zodat hij mooi word. Met lichtdoorlatend foam kan je een mooi diffuus licht creëren en er bijvoorbeeld de verschillende dobbelstenen in zetten, zodat het duidelijk is welke dobbelsteen gegooid zal worden. Zet nu ook de rode LEDs aan de binnenkant van de toren zodat die van binnen verlicht is. Als laatste hebben we de schakelaar nog, zet deze ook op de juiste plek en dan ben je bijna klaar!

Step 5: The Finishing Touches!

De leukste stap: je automatische dicetower maken zoals jij hem wil! Geef hem een mooi kleurtje, gave details of nog meer lichtjes. Als je helemaal tevreden bent kan je hem aansluiten op een powerbank en hem zo gebruiken bij je volgende Dungeons and Dragons spel!