Je ne pilote pas en MOSFET car j'en ai pas envie, je pilote en relais statiques opto tout fait dans boîtier alu.
tu as un lien de ce truc ?
ça va pas être facile de gérer la puissance et pour les batteurs comment vas-tu obtenir du touché ?
Je ne pilote pas en MOSFET car j'en ai pas envie, je pilote en relais statiques opto tout fait dans boîtier alu.
tu as un lien de ce truc ?
ça va pas être facile de gérer la puissance et pour les batteurs comment vas-tu obtenir du touché ?
Voila mon aire d'entraînement à la programmation 😁. Dès qu'un bout de code sera correct, je ferai les tests dessus.
Entre le plateau et un bout de code, il te faut aussi une carte pour piloter les bobines avec des transistors ou MOSFET. Tu as quoi ?
c'est clair que tout est une question de compromis et de choix !
bonne continuation
sympa et très propre
oui, il te faut un hébergeur
laisse, il est tout pourri...
Citationhttp://forum.locoduino.org/index.php?topic=98.msg763#msg763
La modélisation d'un système par machine d'états-transitions est, à ma connaissance, un des moyens les plus efficaces pour analyser un problème et écrire du bon code (dans le sens conforme, efficace, facile à mettre au point et à maintenir). Cela s'applique à la gestion de systèmes physiques en toute sécurité ou à des protocoles de communication, avec la même facilité.
Pour chaque état, un (ou des) évènements permettent une transition vers un autre état (ou d'autres états), en réalisant éventuellement une action déterminée. Il peut parfois y avoir retour vers le même état (à une variable d'état près, éventuellement). A chaque état peuvent être associées un jeu de valeurs des variables d'état (ce qui peu matérialiser en quoi consiste une 'transition', mais pas toujours).
Cette approche permet effectivement de réfléchir à bien poser le problème, à trouver les bons états, les bonnes variables d'état, à tester sur papier la conformité du fonctionnement aux attentes, tout cela avec rapidité (ce n'est finalement que du dessin servant de support à une 'expérience de pensée') mais avec une grande sûreté (l'automate dessiné fait ce que l'on veut, ou non, le constat est immédiat, et en cas de non, c'est que la modélisation est à revoir). Cette approche événementielle est en général vécue comme assez naturelle. Tout cela sans avoir écrit une seule ligne de code !
http://fadiese.hd.free.fr/barbadidoua/in…machines-d-etat
là c'est clair et concis : il faut lire toute la page
CitationLe programme va donc regarder dans quelle étape il se trouve (y positionner les actionneurs, c'est à dire agir sur l'environnement=écriture des sorties) puis voir (en observation l'environnement=lecture des entrées)s'il doit effectuer la transition vers l'étape suivante
pour compléter la partie code pour ricousky :
voici un autre exemple de machine d'état en code Arduino pour un flipper (je ne l'ai pas encore relu)
http://www.ece.rutgers.edu/sites/default/…FinalReport.pdf
686 lignes
//http://www.ece.rutgers.edu/sites/default/files/uploads/PinBallMachine-FinalReport.pdf
//input variables (15)
int ds1= LOW;
int ds2= LOW;
int ds3= LOW;
int ds4= LOW;
int ds5= LOW;
int ds6= LOW;
int ds7= LOW;
int pb1= LOW;
int pb2= LOW;
int pb3= LOW;
int pb4= LOW;
int pb5= LOW;
int ir1= LOW;
int bumr= LOW;
int buml= LOW;
//output variables (14)
int ledpb1= HIGH;
int ledpb2= HIGH;
int ledpb3= HIGH;
int ledpb4a= LOW;
int ledpb4b= LOW;
int ledir1a= LOW;
int ledir1b= LOW;
int ledir1c= LOW;
int ledds4= LOW;
int ledds5= LOW;
int ledds6= LOW;
int ledbumr= LOW;
int ledbuml= LOW;
int sol1= LOW;
int shun1=LOW;
int shun2=LOW;
int shun4=LOW;
int shun8=LOW;
int sten1=LOW;
int sten2=LOW;
int sten4=LOW;
int sten8=LOW;
int sone1=LOW;
int sone2=LOW;
int sone4=LOW;
int sone8=LOW;
int ball1=LOW;
int ball2=LOW;
int ball4=LOW;
int ball8=LOW;
//flags (4)
int fscore=0; //indicates that points have been scored but not recorded
int fball=0; //indicates that a ball has been lost
int fgo=0; //indicates game is over
int fbonus=0;
//scoring
const int v=6; //points for pb5
const int w=10; //points for ir
const int x=4; //points for pbled1,2,3
const int y=15; //points for bonus
const int z=5; //ds1-3
const int u=8; //ds4-6
//delays
const int a=500;
const int b=1000;
int score=0;
int scoreone=0;
int scoreten=0;
int scorehun=0;
int balls=3;
int ircounter=0;
int modl=0;
int modr=0;
//input pins (15)
const int pds1=49;
const int pds2=2;
const int pds3=3;
const int pds4=4;
const int pds5=5;
const int pds6=6;
const int pds7=7;
const int ppb1=8;
const int ppb2=9;
const int ppb3=10;
const int ppb4=11;
const int ppb5=12;
const int pir1=13;
const int pbuml=14;
const int pbumr=15;
//output pins (30)
const int pshun1=16;
const int pshun2=17;
const int pshun4=18;
const int pshun8=19;
const int psten1=20;
const int psten2=21;
const int psten4=22;
const int psten8=23;
const int psone1=24;
const int psone2=25;
const int psone4=26;
const int psone8=27;
const int pball1=28;
const int pball2=29;
const int pball4=30;
const int pball8=31;
const int pledpb1=32;
const int pledpb2=33;
const int pledpb3=34;
const int pledpb4a=35;
const int pledir1a=36;
const int pledir1b=37;
const int pledir1c=38;
const int pledds4=39;
const int pledds5=40;
const int pledds6=41;
const int pledpb4b=42;
const int pledbumr=43;
const int pledbuml=44;
const int psol1=45;
void setup()
{
//Declare input Pins
Serial.begin(9600);
pinMode(pds1 , INPUT);
pinMode(pds2 , INPUT);
pinMode(pds3 , INPUT);
pinMode(pds4 , INPUT);
pinMode(pds5 , INPUT);
pinMode(pds6 , INPUT);
pinMode(pds7 , INPUT);
pinMode(ppb1 , INPUT);
pinMode(ppb2 , INPUT);
pinMode(ppb3 , INPUT);
pinMode(ppb4 , INPUT);
pinMode(ppb5 , INPUT);
pinMode(pir1 , INPUT);
pinMode(pbuml, INPUT);
pinMode(pbumr, INPUT);
//declare output pins
pinMode(pshun1, OUTPUT);
pinMode(pshun2, OUTPUT);
pinMode(pshun4, OUTPUT);
pinMode(pshun8, OUTPUT);
pinMode(psten1, OUTPUT);
pinMode(psten2, OUTPUT);
pinMode(psten4, OUTPUT);
pinMode(psten8, OUTPUT);
pinMode(psone1, OUTPUT);
pinMode(psone2, OUTPUT);
pinMode(psone4, OUTPUT);
pinMode(psone8, OUTPUT);
pinMode(pball1, OUTPUT);
pinMode(pball2, OUTPUT);
pinMode(pball4, OUTPUT);
pinMode(pball8, OUTPUT);
pinMode(pledpb1, OUTPUT);
pinMode(pledpb2, OUTPUT);
pinMode(pledpb3, OUTPUT);
pinMode(pledpb4a, OUTPUT);
pinMode(pledir1a, OUTPUT);
pinMode(pledir1b, OUTPUT);
pinMode(pledir1c, OUTPUT);
pinMode(pledds4, OUTPUT);
pinMode(pledds5, OUTPUT);
pinMode(pledds6, OUTPUT);
pinMode(pledpb4b, OUTPUT);
pinMode(pledbumr, OUTPUT);
pinMode(pledbuml, OUTPUT);
pinMode(psol1, OUTPUT);
digitalWrite(pledpb1, HIGH);
digitalWrite(pledpb2, HIGH);
digitalWrite(pledpb3, HIGH);
digitalWrite(pledpb4a, LOW);
digitalWrite(pledir1a, LOW);
digitalWrite(pledir1b, LOW);
digitalWrite(pledir1c, LOW);
digitalWrite(pledds4, LOW);
digitalWrite(pledds5, LOW);
digitalWrite(pledds6, LOW);
digitalWrite(pledpb4b, LOW);
digitalWrite(pball1, balls & 1);
digitalWrite(pball2, balls & 2);
digitalWrite(pball4, balls & 4);
digitalWrite(pball8, balls & 8);
digitalWrite(pshun1, scorehun & 1);
digitalWrite(pshun2, scorehun & 2);
digitalWrite(pshun4, scorehun & 4);
digitalWrite(pshun8, scorehun & 8);
digitalWrite(psten1, scoreten & 1);
digitalWrite(psten2, scoreten & 2);
digitalWrite(psten4, scoreten & 4);
digitalWrite(psten8, scoreten & 8);
digitalWrite(psone1, scoreone & 1);
digitalWrite(psone2, scoreone & 2);
digitalWrite(psone4, scoreone & 4);
digitalWrite(psone8, scoreone & 8);
}//close setup
void loop() //start main body
{
//while(Serial.available()>0)
//{
//Read inputs
// digitalWrite(psol1, HIGH); //tester line
ds1= digitalRead(pds1);
ds2= digitalRead(pds2);
ds3= digitalRead(pds3);
ds4= digitalRead(pds4);
ds5= digitalRead(pds5);
ds6= digitalRead(pds6);
ds7= digitalRead(pds7);
pb1= digitalRead(ppb1);
pb2= digitalRead(ppb2);
pb3= digitalRead(ppb3);
pb4= digitalRead(ppb4);
pb5= digitalRead(ppb5);
ir1= digitalRead(pir1);
bumr= digitalRead(pbumr);
buml= digitalRead(pbuml);
/*Testing without hardware
int variable = Serial.parseInt();
switch(variable)
{
case 1:
ds1=HIGH;
break;
case 2:
ds2=HIGH;
break;
case 3:
ds3=HIGH;
break;
case 4:
ds4=HIGH;
break;
case 5:
ds5=HIGH;
break;
case 6:
ds6=HIGH;
break;
case 7:
ds7=HIGH;
break;
case 8:
pb1=HIGH;
break;
case 9:
pb2=HIGH;
break;
case 10:
pb3=HIGH;
break;
case 11:
pb4=HIGH;
break;
case 12:
pb5=HIGH;
break;
case 13:
ir1=HIGH;
break;
case 14:
bumr=HIGH;
break;
case 15:
buml=HIGH;
break;
default:
variable=0;
}
*/
//input logic
//3 LED scoring
if(pb1==HIGH)
{
score=score+x;
fscore=1;
digitalWrite(pledpb1, LOW);
ledpb1=LOW;
}
if(pb2==HIGH)
{
score=score+x;
fscore=1;
digitalWrite(pledpb2, LOW);
ledpb2=LOW;
}
if(pb3==HIGH)
{
score=score+x;
fscore=1;
digitalWrite(pledpb3, LOW);
ledpb3=LOW;
}
if(ledpb1==LOW && ledpb2==LOW && ledpb3==LOW)
{
fbonus=1;
digitalWrite(pledpb4a, HIGH);
ledpb4a=HIGH;
//make flashing
}
if(pb4==HIGH)
{
if(fbonus==1)
{
digitalWrite(pledpb4a, LOW);
digitalWrite(pledpb1, HIGH);
digitalWrite(pledpb2, HIGH);
digitalWrite(pledpb3, HIGH);
digitalWrite(pledpb4b, HIGH);
delay(1.5*b);
digitalWrite(pledpb4b, LOW);
ledpb4a=LOW;
ledpb1=HIGH;
ledpb2=HIGH;
ledpb3=HIGH;
ledpb4b=HIGH;
if(balls==9)
{
score=score+2*y;
}
else
{
balls=balls+1;
digitalWrite(pball1, balls & 1);
digitalWrite(pball2, balls & 2);
digitalWrite(pball4, balls & 4);
digitalWrite(pball8, balls & 8);
score=score+y;
}
fscore=1;
fbonus=0;
}
else
{
digitalWrite(pledpb4b, HIGH);
delay(b*1.5);
digitalWrite(pledpb4b, LOW);
ledpb4b=HIGH;
score=score+y;
fscore=1;
}
}
if(ds1==HIGH)
{
score=score+z;
fscore=1;
// digitalWrite(ledbumr, HIGH);
}
if(ds2==HIGH)
{
score=score+z;
fscore=1;
}
if(ds3==HIGH)
{
score=score+z;
fscore=1;
}
if(ds4==HIGH)
{
score=score+u;
fscore=1;
digitalWrite(pledds4, HIGH);
ledds4=HIGH;
delay(b);
digitalWrite(pledds4, LOW);
}
if(ds5==HIGH)
{
score=score+u;
fscore=1;
digitalWrite(pledds5, HIGH);
ledds5=HIGH;
delay(b);
digitalWrite(pledds5, LOW);
}
if(ds6==HIGH)
{
score=score+u;
fscore=1;
digitalWrite(pledds6, HIGH);
ledds6=HIGH;
delay(b);
digitalWrite(pledds6, LOW);
}
if(ir1==HIGH)
{
score=score+w;
fscore=1;
ircounter=ircounter+1;
switch(ircounter)
{
case 1:
digitalWrite(pledir1a, HIGH);
ledir1a=HIGH;
break;
case 2:
digitalWrite(pledir1b, HIGH);
ledir1b=HIGH;
break;
default:
digitalWrite(pledir1c, HIGH);
ledir1c=HIGH;
break;
}
}
if(pb5==HIGH)
{
switch(ircounter)
{
case 0:
score=score+v;
fscore=1;
break;
case 1:
score=score+2*v;
fscore=1;
break;
case 2:
score=score+3*v;
fscore=1;
break;
default:
score=score+5*v;
fscore=1;
break;
}
digitalWrite(pledir1a, LOW);
digitalWrite(pledir1b, LOW);
digitalWrite(pledir1c, LOW);
ledir1a=LOW;
ledir1b=LOW;
ledir1c=LOW;
ircounter=0;
}
if(bumr==HIGH )
{
digitalWrite(pledbumr, HIGH);
modr=0;
// delay(b);
// digitalWrite(pledbumr, LOW);
// score=score+x;
// score=1;
}
if((modr%2500)==2499)
{
digitalWrite(pledbumr, LOW);
}
else
{
modr=modr+1;
}
if(buml==HIGH)
{
digitalWrite(pledbuml, HIGH);
modl=0;
// delay(b);
// digitalWrite(pledbuml, LOW);
// ledbuml=HIGH;
// score=score+x;
// fscore=1;
}
if((modl%2500)==2499)
{
digitalWrite(pledbuml, LOW);
}
else
{
modl=modl+1;
}
if(ds7==HIGH)
{
fball=1;
}
//balls
if(fball==1)
{
if(balls==0)
{
fgo=1;
}
else
{
balls=balls-1;
digitalWrite(pball1, balls & 1);
digitalWrite(pball2, balls & 2);
digitalWrite(pball4, balls & 4);
digitalWrite(pball8, balls & 8);
delay(b);
}
digitalWrite(pledpb1, HIGH);
digitalWrite(pledpb2, HIGH);
digitalWrite(pledpb3, HIGH);
digitalWrite(pledpb4a, LOW);
digitalWrite(pledir1a, LOW);
digitalWrite(pledir1b, LOW);
digitalWrite(pledir1c, LOW);
digitalWrite(pledds4, LOW);
digitalWrite(pledds5, LOW);
digitalWrite(pledds6, LOW);
digitalWrite(pledpb4b, LOW);
ledpb1=HIGH;
ledpb2= HIGH;
ledpb3= HIGH;
ledpb4a= LOW;
ledir1a= LOW;
ledir1b= LOW;
ledir1c= LOW;
ledds4= LOW;
ledds5= LOW;
ledds6= LOW;
ledpb4b= LOW;
fball=0;
ircounter=0;
}
//if gameover or initial loop, reset/set variables
if(fgo==1)
{
//basic variables
digitalWrite(psol1, HIGH);
sol1=HIGH;
for(int g=0; g<60; g=g+1)
{
digitalWrite(pledbuml, HIGH);
digitalWrite(pledbumr, HIGH);
digitalWrite(pball1, balls & 1);
digitalWrite(pball2, balls & 2);
digitalWrite(pball4, balls & 4);
digitalWrite(pball8, balls & 8);
digitalWrite(pshun1, scorehun & 1);
digitalWrite(pshun2, scorehun & 2);
digitalWrite(pshun4, scorehun & 4);
digitalWrite(pshun8, scorehun & 8);
digitalWrite(psten1, scoreten & 1);
digitalWrite(psten2, scoreten & 2);
digitalWrite(psten4, scoreten & 4);
digitalWrite(psten8, scoreten & 8);
digitalWrite(psone1, scoreone & 1);
digitalWrite(psone2, scoreone & 2);
digitalWrite(psone4, scoreone & 4);
digitalWrite(psone8, scoreone & 8);
delay(a/2);
digitalWrite(pledbuml, LOW);
digitalWrite(pledbumr, LOW);
digitalWrite(pball1, HIGH);
digitalWrite(pball2, HIGH);
digitalWrite(pball4, HIGH);
digitalWrite(pball8, HIGH);
digitalWrite(pshun1, HIGH);
digitalWrite(pshun2, HIGH);
digitalWrite(pshun4, HIGH);
digitalWrite(pshun8, HIGH);
digitalWrite(psten1, HIGH);
digitalWrite(psten2, HIGH);
digitalWrite(psten4, HIGH);
digitalWrite(psten8, HIGH);
digitalWrite(psone1, HIGH);
digitalWrite(psone2, HIGH);
digitalWrite(psone4, HIGH);
digitalWrite(psone8, HIGH);
delay(a/2);
}
digitalWrite(psol1, LOW);
sol1= LOW;
score=0;
scoreone=0;
scoreten=0;
scorehun=0;
balls=3;
digitalWrite(pball1, balls & 1);
digitalWrite(pball2, balls & 2);
digitalWrite(pball4, balls & 4);
digitalWrite(pball8, balls & 8);
ledpb1=HIGH;
ledpb2=HIGH;
ledpb3=HIGH;
ircounter=0;
fscore=1;
fgo=0;
}
//scoring
if(fscore==1)
{
if(score>999)
{
score=999;
}
else
{
scorehun=score/100;
scoreten=((score-(scorehun*100))/10);
scoreone=score-(scorehun*100)-(scoreten*10);
digitalWrite(pshun1, scorehun & 1);
digitalWrite(pshun2, scorehun & 2);
digitalWrite(pshun4, scorehun & 4);
digitalWrite(pshun8, scorehun & 8);
digitalWrite(psten1, scoreten & 1);
digitalWrite(psten2, scoreten & 2);
digitalWrite(psten4, scoreten & 4);
digitalWrite(psten8, scoreten & 8);
digitalWrite(psone1, scoreone & 1);
digitalWrite(psone2, scoreone & 2);
digitalWrite(psone4, scoreone & 4);
digitalWrite(psone8, scoreone & 8);
fscore=0;
sten1= scoreten & 1;
sten2= scoreten & 2;
sten4= scoreten & 4;
sten8= scoreten & 8;
}
delay(b/2);
}
/*
Serial.print("\n \nScore: ");
Serial.println(score, DEC);
Serial.print("\n LEDIRCA ");
Serial.println(ledir1a, DEC);
Serial.print("\n LEDIRB: ");
Serial.println(ledir1b, DEC);
Serial.print("\n LEDIRC: ");
Serial.println(ledir1c, DEC);
Serial.print("\n LEDDS4: ");
Serial.println(ledds4, DEC);
Serial.print("\n LEDDS5: ");
Serial.println(ledds5, DEC);
Serial.print("\n LEDDS6: ");
Serial.println(ledds6, DEC);
Serial.print("\n LEDPB1: ");
Serial.println(ledpb1, DEC);
Serial.print("\n LEDPB2: ");
Serial.println(ledpb2, DEC);
Serial.print("\n LEDBP3: ");
Serial.println(ledpb3, DEC);
Serial.print("\n LEDBP4b: ");
Serial.println(ledpb4b, DEC);
Serial.print("\n Bonus: ");
Serial.println(ledpb4a, DEC);
Serial.print("\n ircounter: ");
Serial.println(ircounter, DEC);
Serial.print("\n bumpr: ");
Serial.println(ledbumr, DEC);
Serial.print("\n bumpl: ");
Serial.println(ledbuml, DEC);
Serial.print("\n Scoreone: ");
Serial.println(scoreone, DEC);
Serial.print("\n Scoreten: ");
Serial.println(scoreten, DEC);
Serial.print("\n Scorehun: ");
Serial.println(scorehun, DEC);
Serial.print("\n Balls: ");
Serial.println(balls, DEC);
Serial.print("\n sellenoid: ");
Serial.println(sol1, DEC);
Serial.print("\n sten1: ");
Serial.println(sten1, DEC);
Serial.print("\n Sten2: ");
Serial.println(sten2, DEC);
Serial.print("\n Sten4: ");
Serial.println(sten4, DEC);
Serial.print("\n Sten8: ");
Serial.println(sten8, DEC);
*/
//reset input variables
ds1= LOW;
ds2= LOW;
ds3= LOW;
ds4= LOW;
ds5= LOW;
ds6= LOW;
ds7= LOW;
pb1= LOW;
pb2= LOW;
pb3= LOW;
pb4= LOW;
pb5= LOW;
ir1= LOW;
bumr=LOW;
buml=LOW;
ledpb4b=LOW;
ledds4=LOW;
ledds5=LOW;
ledds6=LOW;
sol1=LOW;
ledbumr=LOW;
ledbuml=LOW;
//} //close test
}//close loop
Afficher plus
pas facile
sur Ali j'ai trouvé celui ci mais plus dispo et hors de prix
si ça peut te donner des idées :
pour augmenter le balourd, tu peux effectivement augmenter la hauteur de l'empilement
mais tu pourrais aussi augmenter son diamètre et réduire les 180° : plus encombrant mais plus léger ! selon ce que tu cherches
la comparaison dans le ressenti passerait par la comparaison de l'inertie (répartition des masses par rapport à l'axe de rotation) mais pas par le poid.
et avec un Mige derrière, il ne devrait pas y avoir de soucis !
PS : Solidworks t'indique directement l'inertie de ta pièce ou de ton assemblage
vive RFRO
vive nos potes entrepreneur
vive la France
je râle parce que j'aurai préféré des évols sur le 1 sur le moteur par exemple et des circuits supplémentaire
plutôt que de nous revendre un opus supplémentaire mais sans la Finlande comme tu dis
Perso je me ferait pas avoir 2 fois et j'attendrais de toucher du doigt avant d'être convaincu .
si c'est de la merde, perso je ne toucherai pas du doigt !!
ben tiens...
RdV samedi à Sorgues alors trop cool
ou fixer des boudins autour de quelques flippers et traverser l'Atlantique pour rentrer
en tous cas, c'est pas cher, c'est sûr !
c'est dingue par chez vous ! bon après il faut de la place pour stocker mais c'est vraiment donné
Ce flipper a un thème sympa dans l'idée
mais c'est un flipper low-cost : ils avaient breveté leur bumper et slingshot simplifiés sans switch (c'est la bille qui fait la continuité électrique) mais ça marchait pas terrible
et les deux batteurs sont toujours actionnés simultanément : une seule bobine et une biellette entre les 2 batteurs
Pas sûr que ça vaille grand chose une fois retapé...
il semble que Sentinel n'a fabriqué de 6 modèles de flippers en fin des années 70
même pas la Bang Bang ??
As-tu testé les actionneurs ? ou bien tu as pris des types originaux?
mes batteurs sont de véritables pièces de flipper. J'ai commandé et reçu des verins de verrous de portes automobiles que j'utiliserai pour des rampes à déplacer ou des trucs comme ça (mais pas pour des batteurs, non.)
C'est plus les inserts qui m'interrogent, comment font les gars pour avoir des inserts hyper clean sur les plateaux "fait main "comme au dessus, faut être top pile poil, car tu peux pas poncer tes inserts transparents.
La difficulté c'est la profondeur et ça, ça se règle avec la défonceuse ou la CNC, non ? (j'imagine). Tu as eu quelles difficultés toi en pratique ?
Si le contour est trop large alors pâte à bois.
Et puis il n'y a pas que les Pid comme algos d'asservissement...
allez Etienne ! ouiiiiii
parle nous de commande prédictive par exemple,
de commande « Bang-Bang » ,
de Commande linéaire quadratique gaussienne ou de logique floue
fais nous rêver grand fou !
marre du PID depuis le temps
le samedi 20 octobre, j'irai passer la journée au salon des flippers à Sorgues
pour ricousky ça fait 4h30 de bagnole... pour ARNAUDMTL, ça ferait vraiment trop loin
j'en profiterai pour acheter quelques pièces supplémentaires je pense (banque de cible escamotable, varitarget ? roll under ?) pour commencer à remplir un plateau vierge...
j'ai déjà des batteurs, des popbumpers, des slingshots