Cómo escribir un motor de control C Velocidad Programa DC en lenguaje de programación C ?
Solution:
- 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);
- }