Nytt liv i havererat flipperspel tack vare Arduino
- Lennart Aspenryd
- Tidigare Lasp
- Inlägg: 12607
- Blev medlem: 1 juli 2011, 19:09:09
- Ort: Helsingborg
Re: Nytt liv i havererat flipperspel tack vare Arduino
Nej, det var bar raljerande.
Lite kopplingsschema , och lite programkod är inte fel.
I can hear the sounds of the flippers! says Lasp
Lite kopplingsschema , och lite programkod är inte fel.
I can hear the sounds of the flippers! says Lasp
Re: Nytt liv i havererat flipperspel tack vare Arduino
Gissar på att han menar under spelplanen. Hur fungerar bumpers, uppskjut, flipprar osv =) Rent elektromekaniskt alltså, kul o se på en sån fin gammal pjäs!
Re: Nytt liv i havererat flipperspel tack vare Arduino
Och jag hängde på och rimmade litet till.
Jag har f n 16 + 8 kb programkod, har i och för sig inget emot att publicera den, men tvivlar på allmänintresset.
Här är ett litet smakprov. Några funktioner, varav den sista, newGame(), som jag just nu jobbar på: Kan inte sätta igång och förklara allt, men fråga gärna om det är något speciellt du undrar över.
Jag har f n 16 + 8 kb programkod, har i och för sig inget emot att publicera den, men tvivlar på allmänintresset.
Här är ett litet smakprov. Några funktioner, varav den sista, newGame(), som jag just nu jobbar på: Kan inte sätta igång och förklara allt, men fråga gärna om det är något speciellt du undrar över.
Kod: Markera allt
int scansw()
{
// Scan Line 0
selectLine(0);
if(digitalRead(Apin) == LOW) return 1; // Drain Pit
if(digitalRead(Bpin) == LOW) return 2; // Top Target
if(digitalRead(Cpin) == LOW) return 3; // 50k Target
if(digitalRead(Dpin) == LOW) return 4; // Top Pit
// Scan Line 3
selectLine(3);
if(digitalRead(Bpin) == LOW) return 32; // 500p Rollovers
if(digitalRead(Cpin) == LOW) return 33; // 30p Contacts
// Scan Line 4
selectLine(4);
if(digitalRead(Bpin) == LOW) return 42; // 5k Rollovers, Bonus
if(digitalRead(Cpin) == LOW) return 43; // Rollovers x2
// Position 44 = 5 Balls Mode Jumper
// Scan Line 5
selectLine(5);
if(DropL == 0 && digitalRead(Cpin) == LOW) return 51; // Left Drop Target
if(DropM == 0 && digitalRead(Bpin) == LOW) return 52; // Center Drop Target
if(DropR == 0 && digitalRead(Apin) == LOW) return 53; // Right Drop Target
// Position 54 = Debug Mode Jumper
// Scan Line 6
selectLine(6);
if(digitalRead(Apin) == LOW) return 61; // Left Bumper
if(digitalRead(Bpin) == LOW) return 62; // Right Bumper
if(digitalRead(Cpin) == LOW) return 63; // Left Slingshot
if(digitalRead(Dpin) == LOW) return 64; // Right Slingshot
// Scan Line 7
selectLine(7);
if(digitalRead(Apin) == LOW) return 71; // Tilt
if(startbuttonEnable && digitalRead(Bpin) == LOW)
return 72; // Start button
if(digitalRead(Cpin) == LOW) return 73; // 30k Rollover
if(digitalRead(Dpin) == LOW) return 74; // Top Slingshot
return 0;
}
void updateBonus()
{
for(int i=0; i<10; i++) digitalWrite(BonusLamp[i], LOW);
if (Bonus > 9) digitalWrite(BonusLamp[9], HIGH);
for(int i=1; i<6; i++)
if (Bonus == i || Bonus == i+10)
digitalWrite(BonusLamp[i-1], HIGH);
for(int i=6; i<10; i++)
if (Bonus == i)
digitalWrite(BonusLamp[i-1], HIGH);
}
void selectLine(int n) // used by scansw()
{
if (n == 0) { digitalWrite(line0pin, LOW); }
else digitalWrite(line0pin, HIGH);
if (n == 3) { digitalWrite(line3pin, LOW); }
else digitalWrite(line3pin, HIGH);
if (n == 4) { digitalWrite(line4pin, LOW); }
else digitalWrite(line4pin, HIGH);
if (n == 5) { digitalWrite(line5pin, LOW); }
else digitalWrite(line5pin, HIGH);
if (n == 6) { digitalWrite(line6pin, LOW); }
else digitalWrite(line6pin, HIGH);
if (n == 7) { digitalWrite(line7pin, LOW); }
else digitalWrite(line7pin, HIGH);
delay(2);
}
void activateCoil(int pin_no)
{
digitalWrite(pin_no, HIGH);
delay(SolenoidTime);
digitalWrite(pin_no, LOW);
}
void updateScore(int p) // 0-3 -> Player 1-4, 4 -> All Players
{
if(p>3)
for(int i=0; i<4; i++)
updateScore(i);
else
{
sprintf(s, "@%d%06ld", p, Score[p]);
if(debugmode) Serial.print(s);
Serial1.print(s);
}
}
void updateBallInPlay()
{
sprintf(s,"@B%d",BallInPlay);
Serial1.print(s);
}
void setTilt(int TiltStatus)
{
Tilt = TiltStatus;
sprintf(s,"@T%d",Tilt);
Serial1.print(s);
}
void updatePlayer()
{
sprintf(s,"@U%d",Player);
Serial1.print(s);
}
void updateCredits()
{
sprintf(s,"@C%02d",nCredits);
Serial1.print(s);
}
void newGame()
{
// reset all scores
for(Player=0; Player<4; Player++) Score[Player] = 0;
Player=0;
BallInPlay = 0; // ie Ball In Play = 1
updateScore(4);
Bonus = 0;
updateBonus();
}
Senast redigerad av SimLego 17 april 2013, 11:41:43, redigerad totalt 1 gång.
Re: Nytt liv i havererat flipperspel tack vare Arduino
PS. Manualen till det system som just detta spel bygger runt finns på: http://www.flippers.be/Recel_System_III.pdf (3,6 Mb PDF) Kan vara mycket intressant att studera, även om det skiljer sig åt på flera sätt jämför med den amerikanska "standarden".
Re: Nytt liv i havererat flipperspel tack vare Arduino
Eftersom det är TS som frågar så är det väl inte OT, det spelet som jag hade var ett mekaniskt Lady luck från 1968.
Någon hade målat kabinettet blåmetallic, samt även klippt kabelstammen till topboxen.
Det var en på forumet som fick det, kommer inte ihåg vem just nu, finns en skänkestråd om det.
Spelplan och plast var ok, men motivet på topboxen hade börjat flaga.
Salle
Någon hade målat kabinettet blåmetallic, samt även klippt kabelstammen till topboxen.
Det var en på forumet som fick det, kommer inte ihåg vem just nu, finns en skänkestråd om det.
Spelplan och plast var ok, men motivet på topboxen hade börjat flaga.
Salle
Re: Nytt liv i havererat flipperspel tack vare Arduino
Så gjorde farsan när han plockade ner den telefonväxel jag hade satt upp hemma hos dem förut... (En A415 Midi)salle skrev:Det är i dessa lägen jag kan ångra att jag gav bort mitt gamla flipperspel där någon innan jag blev ägare klippt kabelstammen till topboxen (när det dessutom finns kontakter när man vill plocka isär spelet)
- Klas-Kenny
- Inlägg: 11831
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Nytt liv i havererat flipperspel tack vare Arduino
SimLego: Använd gärna Code-taggen runt din kod, så blir den snyggare presenterad och man slipper scrolla så mycket i onödan. 

Re: Nytt liv i havererat flipperspel tack vare Arduino
Tack för tipset. Jag såg inte den. Nu är det gjort.Använd gärna Code-taggen runt din kod
Re: Nytt liv i havererat flipperspel tack vare Arduino
Snyggt jobbat, alltid kul att se fler med jättemonsteridiotprojekt som verkligen orkar köra det i mål! (eller snart i mål i alla fall!)
Fler bilder, filmer etc!
Fler bilder, filmer etc!
Re: Nytt liv i havererat flipperspel tack vare Arduino
Hämtade precis ut 160kronors-kameran hos postombudet idag. Ingen Hasselbladare direkt, men ganska imponerande att det öht går att tillverka kameror till det priset, som f ö inkluderar frakt från Kina. Video borde komma ikväll när jag något-så-när lärt mig bemästra underverket.Fler bilder, filmer etc!
Re: Nytt liv i havererat flipperspel tack vare Arduino
Det är ju naturligtvis både coolare och roligare att bygga själv, men för liknande projekt finns dessa produkter som gör livet lite enklare (men kanske dyrare)...
http://www.pinballcontrollers.com/index.php/products
http://www.pinballcontrollers.com/index.php/products
Re: Nytt liv i havererat flipperspel tack vare Arduino
Det hade definitivt sett snyggare ut "under huven" om inte annat. Men det hade blivit hiskligt mycket dyrare! Sedan är jag lite osäker på om dessa hade passat mitt kraftigt ostandardiserade spel.Det är ju naturligtvis både coolare och roligare att bygga själv, men för liknande projekt finns dessa produkter som gör livet lite enklare (men kanske dyrare)...
Re: Nytt liv i havererat flipperspel tack vare Arduino
Nu är jag äntligen klar med ett videoklipp. Det börjar med fyra stillbilder och en snutt stumfilm, men sedan kommer ljudet med buller & bång, så vrid inte upp för mycket volym.
http://www.youtube.com/watch?v=6WgdqQP0obM
http://www.youtube.com/watch?v=6WgdqQP0obM