Aikapommi

Aikapommi

Aikapommi on klassikko pakopeli -gadget. Usein sitä käytetään pakopelin pääratkaisuna (pura pommi, selviä ennen kuin pommi räjähtää). 


Herättää tietysti kysymyksiä, onko pommi sopiva gadget koulumaailmaan?
Tässä kohden täytyy muistaa, että tässä kyseessä on kuitenkin vain peli. Käydäänhän historiassakin yläkoulussa läpi erittäin paljon sotahistoriaa. Toisaalta pelillisesti ajateltuna aikapommi on monille tuttu pelimaailmasta (esimerkiksi CS) tai airsoftaamisesta. Pommi luo piinaavaa tunnelmaa ja sillä on immersiovoimaa. Toki, en suosittele tätä käytettäväksi alakoululaisten kanssa. K-12 lienee aika sopiva luokitus.

Tässä on esitelty simppeli versio pommista. Siinä on vain ajastin ja tikittävä ääni. Ajastimen ajan ja nopeuden voi säätää ohjelmasta. Tämän tarkoitus on siis luoda tunnelmaa ja olla pelin aikalaskuri (selvitä mysteeri, ennenkuin pommi ”räjähtää”).

Tekotarpeet:
- Arduino + USB.johto (+tietokone)
- Breadboar (mitä pienempi, sen parempi)
- 7-segment 4-digit näyttö
- Piezo -kaiutin
- Kytkentäjohtoja.

Askartelu:
- mitä tahansa ylimääräisiä johtoja, rautalankaa tms. joiden avulla askarrellaan pommista vaarallisen näköinen.
- talouspaperin pahvirulla, putkea tai muuta soveltuvaa ”dynamiittia”
- A4 paperia
- punaista maalia (halutessasi myös mustaa maalia/tussi kirjoitukseen ”TNT”)
- mustaa sähköteippiä
- kiinnitysnarua/rautalankaa tms. Jolla kiinnitetään Arduino ja breadboar pommiin.
- Jos haluat Arduinon toimivan ilman USB-virtaa, käytä esimerkiksi 9V-paristoa ja Arduinon paristojohtoa (näitä myydää erikseen, halpa).

Askartelu.
Tästä videosta saat hyvin ideasta kiinni. Sovella askartelua oman maun mukaan!


Kytkentä ja ohjelmointi:
1. Laita 7-segment näyttö kiinni breadboardin keskelle. Kytke johdot alla olevan kytkentäkaavion mukaisesti kiinni Arduinoon.

2. Aseta Piezo-kaitin haluamaasi paikkaan. Kytke sen toinen jalka Arduinon ainoaan vapaaseen digitaalipinniin (PIN 13) ja toiseen jalkaan GND. Jos et halua sitä breadboardille, käytä alligaattorijohtoja. Ne antavat pommille muutenkin kivan säväyksen!

3. Ohjelmoi/kopioi Sketchiin alla ohjelma ja lataa se Arduinoon.

IDE KOODI

//TÄMÄ ON TOIMIVA VERSIO!
//Below the list: 7 segement pin number - 7 segement light - arduino pin number

//pin 11 - A = 12
//pin 7 - B = 10
//pin 4 - C = 8
//pin 2 - D = 7
//pin 1 - E = 6
//pin 10 - F = 11
//pin 5 - G = 9

//pin 3 is decimal, tämä ei käytössä!

/*
12 11 10 9 8 7
| | | | | |
A
---
F | | B
| G |
---
E | | C
| |
--- . dec
D
| | | | | |
1 2 3 4 5 6
*/

//pin 12 - first digit = 1
//pin 9 - second digit = 2
//pin 8 - third digit = 3
//pin 6 fourth digit = 4

const int a = 12;
const int b = 10;
const int c = 8;
const int d = 7;
const int e = 6;
const int f = 11;
const int g = 9;
int p = 0;

int startStopReset = 13;
int buttonValue;

const int d1 =1;
const int d2 =2;
const int d3 =3;
const int d4 =4;

long n = 9999999; //start time -> CAN CHANGE TO WHATEVER TIME YOU WANT
int x = 100;
int del = 400; //delay value

void setup()
{

pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
pinMode(startStopReset, INPUT);
digitalWrite(startStopReset, HIGH);
pinMode(A1, INPUT);
}

void loop()
{

digitalWrite (p, HIGH);

clearLEDs();
pickDigit(1);
pickNumber((n/x/1000)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(2);
pickNumber((n/x/100)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(3);
dispDec(3);
pickNumber((n/x/10)%10);
delayMicroseconds(del);

clearLEDs();
pickDigit(4);
pickNumber(n/x%10);
delayMicroseconds(del);

n--; //'n++' for stopwatch

if (digitalRead(0) == HIGH)
{
n = 100000; //re-start time -> CHANGE TO WHATEVER TIME YOU ORIGONALLY SET (start time)
}
}

void pickDigit(int x) //changes digit
{
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);

switch(x)
{
case 1:
digitalWrite(d1, LOW);
break;
case 2:
digitalWrite(d2, LOW);
break;
case 3:
digitalWrite(d3, LOW);
digitalWrite(p, HIGH); //new
break;
default:
digitalWrite(d4, LOW);
break;
}
}

void pickNumber(int x) //changes value of number
{
switch(x)
{
default:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9:
nine();
break;
}
}

void dispDec(int x)
{
digitalWrite(p, LOW);
}

void clearLEDs()
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(p, LOW);
}

void zero()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
tone(13,500,1); // PIEZO SOUND (PIN, TAAJUUS, KESTO) <— muuta kahta jälkimmäistä vapaasti
}

void one()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void two()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}

void three()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}

void four()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void five()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void six()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void seven()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}

void eight()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void nine()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}

void button1()
{buttonValue = analogRead(A1);

if (buttonValue>=1010 && buttonValue<=1015) return;}

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä