Introduction: Bibliothequino

Project:

Bibliothequino: een modelbibliotheek

Step 1: Benodigheden:

Arduino Uno

Arduino software

Breadboard (een extra board is ideaal)

Hout

Verf

Lijm of spijkers

Jumper wires (zowel lange als korte)

LED (geel lijkt het best te werken, koop er zo veel mogelijk)

Rood-rood-bruine (gouden) weerstanden

Drukknoppen

Per lampje zijn één drukknop, twee weerstanden en minstens vier draadjes nodig; sla ruim in.

Step 2: Code

Zie bijlage. Achter de code staan aantekeningen en uitleg. Wanneer je meer lampjes wil gebruiken, voeg je de roodgekleurde tekst nogmaals toe – indien aangegeven tussen de groene accolades. Hierbij verander je de namen en pins naar eigen keuze en logica. In de code staat dat wanneer je op een specifiek knopje drukt, het bijbehorende lampje gaat branden. Dit test je door, nadat je Arduino correct is aangesloten, op een knop te drukken.

int
DrukknopPin = 2; // de digitale poort waarop de drukknop is aangesloten.

int LedPin = 5; // de digitale poort waarop de LED is aangesloten.

int Ledstatus = HIGH; // de huidige (start) status van de LedPin.

int uitlezing; // de huidige uitlezing van de LedPin.

int vorigestatus = LOW; // de vorige (oude) status van de LedPin.

long tijd = 0; // de laatste tijd wanneer de LedPin is geschakeld.

long terugvaltijd = 200; // de terugvaltijd, hoger instellen als de LED knippert.

int DrukknopPin2 = 8; // de digitale poort waarop de drukknop is aangesloten.

int LedPin2 = 11; // de digitale poort waarop de LED is aangesloten.

int Ledstatus2 = HIGH; // de huidige (start) status van de LedPin.

int uitlezing2; // de huidige uitlezing van de LedPin.

int vorigestatus2 = LOW; // de vorige (oude) status van de LedPin.

long tijd2 = 0; // de laatste tijd wanneer de LedPin is geschakeld.

long terugvaltijd2 = 200; // de terugvaltijd, hoger instellen als de LED knippert.

int DrukknopPin3 = 3; // de digitale poort waarop de drukknop is aangesloten.

int LedPin3 = 12; // de digitale poort waarop de LED is aangesloten.

int Ledstatus3 = HIGH; // de huidige (start) status van de LedPin.

int uitlezing3; // de huidige uitlezing van de LedPin.

int vorigestatus3 = LOW; // de vorige (oude) status van de LedPin.

long tijd3 = 0; // de laatste tijd wanneer de LedPin is geschakeld.

long terugvaltijd3 = 200;

int DrukknopPin4 = 4; // de digitale poort waarop de drukknop is aangesloten.

int LedPin4 = 10; // de digitale poort waarop de LED is aangesloten.

int Ledstatus4 = HIGH; // de huidige (start) status van de LedPin.

int uitlezing4; // de huidige uitlezing van de LedPin.

int vorigestatus4 = LOW; // de vorige (oude) status van de LedPin.

long tijd4 = 0; // de laatste tijd wanneer de LedPin is geschakeld.

long terugvaltijd4 = 200;

void setup()

{

pinMode(DrukknopPin, INPUT);

pinMode(LedPin, OUTPUT);

pinMode(DrukknopPin2, INPUT);

pinMode(LedPin2, OUTPUT);

pinMode(DrukknopPin3, INPUT);

pinMode(LedPin3, OUTPUT);

pinMode(DrukknopPin4, INPUT);

pinMode(LedPin4, OUTPUT);

}

void loop()

{

uitlezing = digitalRead(DrukknopPin);

// als de ingang van de drukknop van LAAG naar HOOG is gegaan en we hebben

// lang genoeg gewacht om de ruis te onderdrukken, schakel de LedPin en onthoud

// de tijd.

if (uitlezing == HIGH && vorigestatus == LOW && millis() - tijd > terugvaltijd) {

if (Ledstatus == HIGH) {

Ledstatus = LOW; // Ledstatus = HOOG, de LED moet uit.

} else {

Ledstatus = HIGH; // Ledstatus = LAAG, de LED moet aan.

}

tijd = millis();

}

digitalWrite(LedPin, Ledstatus); // zet LED aan of uit.

vorigestatus = uitlezing;

uitlezing2 = digitalRead(DrukknopPin2);

// als de ingang van de drukknop van LAAG naar HOOG is gegaan en we hebben

// lang genoeg gewacht om de ruis te onderdrukken, schakel de LedPin en onthoud

// de tijd.

if (uitlezing2 == HIGH && vorigestatus2 == LOW && millis() - tijd2 > terugvaltijd2) {

if (Ledstatus2 == HIGH) {

Ledstatus2 = LOW; // Ledstatus = HOOG, de LED moet uit.

} else {

Ledstatus2 = HIGH; // Ledstatus = LAAG, de LED moet aan.

}

tijd2 = millis();

}

digitalWrite(LedPin2, Ledstatus2); // zet LED aan of uit.

vorigestatus2 = uitlezing2;

uitlezing3 = digitalRead(DrukknopPin3);

// als de ingang van de drukknop van LAAG naar HOOG is gegaan en we hebben

// lang genoeg gewacht om de ruis te onderdrukken, schakel de LedPin en onthoud

// de tijd.

if (uitlezing3 == HIGH && vorigestatus3 == LOW && millis() - tijd3 > terugvaltijd3) {

if (Ledstatus3 == HIGH) {

Ledstatus3 = LOW; // Ledstatus = HOOG, de LED moet uit.

} else {

Ledstatus3 = HIGH; // Ledstatus = LAAG, de LED moet aan.

}

tijd3 = millis();

}

digitalWrite(LedPin3, Ledstatus3); // zet LED aan of uit.

vorigestatus3 = uitlezing3;

uitlezing4 = digitalRead(DrukknopPin4);

// als de ingang van de drukknop van LAAG naar HOOG is gegaan en we hebben

// lang genoeg gewacht om de ruis te onderdrukken, schakel de LedPin en onthoud

// de tijd.

if (uitlezing4 == HIGH && vorigestatus4 == LOW && millis() - tijd4 > terugvaltijd4) {

if (Ledstatus4 == HIGH) {

Ledstatus4 = LOW; // Ledstatus = HOOG, de LED moet uit.

} else {

Ledstatus4 = HIGH; // Ledstatus = LAAG, de LED moet aan.

}

tijd4 = millis();

}

digitalWrite(LedPin4, Ledstatus4); // zet LED aan of uit.

vorigestatus4 = uitlezing4;

}

Step 3: ​Hardware:

Het abstracte lijnenspel ziet er in modelvorm als volgt uit. Hier is te zien dat geldt dat per lampje één drukknop en twee weerstanden nodig zijn.

Uit de volgende foto blijkt dat er in de praktijk echter veel
meer dan vier draadjes nodig zijn. Schrik niet als je project er zo uitziet; dit hoort.

Een belangrijke tip waarvan iedereen er eigenlijk altijd uitgaat dat je het al weet betreft het breadboard. Alle gaatjes in de pluszijde zijn stroommatig met elkaar verbonden. Hetzelfde geldt voor de minzijde. Vervolgens verbinden, loodrecht op de plus- en minzijde, alle rijen van vijf letters die betreffende rij van vijf letters. Een breadboard is dus eigenlijk als onderstaand verbonden en opgebouwd.

Step 4: ​Behuizing:

Zaag een bodem, een voetstuk en een kast en verf ze naar smaak. Spijker of lijm de geverfde onderdelen naar smaak. Boor aan de onderkant en vervolgens in het zichtveld twee gaatjes per lampje. Hier passen de lampjes en hun bijbehorende draadjes doorheen.

Laat de zaag het werk doen en probeer nooit in je vingers te timmeren.