Peliohjaimen rakentaminen -kurssi Helsinki Hacklabillä
Kurssin tavoite
- perusteet, kuinka Arduino UNO R3:lla tehdään USB-peliohjain tai näppäimistö
- osallistuja määrittelee haluamansa ohjaimen tyypin, akselien määrän ja kurssin vetäjien kanssa päätetään tarvittavat osat
- esimerkki A, yksinkertainen 'turvanappi' joka aiheuttaa joystick- tai näppäinpainallukset
- esimerkki B, täysi HOTAS-systeemi hall-antureilla ja painesensoreilla
- materiaaleina käytämme laserleikattua akryyliä, kahvoihin värjättyä polymorph muovia, alumiiniputkia jne. mitä varastosta löytyy ja mitä osallistujat ovat tuoneet mukanaan
- kurssilla ei tarvioida, keskitymme ohjaimen varsinaiseen rakentamiseen
- materiaalimaksu on noin 30..80 euroa, riippuen mitä antureita Arduinon lisäksi ohjaimeensa haluaa
- tarkoituksena ei ole vielä tehdä sitä lopullista, vaan enemmänkin prototyyppi, jotta osaa jatkossa tehdä omin päin lisää
- labille voi tiistaisin tulla jatkamaan, jos jää kesken
- la 24.3.2012 Kotiohjaamopäivät Suomen Ilmailumuseolla, tänne voi tulla esittelemään tuotostaan
Aika ja paikka
- lauantaina 10.3.2012 ja sunnuntaina 11.3.2012
- aamupäivä 10-12, lounas 12-13, iltapäivä 13-17, yritä päästä ajoissa paikalle
- Helsinki Hacklab
Ilmoittautuminen
Muuta
- kurssi on kaikille avoin, mutta kurssilla tarvitaan materiaaleja:
- Arduino UNO R3, hinta 20-30 e
- nappeja, kytkimiä, ledejä, antureita, hinta 10-50 e
- polymorph-muovia suositellaan kahvoiksi, hinta 5-10 e
- tilatut materiaalit maksetaan paikan päällä, varaa käteistä mukaan
--
Helsinki Hacklab: http://helsinki.hacklab.fi/
Suovulan hankinta TODO
Biltema: turvavipukytkimiä ja katsoa mitä muuta voisi löytyäPartco:- Hobby Point: värejä jauheena
int sensorPinX = A0; // potikka X
int sensorPinY = A1; // potikka Y
int ledPinX = 10; // ledi X
int ledPinY = 11; // ledi Y
int sensorValueX = 0; // 0-1023
int sensorValueY = 0;
void setup() {
pinMode(ledPinX, OUTPUT); // ledi X
pinMode(ledPinY, OUTPUT); // ledi y
pinMode(sensorPinX, INPUT); // potikka
pinMode(sensorPinY, INPUT); // potikka
Serial.begin(115200);
}
void loop() {
sensorValueX = analogRead(sensorPinX);
sensorValueY = analogRead(sensorPinY);
analogWrite(ledPinX,sensorValueX/4);
analogWrite(ledPinY,sensorValueY/4);
Serial.print(millis());
Serial.print(" x= ");
Serial.print(sensorValueX);
Serial.print(" y= ");
Serial.print(sensorValueY);
Serial.println();
}
ppppppp
float dx = 0;
float dy = 0;
int w = 640;
int h = 480;
int x = w / 2;
int y = h / 2;
float koko = 0;
void setup() {
size(w,h);
smooth();
}
void draw() {
if (mousePressed) {
dx = 0;
dy = 0;
x = 215;
y = 200;
background(random(56), random(84), random(72));
}
if (keyPressed && (key == CODED)) { // if key is coded
if (keyCode == LEFT) { // jos on vasen
dx -= 0.1;
} else if (keyCode == RIGHT) { // jos on oikea
dx += 0.1;
}
else if (keyCode == UP) { // jos on ylos
dy -= 0.1;
}
else if (keyCode == DOWN) {
dy += 0.1;
}
}
x += dx;
y += dy;
if (x >= w){
x = 0;
}
else if (x <= 0){
x = w;
}
if (y >= h){
y = 0;
}
else if (y <= 0){
y = h;
}
fill(random(200), random(201), random(221));
noStroke();
koko = (3 * koko + random(30)) / 4;
ellipse(x,y,koko,koko);
delay(10);
}