Arduino entradas salidas digitales, los bornes (los llamaremos pines) de la placa arduino mega 2560 que
vienen identificados con la palabra digital son los que se pueden programar como entradas o salidas
digitales utilizando código arduino, mediante código en C se pueden utilizar otros pines como entradas
salidas digitales, pero se dará preferencia al código arduino.
En la imagen se puede ver que para el arduino entradas salidas digitales en el mega 2560 van de los bornes
22 al 53 lo cual da un total de 31 pines que se pueden utilizar como entradas o salidas digitales.
Salidas digitales:
La programación para que un pin sea salida digital se hace mediante la siguiente línea de código arduino:
Por ejemplo
a los pines se les puede dar nombres mediante variables, por ejemplo si en un pin programado como
salida se conecta un led se puede crear una variable llamada led a la cual se le asigna el número del pin
utilizado, por ejemplo si se programa el pin 26 como salida digital se puede proceder así para darle un
nombre
byte led=26; //con lo cual donde se utilice la variable pulsador en la compilación esta se reemplazará por 26
Para indicar si por el pin programado como salida digital se quiere que salga un 1 o un 0 se procede así:
Entradas digitales:
La programación para que un pin sea entrada digital se hace mediante la siguiente línea de código arduino:
pinMode(número_de_pin,INPUT); //terminando en punto y coma
Por ejemplo
byte pulsador=53; //con lo cual donde se utilice la variable pulsador en la compilación esta se reemplazará
por 53
Luego para declarar este pin como entrada digital se procederá así:
Para conocer si por el pin programado como entrada digital está llegando un 1 o un 0 se procede así:
Si se sigue con el ejemplo anterior para leer lo que llega en la entrada sería así
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Ejemplos de código
Salida digital
En este ejemplo el LED conectado al pin 13 parpadea cada segundo.
Salida digital II
En este ejemplo el LED conectado al pin 13 parpadea en un intervalo de tiempo variable que depende
del número de veces que se ejecuta el programa (función loop)
Entrada digital
Este ejemplo lee el valor de un interruptor conectado en el pin 2. Cuando el interruptor está cerrado
en el pin de entrada habrá un estado alto (HIGH) y se encenderá el LED.
#define STEP 11
#define DIR 12
void setup(){
void loop(){
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/*
------ Tutorial Motor Paso a Paso display ultrasonico ---------------
*/
/* Ping))) Sensor
The circuit:
* +V connection of the PING))) attached to +5V
* GND connection of the PING))) attached to ground
* SIG connection of the PING))) attached to digital pin 7
http://www.arduino.cc/en/Tutorial/Ping
*/
// include the library code:
#include <LiquidCrystal.h>
#include <AccelStepper.h>
// this constant won't change. It's the pin number
// of the sensor's output:
const int pingPinOUT = 4;
const int pingPinIN = 5;
//const int stepsPerRevolution = 100; // change this to fit the number of steps per revolution
// for your motor
stepper3.setMaxSpeed(500.0);
stepper3.setAcceleration(10000.0);
stepper3.moveTo(10000000);
pinMode(pingPinOUT, OUTPUT);
pinMode(pingPinIN, INPUT);
}
void loop()
{
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
float duration, inches, cm;
digitalWrite(pingPinOUT, LOW);
delayMicroseconds(2);
digitalWrite(pingPinOUT, HIGH);
delayMicroseconds(3);
digitalWrite(pingPinOUT, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
if(cm>6||cm==0){
stepper2.run();
stepper3.run();
}
//Retroceso
else{
stepper2.stop(); // Stop as fast as possible: sets new target
stepper2.setMaxSpeed(450.0);
stepper2.setCurrentPosition(0);
stepper2.moveTo(4500);
stepper3.stop();
stepper3.setMaxSpeed(450.0);
stepper3.setCurrentPosition(0);
stepper3.moveTo(4500);
delay(2);
}
Arduino Driver
8 IN1
9 IN2
10 IN3
11 IN4
Tienda en Linea: http://dinastiatecnologica.com/
*/
int retardo=4;
int cont = 0;
int cont2 = 0;
void setup() {
void loop() {
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(retardo);
}
delay(500);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(retardo);
}
delay(500);
}
__-----
SERVOMOTOR CON ARDUINO TUTORIAL DE PROGRAMACIÓN PASO A PASO
En este artículo te voy a enseñar cómo utilizar un servomotor con Arduino. Antes de continuar es
importante saber qué es un servomotor o servo. Es un motor eléctrico, pero con dos características
especiales.
Por un lado, nos permite mantener una posición que indiquemos, siempre que esté dentro del rango
de operación del propio dispositivo. Por otro lado nos permite controlar la velocidad de giro,
podemos hacer que antes de que se mueva a la siguiente posición espere un tiempo.
Cosas a tener en cuenta con este dispositivo. Lo primero, el ángulo de giro, en este caso nos permite
hacer un barrido entre -90º y 90º. Lo que viene a ser un ángulo de giro de 180º.
Aunque el servo puede moverse con una resolución de más de 1 grado, este es el máximo de
resolución que vamos a conseguir debido a la limitación de la señal PWM que es capaz de generar
Arduino UNO.
Estos motores funcionan con una señal PWM, con un pulso de trabajo entre 1 ms y 2 ms y con un
periodo de 20 ms (50 Hz). ¿Qué quiere decir todo esto? Este dato nos indica la velocidad máxima
a la que podemos mover el servomotor con Arduino. Solo podremos cambiar de posición cada 20
ms. Esto dependerá del tipo y marca de nuestro servo.
El elegir una salida PWM u otra da lo mismo, todas las salidas de este tipo funcionan igual.
Ahora vamos a ir a lo
interesante, la programación.
Para ello tenemos que hacer
uso de una librería externa para
poder controlar el servo desde
Arduino. Para incorporar la
librería tenemos que ir a
Programa/Include Library/Servo.
//---------------------------------
De la librería Servo.h hemos declarado un objeto o variable servoMotor y hacemos uso de dos
métodos. Por un lado el attach, que nos permite indicar en que pin tenemos conectado nuestro
servo, y por otro lado el write, donde indicamos en qué ángulo queremos posicionar nuestro
servomotor.
Girando grado a grado el servomotor
Vamos a realizar otro ejemplo un poco más complicado, en este caso queremos que el servo haga
un barrido desde el 0 al 180º y luego en sentido contrario. Vamos a utilizar los mismos métodos
pero incorporamos dos bucles for, uno para cada sentido.
Vamos a realizar otro ejemplo un poco más complicado, en este caso queremos que el servo haga
un barrido desde el 0 al 180º y luego en sentido contrario. Vamos a utilizar los mismos métodos,
pero incorporamos dos bucles for, uno para cada sentido.
Controlar un servo desde Ardunino es una tarea muy sencilla gracias al uso de la librería Servo.h.
Te recomiendo que sigas practicando con esta librería. Si te ha gustado el artículo, compártelo.
Si tienes alguna duda, deja un comentario abajo de este artículo.
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/