//Constante declarada para tomar los pulsos del sensor (optoacoplador) const int buttonPin = 7; //const int buttonPin

= 8; //Para mover el motor de izquierda a derecha int entradaMotor1=2; int entradaMotor2=3; int pwm=9;//Para graduar la velocidad del motor //Variables para el control del programa int buttonPushCounter = 0;// Contador que lo captura el optoacoplador int buttonState = 0;// Estado de la salida del sensor int lastButtonState = 1;// El último estado anterior (variable de ayuda) int buttonPushCounter2 = int buttonState2 = int lastButtonState2 = 1; boolean empezar=false; boolean detener=false; char valReadSerial; int contador=1; int var1=1; int var2=2;; void setup() { //Inicializa las variables correspondientes pinMode(buttonPin, INPUT); //Para mover el motor pinMode(entradaMotor1, OUTPUT); pinMode(entradaMotor2, OUTPUT); pinMode(pwm,OUTPUT); // Para visualizar el comportamiento de los datos enviados/recibidos Serial.begin(9600); } void loop() { //if (Serial.available()>0){ //if(Serial.read()=='e'){ //valReadSerial=Serial.read(); if(Serial.read()=='b'){ detenerlo(500); }else{ buttonState =digitalRead(buttonPin); // Compara el estado actual con el último if (buttonState != lastButtonState) { 0;// Contador que lo captura el optoacoplador 0;// Estado de la salida del sensor

// Si el estado es cambiado incrementa el contador //if (buttonState == LOW){ //Incrementa el contador si y solo si se consigue un estado HIGH buttonPushCounter++; Serial.print("Contador: " ); Serial.println(buttonPushCounter, DEC);//Imprime el contador en pantalla //} } //Se mueve de a la derecha 6 revoluciones de motor if(buttonPushCounter>=var1 && buttonPushCounter<var2){ derecha(100,0); }else{ //delay(30); //En otro caso se mueve a la izquierda //inicio(); detenerlo(5000); var1=var1++; var2=var2+2; //detenerlo(0); } if( buttonPushCounter==20){ izquierda(100,0); while(buttonPushCounter!=0){ //Aquí código parecido al contador pero ahora decrementa al contador buttonState2 =digitalRead(buttonPin); if (buttonState2 != lastButtonState2) { //if (buttonState == HIGH) { buttonPushCounter--; Serial.print("Contador: " ); Serial.println(buttonPushCounter, DEC); //} lastButtonState2 = buttonState2; } } //buttonState = 0; // Estado de la salida del sensor //lastButtonState = 1; var1=1; var2=2; detenerlo(7000); } //Salvamos el ultimo estado actual lastButtonState = buttonState; }

} //Función movedora hacia la derecha void derecha(int x,int w){ digitalWrite(entradaMotor1, HIGH); digitalWrite(entradaMotor2, LOW); analogWrite(pwm,x); delay(w); } //Función movedora hacia la izquierda void izquierda(int y,int z){ digitalWrite(entradaMotor1, LOW); digitalWrite(entradaMotor2, HIGH); analogWrite(pwm,y); //delay(z); } //Función que detiene todo movimiento del motor void detenerlo(int beta){ digitalWrite(entradaMotor1, LOW); digitalWrite(entradaMotor2, LOW); //analogWrite(pwm,y); delay(beta); } //Función que regresa al inicio a la charola, es decir se mueve a la izquierda void inicio(){ detenerlo(4000);//Para evitar el sobrecalentamiento del motor se hace una peq izquierda(100,0); while(buttonPushCounter!=1){ //Aquí código parecido al contador pero ahora decrementa al contador buttonState =digitalRead(buttonPin); if (buttonState != lastButtonState) { if (buttonState ==HIGH) { buttonPushCounter--; //Serial.print("Contador: "); //Serial.println(buttonPushCounter, DEC); } } lastButtonState = buttonState; } //delay(80); detenerlo(10000);//Para no forzar al motor }

Sign up to vote on this title
UsefulNot useful