aumentare diminuire velocità motore dc

Se hai arduino mega 2560, devi provare a caricare questo scketch

  #define pwm_1 3
  #define pwm_2 2                 
 
  #define dir_2 47  
  #define dir_1 46  

  #define ant1 23     //PORTA B    sensore anteriore
  #define post1 22    // PORTA B   sensore posteriore

  int val1 = 0;  // legge lo stato del sensore anteriore
  int val3 = 0;  // legge lo stato del sensore posteriore
   
  byte speed = 80;
  int pwm_value=0;
 
  void setup() {
    Serial.begin(9600);
    pinMode(ant1, INPUT);
    pinMode(post1, INPUT);
    pinMode(pwm_1,OUTPUT);
    pinMode(dir_1,OUTPUT);
    pinMode(pwm_2,OUTPUT);
    pinMode(dir_2,OUTPUT);
 
  }

/*
 * COMMENTARE '#define debug'  QUANDO SI PROVA IL ROBOT
 */

//  #define debug
   
  void loop()
  {
   
    val1 = digitalRead(ant1); // HIGH = sensore non attivo , LOW = sensore attivo ( switch premuto)
    val3 = digitalRead (post1); // HIGH = sensore non attivo , LOW = sensore attivo ( switch premuto)

 #ifdef debug
    int v1 =LOW;   // Simula lo switch anteriore premuto (attivo)
    int v3 =HIGH;  // Simula lo switch posteriore Non premuto ( Non attivo)
    val1 = v1;
    val3 = v3;
 #endif
   
   
   if (val1 ^ val3)  // la condizione è vera solo se uno dei due sensori è attivo ( LOW = 0 volts = switch chiuso ). Se entrambi sono HIGH oppure entrambi sono LOW , la condizione è falsa.
                 // per cui se il robottino è chiuso davanti e dietro , rimmarà fermo e non eseguirà quindi il ciclo for.
    {
      delay(1000);
     
      if (val1==LOW) // Se è stato il sensore val1 ad attivarsi allora configura la scheda motore per andare indietro ( verificare che non sia l'incontrario..)
      { 
        digitalWrite(dir_1,HIGH);
        digitalWrite(dir_2,LOW);
      }  
      
      if (val3==LOW) // Se è stato il sensore val1 ad attivarsi allora configura la scheda motore per andare avanti ( verificare che non sia l'incontrario..)
      { 
        digitalWrite(dir_1,LOW);
        digitalWrite(dir_2,HIGH);
      }  
       

     
     for (pwm_value=0; pwm_value<speed; pwm_value=pwm_value+5)  // Esegue un ciclo di pwm come da codice originale
     {
        analogWrite(pwm_2,pwm_value);
        analogWrite(pwm_1,pwm_value);
        delay(100);
     }
    }  // a questo punto il sensore attivo si sarà disattivato ( a meno che non sia rotto) rendendo la condizione di cui sopra , falsa impedendo il ripetersi del ciclo for.
  }