programación de arduino uno r3
arduino,
arduino ladder,
arduino uno r3
arduino 1
arduino tutorial,
como programar arduino,
proyectos arduino,
arduino ladder,
programación de arduino,
arduino project,
arduino uno
arduino tutorial,
como programar arduino,
proyectos arduino,
arduino plc,
introdución a arduino,
arduino desde cero,
1. Elaborado por Ing. Jovanny Duque pág. 1
CONTROL DE CIRCUITOS ELECTRONEUMÁTICOS / ELECTROHIDRÁULICOS
NOMBRE DE LOS ESTUDIANTES:___________________________________________________________________________________________________________________________________________________
Planteamiento de la situación: Al pulsar CX3, la salida del Arduino (H1) solo hará una secuencia de encendido y apagado intermitente por (4) cuatro ciclos de
encendido (2s) y apagado (2s). Una vez realizados deberá accionarse el pulsador RESET para habilitar una nueva secuencia.
ARDUINO BASADO EN LADDER
Aprende a programar Arduino desde una solución LADDER con una metodología confiable
https://youtube.com/playlist?list=PLHTERkK4EZJq9hjTGCDQmaLvi7CAyk_q_
3. Elaborado por Ing. Jovanny Duque pág. 3
// CÓDIGO ARDUINO CASO 4 LED INTERMITENTE X4 OK
/// TRATAMIENTO PREVIO
//DECLARACION DE VARIABLES
//Declaración de las variables Ki corresponden a las
relés/memorias utilizadas para el circuito/programa
//Declaración de las variables Si corresponden a las Entradas de pulsador NO
(Normalmente abiertos) utilizadas para el circuito/programa , la designación H
corresponde al pin de salidas acoplada a un LED
int K1=0;
int K2=0;
int K3=0; // Las memorias se declaran en estado inicial bajo o false.
int RESET=6; // Pin de entrada, hará la función del pulsador de RESET- Ver
Conexión de Entradas y Salidas
int CX3=7 ; // Pin de entrada, hará la función del pulsador de CX3 - Ver
Conexión de Entradas y Salidas
int H1 = 2; // Pin de salida del LED - Ver Conexión de Entradas y Salidas
// Variables asociadas a "temp1".
int T1 = 0; // Bit/memoria asociado al temporizador 1 se establece a
estado 1 cuando transcurre el tiempo1 establecido
int tiempo1 = 1500; // Tiempo asignado a la Temporización 1 en este
caso (1,5 seg = 1500 milisegundos).
int activado1 = 0; // Al principio no ha sido activado.
long inicio1, final1, actual1;
4. Elaborado por Ing. Jovanny Duque pág. 4
// Variables asociadas a "temp2".
int T2= 0 ; // Bit/memoria asociado al temporizador 1 se establece a
estado 1 cuando transcurre el tiempo2 establecido
int tiempo2 = 1000; // Tiempo asignado a la Temporización 2 en este
caso (1 seg = 1000 milisegundos).
int activado2 = 0; // Al principio no ha sido activado.
long inicio2, final2, actual2;
// Variables asociadas al Contador 1
int CONTADOR1 = 0; // Variable entera que guarda el número de
ciclos transcurridos
const int PSCONTADOR1 = 4; // Preselect del Contador o número
de ciclos a realizar
int ESTADOPREVIO_T1 = 0; // Estado previo del componente que
incrementa el contador, en este caso T1
int CONT1=0; // Es la
variable(memoria) que se activa cuando se cumplen
los ciclos, cuando (CONTADOR1 >=PSCONTADOR1)
5. Elaborado por Ing. Jovanny Duque pág. 5
void setup() {
//Apertura del visualizador serial con el fin de visualizar el número de
ciclos en el "Monitor serie"
Serial.begin(9600);
//Declaración de puertos (pines) digitales tanto de entrada como de salida
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(2, OUTPUT);
//Algunos dispositivos traen una configuración "Sinking and Sourcing"
//por eso es necesario colocar los puertos de salida en 0v
o en estado bajo.
//Declaración del estado inicial de los pines/puertos de las salidas en
bajo/apagadas
digitalWrite(H1, 0);
}
//TRATAMIENTO SECUENCIAL
void loop() { // Inicio del Void Loop
// LECTURA DE LOS ESTADOS DE LOS PINES DE ENTRADA
//Capturar valores de puertos digitales de entrada con el fin de
// asignar el estado de los pines de entrada a las variables RESET
y CX3
RESET= digitalRead(6);
CX3= digitalRead(7);
6. Elaborado por Ing. Jovanny Duque pág. 6
//TRATAMIENTO SECUENCIAL
// Declaración de las ecuaciones booleanas equivalentes de cada línea
eléctrica (relé,temporizador o contador)
// Cada línea del circuito eléctrico (lógica cableada) tiene su ecuación
booleana equivalente (lógica programada).
if ((CX3 | K1 | T2) & (!CONT1) & (!T1)) {K1=1;}
else {K1=0;}
if (K1) {activetemp1(); } // Si se activa K1
se ejecuta la Subrutina/Subprograma de temporización "void activetemp1()"
else {desactivetemp1();} // Si K1 esta inactivo se ejecuta la
Subrutina/Subprograma de temporización "void desactivetemp1()"
if ((T1 | K2) & (!K3)) {K2=1;}
7. Elaborado por Ing. Jovanny Duque pág. 7
else {K2=0;}
if (K2) {activetemp2(); } // Si se activa K2 se ejecuta la
Subrutina/Subprograma de temporización "void activetemp2()"
else {desactivetemp2();} // Si K2 esta inactivo se ejecuta la
Subrutina/Subprograma de temporización "void desactivetemp1()"
if (T2) {K3=1;}
else {K3=0;}
if (T1 != ESTADOPREVIO_T1) {
if(T1==1){ CONTADOR1++;
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR1);}
ESTADOPREVIO_T1 = T1; }
if ( CONTADOR1 >=PSCONTADOR1) {CONT1=1;}
else {CONT1=0;}
if (RESET == 1) {CONTADOR1 = 0; CONT1=0;}
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR1); }
8. Elaborado por Ing. Jovanny Duque pág. 8
// TRATAMIENTO POSTERIOR - ACTIVACIÓN DE LAS SALIDAS/ ACCIONES
if (K1) {digitalWrite(H1, 1);}
else {digitalWrite(H1, 0);}
} // Fin del Void Loop
//SUBRUTINAS DE TEMPORIZACIÓN (Para cada temporización se asigna un
subprograma
//activetempx y un desactivetempx usando para ello comparaciones con el
comando millis
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
//SUBRUTINA TEMPORIZADOR 1
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
void activetemp1() {
if (activado1 == 0) { // activa y no ha sido activado=0 antes...
activado1 = 1; // marca activado=1 y guarda el tiempo de inicio.
inicio1 = millis();
final1 = inicio1 + tiempo1; // Transcurridos tiempo1 ( en este caso 2000
milisegundo=2s)
}
actual1 = millis(); // Consulta el tiempo actual.
if (activado1 == 1 & (actual1 >= final1) ) {T1 = 1; }
else { T1 = 0; }
}
void desactivetemp1() {
T1 = 0;
10. Elaborado por Ing. Jovanny Duque pág. 10
Jóvenes, este material ha sido elaborado con mucho gusto.
Si te es útil Regálame un Like, comenta y suscríbete :) (っ◕‿◕)
Te invito al CANAL DE YOUTUBE MEKATRONICA
para conocer más
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_
__________________________________
y Amigos/as en el BLOGG MEKATRONICA J DUKE podrás encontrar cantidad de recursos sobre
SOLIDWORKS, HIDRÁULICA - ELECTROHIDRÁULICA , NEUMÁTICA, ELECTRONEUMÁTICA,
CONTROL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTORY IO,
entre otros
https://mecatronica-itsa.blogspot.com/