salve ,
ho costruito , utilizzando un pad della xbox 360) un joystik wireless per computer 8 bit
https://www.youtube.com/watch?v=YvwLuz3YQv8
pero funziona , come i vecchi joystik solo in digitale , volevo usare anche la levetta analogica e
mi è venuto in mete di usare un periodo di 1 secondo e variare il duty da 0 a 100%.
ho pensato di assegnare ad una variabile il valore rilevato sull analogico a0 , a1
poi in base a questo valore impostare un pin low,high con un daly che varia da 100 a 1000.
avevo pensato ad un oistruzione CASE , ma non essendo molto pratica ho optato per una serie di 10 if
ed è uscito questo
#define asseX A0
#define asseY A1
int destra =3;
int sinistra = 4;
int alto = 5;
int basso = 6;
int bottone = 7;
int sparo = 8;
void setup ()
{
Serial.begin (9600);
pinMode(destra, OUTPUT);
pinMode(sinistra,OUTPUT);
pinMode(basso, OUTPUT);
pinMode(alto, OUTPUT);
pinMode(sparo, OUTPUT);
pinMode(bottone , INPUT);
}
void loop ()
{
int xVal, yVal;
xVal = analogRead (asseX);
yVal = analogRead (asseY);
digitalWrite(sparo, LOW);
if(bottone ,HIGH){
digitalWrite(sparo,HIGH);
}
if(xVal && yVal == 524 ){
digitalWrite(destra, LOW);
digitalWrite(sinistra,LOW);
digitalWrite(alto,LOW);
digitalWrite(basso , LOW);
}
if(xVal<=524 && xVal>=472){//-----posizione 1
digitalWrite(sinistra,HIGH);
delay(100);
digitalWrite(sinistra,LOW);
}
if(xVal<=471&& xVal>=419){//-------posizione2
digitalWrite(sinistra,HIGH);
delay(200);
digitalWrite(sinistra,LOW);
}
if(xVal<=418&& xVal>=366){//posizione-------3
digitalWrite(sinistra,HIGH);
delay(300);
digitalWrite(sinistra,LOW);
}
if(xVal<=365&& xVal>=313){//------------posizione4
digitalWrite(sinistra,HIGH);
delay(400);
digitalWrite(sinistra,LOW);
}
if(xVal<=312&& xVal>=260){//-----------posizione5
digitalWrite(sinistra,HIGH);
delay(500);
digitalWrite(sinistra,LOW);
}
if(xVal<=259&& xVal>=207){//----------posizione6
digitalWrite(sinistra,HIGH);
delay(600);
digitalWrite(sinistra,LOW);
}
if(xVal<=206&& xVal>=154){//---------posizione7
digitalWrite(sinistra,HIGH);
delay(700);
digitalWrite(sinistra,LOW);
}
if(xVal<=153&& xVal>=101){//posizione------------8
digitalWrite(sinistra,HIGH);
delay(800);
digitalWrite(sinistra,LOW);
}
if(xVal<=101 &&xVal>=48 ){//-----------posizione 9
digitalWrite(sinistra,HIGH);
delay(900);
digitalWrite(sinistra,LOW);
}
if(xVal<=47 && xVal>=0){//-----------posizione10
digitalWrite(sinistra,HIGH);}
//______________________________________fine sinistra---------------------
if(xVal>=523 && xVal>=575){//--------------posizione1
digitalWrite(destra ,HIGH);
delay(100);
digitalWrite(destra ,LOW);
}
if(xVal>=576&& xVal>=628){//--------posizione2
digitalWrite(destra, HIGH);
delay(200);
digitalWrite(destra ,LOW);
}
if(xVal>=629&&xVal>=781){//-----------posizione 3
digitalWrite(destra ,HIGH);
delay(300);
digitalWrite(destra ,LOW);
}
if(xVal>=782&& xVal>=703){//----------posizione 4
digitalWrite(destra ,HIGH);
delay(400);
digitalWrite(destra ,LOW);
}
if(xVal>=704&& xVal>=756){//-----------posizione 5
digitalWrite(destra ,HIGH);
delay(500);
digitalWrite(sinistra,LOW);
}
if(xVal>=757&& xVal>=809){//-----------posizione 6
digitalWrite(destra ,HIGH);
delay(600);
digitalWrite(destra ,LOW);
}
if(xVal>=810&& xVal>=864){//-----------posizione 7
digitalWrite(destra ,HIGH);
delay(700);
digitalWrite(destra ,LOW);
}
if(xVal>=865&& xVal>=917){//-----------posizione 8
digitalWrite(destra ,HIGH);
delay(800);
digitalWrite(destra ,LOW);
}
if(xVal>=918 &&xVal>=48 ){//-----------posizione 9
digitalWrite(destra ,HIGH);
delay(900);
digitalWrite(destra ,LOW);
}
if(xVal>=47 && xVal>=0){//-----------posizione 10
digitalWrite(destra ,HIGH);
}
//----------------------------------parte destra finita---------------------------------------------
//----------------------------------inizio alto basso-------------------------------------------------
if(yVal<=524 && yVal>=472){//-----posizione 1
digitalWrite(basso,HIGH);
delay(100);
digitalWrite(basso ,LOW);
}
if(yVal<=471&& yVal>=419){//-------posizione2
digitalWrite(basso ,HIGH);
delay(200);
digitalWrite(basso ,LOW);
}
if(yVal<=418&& yVal>=366){//posizione-------3
digitalWrite(basso ,HIGH);
delay(300);
digitalWrite(basso ,LOW);
}
if(yVal<=365&& yVal>=313){//------------posizione4
digitalWrite(basso ,HIGH);
delay(400);
digitalWrite(basso ,LOW);
}
if(yVal<=312&& yVal>=260){//-----------posizione5
digitalWrite(basso ,HIGH);
delay(500);
digitalWrite(basso ,LOW);
}
if(yVal<=259&& yVal>=207){//----------posizione6
digitalWrite(basso ,HIGH);
delay(600);
digitalWrite(basso ,LOW);
}
if(yVal<=206&& yVal>=154){//---------posizione7
digitalWrite(basso ,HIGH);
delay(700);
digitalWrite(basso ,LOW);
}
if(yVal<=153&& yVal>=101){//posizione------------8
digitalWrite(basso ,HIGH);
delay(800);
digitalWrite(basso ,LOW);
}
if(yVal<=101 &&yVal>=48 ){//-----------posizione 9
digitalWrite(basso ,HIGH);
delay(900);
digitalWrite(basso ,LOW);
}
if(yVal<=47 && yVal>=0){//-----------posizione10
digitalWrite(basso ,HIGH);}
//______________________________________fine basso------------------ù
//-----------------------------------inizio alto------------------
if(yVal>=523 && yVal>=575){//--------------posizione1
digitalWrite(alto,HIGH);
delay(100);
digitalWrite(sinistra,LOW);
}
if(yVal>=576&& yVal>=628){//--------posizione2
digitalWrite(alto , HIGH);
delay(200);
digitalWrite(alto ,LOW);
}
if(yVal>=629&&yVal>=781){//-----------posizione 3
digitalWrite(alto ,HIGH);
delay(300);
digitalWrite(alto ,LOW);
}
if(yVal>=782&& yVal>=703){//----------posizione 4
digitalWrite(alto ,HIGH);
delay(400);
digitalWrite(alto ,LOW);
}
if(yVal>=704&& yVal>=756){//-----------posizione 5
digitalWrite(alto ,HIGH);
delay(500);
digitalWrite(alto ,LOW);
}
if(yVal>=757&& yVal>=809){//-----------posizione 6
digitalWrite(alto ,HIGH);
delay(600);
digitalWrite(destra ,LOW);
}
if(yVal>=810&& yVal>=864){//-----------posizione 7
digitalWrite(alto ,HIGH);
delay(700);
digitalWrite(destra ,LOW);
}
if(yVal>=865&& yVal>=917){//-----------posizione 8
digitalWrite(alto ,HIGH);
delay(800);
digitalWrite(alto ,LOW);
}
if(yVal>=918 &&yVal>=48 ){//-----------posizione 9
digitalWrite(alto ,HIGH);
delay(900);
digitalWrite(alto ,LOW);
}
if(yVal>=47 && yVal>=0){//-----------posizione 10
digitalWrite(alto ,HIGH);
}
//------------fine alto-----------------
}
ovviamente la stessa procedura va fatta per l asse y e per l altro lato dell asse x .
non ho una proto a portata quindi non posso provare se funziona collegando ai pin di uscita un led
qualche consiglio?
grazie
p.s. questo secondo me e il codice completo su i due assi e con il pulsante sparoi ( poi dovro aggiungere il pulsante salto e il pulsante freno