Arduino con servomotor y monedero

Muy buenas a todos
Quisiera saber si me pueden ayudar con un proyecto que quiero terminar para mi escuela verán

Necesito programar arduino a un servomotor y un monedero explico:

Al echarle una moneda el Arduino mande señal al servo que se mueva de 0 a 180 y que después de 2 segundos vuelva a 0

Tengo todo solo me falta el código agradecería ayuda de antemano gracias...

Esto es la sección de proyectos, aquí se exponen los proyectos acabados, o casi y funcionando.

En tu caso es peor ya que esto es doble post ya que hiciste una consulta en la sección software.

Además debes saber que no hacemos código, corregimos problemas que tengas en tu código y no funciona bien, o no hace exactamente lo que quieres.

Creo que en las NORMAS está todo explicado, y en la sección de DOCUMENTACION hay una bastantes tutoriales para empezar a programar.

gracias victorjam desconocía algunos puntos, una disculpa por el inconveniente

Con leer las librería Servo y/o buscar en google, encontrarás tutoriales que te dicen todo lo que necesitas.
Los ejemplos serán suficientes para entender su funcionamiento.

Que tal maestros y colegas, preguntando por aquí y por allá por fin casi termino mi proyecto, mover un servomotor con un botón de 0 a 180 grados y que regrese a 0 automáticamente PERO, lo ultimo que me falta es hacer que el servomotor se mueva si presiono 3 veces el botón y no tengo idea de como hacer el codigo, agradeceria su ayuda este es el codigo que estoy manejando :slight_smile:

#include <Servo.h>

Servo myservo;  // creo un objeto servo para controlar un servo

#define servoPin 3 // el pin 3 es donde va el servo #1 conectado
#define MonederoPin 2 // el pin 2 es donde va el monedero #1


int angle =0;    // ángulo inicial para servo (entre 0 y 179)
int angleStep =22;
const int minAngle = 0;
const int maxAngle = 180;

const int type =2;

int buttonPushed =0;

void setup() {
  Serial.begin(9600);          //  configuración en serie
  myservo.attach(servoPin);  // une el servo en el pin 3 al objeto servo
  pinMode(MonederoPin,INPUT_PULLUP);
   myservo.write(angle);//posición inicial
}

void loop() {
  if(digitalRead(MonederoPin) == LOW){
    buttonPushed = 1;
  }
   if( buttonPushed ){
  // cambio el ángulo para la próxima vez a través del ciclo:
  angle = angle + angleStep;

    // invierto la dirección del movimiento en los extremos del ángulo:
    if (angle >= maxAngle) {
      angleStep = -angleStep;
        if(type ==1)
        {
            buttonPushed =0;                   
        }
    }
    
    if (angle <= minAngle) {
      angleStep = -angleStep;
       if(type ==2)
        {
            buttonPushed =0;       
        }
    }
    
    myservo.write(angle); // muevo el servo al ángulo deseado
    delay(100); // espero a que llegue el servo
   }

}

Por favor, no doble postees!!
Es justamente abrir varios hilos preguntando lo mismo o porque no lo encuentras o porque no te das cuenta.
Para eso tenemos las normas que te piden que no lo hagas.
Te debo advertir que incurrir en la misma práctica una y otra vez puede ocasionar sanciones.
Así que presta atención.
Busca tu hilo y continúa hasta ponerle SOLUCIONADO. Me avisas y lo cierro.

Gracias moderadores he tenido algunos problemas en cuanto a la publicación de mis post ya que repetí y no lo coloque en donde iba, agradezco la orientación, entonces preguntare en este y una vez solucionado tambien lo colocare

que tal a todos buenas noches aqui en mexico, quise abrir otro post pero es ligeramente diferente a este ya que va enfocado al mismo proyecto que estoy terminando y no quiero que me vayan a sancionar de alguna manera ya que no empecé bien en postear mis preguntas, ahora bien el código que quiero es como lo mencione mas arriba, que cuando presione X número de veces al botón, este haga una acción, el caso es que encontré la funcion "buttonPushCounter" que va de maravilla para lo que quiero, el problema es que cuando conecto cualquier cosa al pin numero 2 (que es donde tengo conectado el botón) hace la acción y no se detiene a menos que lo desconecte este es el código

const int  buttonPin = 2;    // el pin al que está conectado el boton
const int ledPin = 13;       // el pin al que está conectado el LED

// Las variables cambiarán:
int buttonPushCounter = 0;   // contador para la cantidad de pulsaciones de botones
int buttonState = 0;         // estado actual del botón
int lastButtonState = 0;     // estado anterior del botón

void setup() {
  // Inicialice el pin del botón como entrada:
  pinMode(buttonPin, INPUT);
  // Inicializar el LED como salida:
  pinMode(ledPin, OUTPUT);
  // Inicializar la comunicación en serie:
  Serial.begin(9600);
}


void loop() {
  // lea el pin de entrada del botón:
  buttonState = digitalRead(buttonPin);

  // compara el buttonState con su estado anterior
  if (buttonState != lastButtonState) {
    // Si el estado ha cambiado, incremente el contador
    if (buttonState == HIGH) {
      // Si el estado actual es ALTO, el botón fue de apagado a encendido:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes: ");
      Serial.println(buttonPushCounter);
    } else {
      // si el estado actual es BAJO, entonces el botón fue de encendido a apagado:
      Serial.println("off");
    }
    // Retrasar un poco para evitar rebotar
    delay(100);
  }
  // guardar el estado actual como el último estado, para la próxima vez a través del ciclo
  lastButtonState = buttonState;


  // enciende el LED cada cuatro botones presionando marcando el módulo del
  // botón de contador. la función de módulo le da el resto del
  // división de dos números:
  if (buttonPushCounter % 4 == 0) {
  
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }

}

No se detiene por que la variable con la que has contado los pulsos no la has vuelto a dejar a 0

if (buttonPushCounter % 4 == 0) {
 
    digitalWrite(ledPin, HIGH);
    buttonPushCounter = 0;
  }

tecnogamespc:
el problema es que cuando conecto cualquier cosa al pin numero 2 (que es donde tengo conectado el botón) hace la acción y no se detiene a menos que lo desconecte este es el código

O sea que al pin2 le das una doble funcion ?

O es como dice krnlpanic que no vuelve a cero, si es eso y lo que tienes que contar es a veces una cantidad y a veces otras lo puedes usar como la funcion millis() (salvando las diferencias) o sea haciendo una diferencia entre el contador final menos el inicial.

muchas gracias amigos ya lo resolvi me faltaba código en

void setup() {
  // Inicialice el pin del botón como entrada:
  pinMode(buttonPin, INPUT_PULLUP); // me falto colocar PULLUP
  // Inicializar el LED como salida:
  pinMode(ledPin, OUTPUT);
  // Inicializar la comunicación en serie:
  Serial.begin(9600);
}

muchas gracias por su ayuda, saludos...

RESUELTO!