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
#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);
}
}
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);
}