User: alciro    User
 

microPLC para arduino

Share |
 Descargas microPLC

2.1. Rotación de las salidas digitales

/*
*  Rotación de las salidas para el microPLC - arduino
*  
*  Descripción: Rotar las salidas activando una encada momento con un tiempo de retardo
*  encada movimiento de 5 segundos.
*
*  Autor: Rafa Aranda
*  Fecha: 13-12-2013
*  Versión: 1.0
*/

// Pins de salida
#define Rele_1 6 
#define Rele_2 7 
#define Rele_3 8 
#define Rele_4 9 

// Pins de entrada (están ordenados de forma decreciente por necesidades del PCB)
#define In_1 5 
#define In_2 4 
#define In_3 3 
#define In_4 2

// Librerías 

// Funciones prototipo 
boolean GetInput(byte);

//  Variables globales

/*  setup
*  Tareas iniciales de preparación
*/
void setup(){
  
  // Establecer los pins de salida de los reles
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  
  // Establecer los pins de entradas digitales optoacopladas
  pinMode(In_1, INPUT);
  pinMode(In_2, INPUT);
  pinMode(In_3, INPUT);
  pinMode(In_4, INPUT);
	 
  // Preparar las variables
  digitalWrite(Rele_4, LOW);
  digitalWrite(Rele_1, LOW);
  digitalWrite(Rele_2, LOW);
  digitalWrite(Rele_3, LOW);
}

/*  loop
*  Programa principal
*/
void loop() {
	// Activar los relés de forma consecutiva
	digitalWrite(Rele_4, LOW);
	digitalWrite(Rele_1, HIGH);
	delay(5000); 
	digitalWrite(Rele_1, LOW);
	digitalWrite(Rele_2, HIGH);
	delay(5000); 
	digitalWrite(Rele_2, LOW);
	digitalWrite(Rele_3, HIGH);
	delay(5000); 
	digitalWrite(Rele_3, LOW);
	digitalWrite(Rele_4, HIGH);
	delay(5000); 
}

/*  GetInput
*  Lee el estado de la entrada indicada en el parámetro y retorna el valor invertido
*		in: Entrada (1 a 4)
*		return: estado (true, false)	
*/
boolean GetInput(byte in){
	boolean estado = false;	
	switch(in){
		case 1:
			if(digitalRead(In_1))estado=true;
			break;
		case 2:
			if(digitalRead(In_2))estado=true;
			break;
		case 3:
			if(digitalRead(In_3))estado=true;
			break;
		case 4:
			if(digitalRead(In_4))estado=true;
			break;
	}
	return estado;
}

 

Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |