Speed ​​control motor DC

Speed ​​control motor DC



const int buttonPin=8;     // El boton pulsador se declara como la entrada 8 del pin del Arduino
const int sensorPin=3;     // El pin numero 3 hace referencia al sensor de barrera

int motorPin=5;      // Utilizamos el pin 5 para declarar al motor
const int pot=0; //entrada analogica del arduino  A0
int buttonState = LOW; // Estado del boton pulsador
const int A=2;  //  Entradas del dip Swicht
const int B=6;
const int C=7;
const int D=9;
const int E=10;
const int F=11;
const int G=12;
const int H=13;
int i=0;
int suma=0;
int velocidad=0;
int contador=0;
int aux=0;
int Vueltas=0;

void setup()
{
  pinMode(motorPin, OUTPUT);// Pin de salida del motoreductor
  pinMode(buttonPin, INPUT);// Pin de entrada del boton pulsador
  digitalWrite(buttonPin,HIGH);//Se energiza el boton pulsador
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);

}

void loop()
{
  buttonState = digitalRead(buttonPin);
   //Serial.println(buttonState);

  if(buttonState==HIGH)
  {
    buttonState = HIGH;
     entrada_binaria();
   
       
      do
      {
     
          pwm();//Se activa la funcion PWM
          contador=digitalRead(sensorPin);
          if(contador==HIGH)
             {
                if (aux==0)
                {
                  Serial.println(suma);
                  suma=suma+1;
                }
                aux=1;
             }
             if(contador==LOW)
             {
               aux=0;
             }
             if(suma==Vueltas)
             {
              Serial.println(suma);
              analogWrite(motorPin,0);
              digitalWrite(motorPin,LOW);
              suma=0;
              buttonState=LOW;
             }
 
         
         
      }
      while(buttonState==HIGH);
   
  }  
}
void pwm()//Para controlar la velocidad del motor se realiza la division entre 4 del valor de 1023
{
  int velocidad=0;
  velocidad=analogRead(pot);//toma valores de 0 a 1023
  velocidad=velocidad/4;//ajustamos el valor del por para poder usar el PWM
  analogWrite(motorPin,velocidad);//valores entre 0 y 255 mando el valor a el motor
   //Serial.println ("Valor del PWM:");
  //Serial.println(velocidad);
}
void entrada_binaria() // En esta parte del void se le asignan valores para cada boton del dip
{
  Vueltas=0;
         if(digitalRead(A)==HIGH)
       {
        Vueltas=Vueltas+10;
       }
        if(digitalRead(B)==HIGH)
       {
        Vueltas=Vueltas+20;
       }
         if(digitalRead(C)==HIGH)
       {
        Vueltas=Vueltas+40;
       }
        if(digitalRead(D)==HIGH)
       {
        Vueltas=Vueltas+80;
       }
        if(digitalRead(E)==HIGH)
       {
        Vueltas=Vueltas+160;
       }
        if(digitalRead(F)==HIGH)
       {
        Vueltas=Vueltas+320;
       }
       if(digitalRead(G)==HIGH)
       {
        Vueltas=Vueltas+640;
       }
          if(digitalRead(H)==HIGH)
       {
        Vueltas=Vueltas+1280;
       }
       //Serial.println ("No. Vueltas :");
       //Serial.println(Vueltas);
}


Learn More :