Software PWM conversion of 8-directional joy sticks
proposed by Prof.Satoshi Nishimura image00 / Jichi Med Univ(JAPAN)

Specs: Pseud-analog controller by PWM.

E-mail: If interested (snishi-tky(a-mark)ninus.ocn.ne.jp ) image00

Back to top image00

PWM conversion



		
          
void setup() {

    pinMode(A0,INPUT);
    
    pinMode(0,OUTPUT); //DIR
    pinMode(1,OUTPUT); //PULSE
    pinMode(2,OUTPUT); //DIR
    pinMode(3,OUTPUT); //PULSE
    pinMode(4,OUTPUT); //DIR
    pinMode(5,OUTPUT); //PULSE
    pinMode(6,OUTPUT); //DIR
    pinMode(7,OUTPUT); //PULSE
    pinMode(8,OUTPUT); //DIR
    pinMode(9,OUTPUT); //PULSE
    int k;
    for (k=0;k<5;k++){
    
    int i;
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    
    delay(50);
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    
    delay(50);
    
    digitalWrite(3,HIGH);
    digitalWrite(6,HIGH);
    
    delay(50);
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    delay(50);
    
    digitalWrite(2,HIGH);
    digitalWrite(7,HIGH);
    
    delay(50);
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    delay(50);
    
    digitalWrite(1,HIGH);
    digitalWrite(8,HIGH);
    
    delay(50);
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    delay(50);
    digitalWrite(0,HIGH);
    digitalWrite(9,HIGH);
    
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    }
    }
    
    void loop() {
    
      int value=512;
    int i;
    delay(50);
    value=analogRead(A0);
    
      value=1024-value;
    for(i=0;i<10;i++){
    digitalWrite(i,LOW);
    }
    
    
    if(value<100){
    digitalWrite(0,HIGH);
      
    }
    
    if(value<200 && value>=100){
    digitalWrite(1,HIGH);
    
      
    }
    
    if(value<300 && value>=200){
    
    digitalWrite(2,HIGH);
      
    }
    if(value<400 && value>=300){
    
    digitalWrite(3,HIGH);
      
    }
    
    if(value<600 && value>=400){
    
      
    digitalWrite(4,HIGH);
    
    digitalWrite(5,HIGH);
    }
    
    
    if(value<700 && value>=600){
    
      
    digitalWrite(6,HIGH);
    }
    
    if(value<800 && value>=700){
    
     
    digitalWrite(7,HIGH); 
    }
    
    if(value<900 && value>=800){
    
      
    digitalWrite(8,HIGH);
    }
    if(value>=900){
    
    digitalWrite(9,HIGH);
      
    }
    
    }