Anda di halaman 1dari 5

int s0 = 13; int s1 = 2; /* Pulsadores Inicio y Stop

*/
int s2 = 3; int s3 = 4; int s4 = 5; /* Finales de Clasificaci�n
*/
int s5 = 6; int s6 = 7; int s7 = 8; /* Finales de Llegada */
int s8 = 9; int s9 = 10; int s10 = 11; int s11 = 12; /* Finales de BCD's */

int vs0, vs1, vs2, vs3, vs4, vs5, vs6, vs7, vs8, vs9, vs10, vs11; /* Valores de Los
Finales en LOW/HIGH */
int vbs2, vbs3, vbs4, vbs5, vbs6, vbs8, vbs9, vbs10, vbs11; /* Valores de Los
Finales en Booleana 1/0 */

int KM1 = 22; /* Se�al a Motor de Banda */


int KM2 = 24; /* Activa Motor en giro de Salida BCD A */
int KM3 = 26; /* Activa Motor en giro de Entrada BCD A */
int KM4 = 28; /* Activa Motor en giro de Salida BCD B */
int KM5 = 30; /* Activa Motor en giro de Entrada BCD B */
int h1 = 32; /* Se�al LED de Via A Llena */
int h2 = 34; /* Se�al LED de Via B Llena */
int h3 = 36; /* Se�al LED de Anomalia*/

int vKM1, SystAct, tipo, CantA, CantB, CantR, CantMax = 3;

void setup() {
pinMode(s0, INPUT); pinMode(s1, INPUT);
/* Pulsadores Inicio y Stop */
pinMode(s2, INPUT); pinMode(s3, INPUT); pinMode(s4, INPUT);
/* Finales de Clasificaci�n */
pinMode(s5, INPUT); pinMode(s6, INPUT); pinMode(s7, INPUT);
/* Finales de Llegada */
pinMode(s8, INPUT); pinMode(s9, INPUT); pinMode(s10, INPUT); pinMode(s11,
INPUT); /* Finales de BCD's */
pinMode(KM1, OUTPUT); pinMode(KM2, OUTPUT); pinMode(KM3, OUTPUT); pinMode(KM4,
OUTPUT); pinMode(KM5, OUTPUT); /* Motores y sus sentidos de giro */
pinMode(h1, OUTPUT); pinMode(h2, OUTPUT); pinMode(h3, OUTPUT);
/* LEDs de Anomalia y Vias Llenas */
}

void loop() {

vs0 = digitalRead(s0); /* Lee Pulsador de Stop y Emergencia */


vs1 = digitalRead(s1); /* Lee Pulsador de Inicio */
vs2 = digitalRead(s2); /* Lee Final para Clasificar Tipo */
vs3 = digitalRead(s3); /* Lee Final para Clasificar Tipo (Presencia) */
vs4 = digitalRead(s4); /* Lee Final para Clasificar Tipo */
vs5 = digitalRead(s5); /* Lee Final de Llegada a Bandeja A */
vs6 = digitalRead(s6); /* Lee Final de Llegada a Bandeja B */
vs7 = digitalRead(s7); /* Lee Final de Llegada de Piezas Reciclables */

vs9 = digitalRead(s9); /* Lee Final de Bandeja B Adentro */


vs10 = digitalRead(s10); /* Lee Final de Bandeja A Afuera */
vs11 = digitalRead(s11); /* Lee Final de Bandeja B Afuera */

//Al Pulsar s1, se activa el sistema y vKM1 lo autosostiene


if (vs1 == HIGH) {
tipo = 0; /* Resetea Tipo */
vKM1 = 1; /* Valor de KM1 (Motor de Banda */
SystAct = 1; /* Info Sistema Activo */
//En caso de pararse por emergncia y bandejas quedar afuera, entrarlas:
if (((vbs8 == 0) && (vbs10 == 0))) {
while (vbs8 == 0) {
digitalWrite(KM3, HIGH); /* Activa Motor en giro de Entrada BCD A */
}
}
if (((vs9 == 0) && (vs11 == 0))) {
while (vbs9 == 0) {
digitalWrite(KM5, HIGH); /* Activa Motor en giro de Entrada BCD B */
}
}
}

//Al Pulsar s0, se inactiva el sistema


if (vs0 == HIGH) {
SystAct = 0; /* Info Sistema Inactivo */
}

//Al estar activado el sistema, se realizan las sgts funciones:


if (SystAct == 1) {
if (vKM1 == 1) {
digitalWrite(KM1, HIGH); /* Enciende el Motor de Banda */
digitalWrite(h3, LOW); /* Apaga Se�al de Anomalia */

//Clasificaci�n de Piezas:

if ((vs2 == LOW) && (vs3 = HIGH) && (vs4 = HIGH)) {


if (CantA < CantMax) {
tipo = 1; /* Tipo A */
CantA++; /* Aumenta la cantidad de Piezas A para Conteo
*/
}
else {
tipo = 4; /* Tipo A desechada por Linea Llena */
}

}
if ((vs2 == HIGH) && (vs3 = HIGH) && (vs4 = LOW)) {
if (CantB < CantMax) {
tipo = 2; /* Tipo B */
CantB++; /* Aumenta la cantidad de Piezas B para Conteo */
}
else {
tipo = 4; /* Tipo A desechada por Linea Llena */
}
}

//Clasificaci�n de Anomalias:

if ((vs2 == HIGH) && (vs3 = HIGH) && (vs4 = HIGH)) {


tipo = 3; /* Anomalias a Reciclar */
}
if ((vs2 == HIGH) && (vs3 = LOW) && (vs4 = HIGH)) {
tipo = 3; /* Anomalias a Reciclar */
}
if ((vs2 == LOW) && (vs3 = HIGH) && (vs4 = LOW)) {
tipo = 3; /* Anomalias a Reciclar */
}
if ((vs2 == LOW) && (vs3 = LOW) && (vs4 = HIGH)) {
tipo = 3; /* Anomalias a Reciclar */
}
if ((vs2 == HIGH) && (vs3 = LOW) && (vs4 = LOW)) {
tipo = 3; /* Anomalias a Reciclar */
}

// Acci�n al haber Anomalias:

if (tipo == 3) {
vKM1 = 0; /* Desactiva vKM1, para frenar la banda */
}

if (((tipo == 0) || (tipo = 4)) && (vs7 == HIGH)) {


CantR++; /* Al activarse nuevamente, continua el conteo de piezas
"R" */
}

}
else {
digitalWrite(KM1, LOW); /* Apaga el Motor de Banda */
if (tipo == 3) {
digitalWrite(h3, HIGH); /* Enciende LED de Anomalia */
}
}

/* Se�al luminosa de Vias A Llena */


if (CantA > CantMax) {
digitalWrite(h1, HIGH); /* Enciende LED de Llenado A */
}
else {
digitalWrite(h1, LOW); /* Apaga LED de Llenado A */
}

/* Se�al luminosa de Vias A Llena */


if (CantB > CantMax) {
digitalWrite(h2, HIGH); /* Enciende LED de Llenado B */
}
else {
digitalWrite(h2, LOW); /* Apaga LED de Llenado A */
}

//Finales de Carrera de Posici�n:

if ((vs5 == HIGH) && (vbs2 == 1) && (vbs3 == 1) && (vbs4 == 0)) {


tipo = 1;
}
if ((vs6 == HIGH) && (vbs2 == 0) && (vbs3 == 1) && (vbs4 == 1)) {
tipo = 2;
}

// Bandeja de CD's A
if (vs10 == HIGH) {
vKM1 = 1; /* Activa Motor de Banda */
vbs8 = 0; /* Desactiva Booleano de enclavamiento s8 */
vbs10 = 1; /* Activa Booleano de enclavamiento s10 */
tipo = 0; /* Reset del clasificador */
digitalWrite(KM2, LOW); /* Desactiva Motor en giro de Salida BCD A */
}
if (vbs10 == 1) {
while (vbs8 == 0) {
digitalWrite(KM3, HIGH); /* Activa Motor en giro de Entrada BCD A */
}
}
vs8 = digitalRead(s8); /* Lee Final de Bandeja A Adentro */
if (vs8 == HIGH) {
vbs10 = 0; /* Desactiva Booleano de enclavamiento s10 */
vbs8 = 1; /* Activa Booleano de enclavamiento s8 */
digitalWrite(KM3, LOW); /* Desactiva Motor en giro de Entrada BCD A */
}

if ((vbs8 == 1) && (tipo == 1)) { /* Detiene la Banda y Activa BCDs A cuando


hay pieza tipo 1*/
while (vbs10 == 0) {
vKM1 = 0; /* Detiene Banda despues de Clasificar*/
digitalWrite(KM2, HIGH); /* Activa Motor en giro de Salida BCD A */
}
}
/* Bandeja de CD's B */
if (vs11 == HIGH) {
vKM1 = 1; /* Activa Motor de Banda */
vbs9 = 0; /* Desactiva Booleano de enclavamiento s9 */
vbs11 = 1; /* Activa Booleano de enclavamiento s11 */
tipo = 0; /* Reset del clasificador */
digitalWrite(KM4, LOW); /* Desactiva Motor en giro de Salida BCD B */
}
if (vbs11 == 1) {
while (vbs9 == 0) {
digitalWrite(KM5, HIGH); /* Activa Motor en giro de Entrada BCD B */
}
}

if (vs9 == HIGH) {
vbs11 = 0; /* Desactiva Booleano de enclavamiento s11 */
vbs9 = 1; /* Activa Booleano de enclavamiento s9 */
digitalWrite(KM5, LOW); /* Desactiva Motor en giro de Entrada BCD B */
}

if ((vbs9 == 1) && (tipo == 2)) { /* Detiene la Banda y Activa BCDs B cuando


hay pieza tipo 2*/
while (vbs11 == 0) {
vKM1 = 0; /* Detiene Banda despues de Clasificar*/
digitalWrite(KM4, HIGH); /* Activa Motor en giro de Salida BCD B */
}
}

}
else {
//Al estar desactivado (Presionarse s0=STOP,o en caso de Emergencia), ocurre:
digitalWrite(KM1, LOW);
digitalWrite(KM2, LOW);
digitalWrite(KM3, LOW);
digitalWrite(KM4, LOW);
digitalWrite(KM5, LOW);
digitalWrite(h1, LOW);
digitalWrite(h2, LOW);
digitalWrite(h3, LOW);
tipo = 0;
CantA = 0;
CantB = 0;
CantMax = 4;
CantR = 0;
vKM1 = 0;
vbs8 = 0;
vbs9 = 0;
vbs10 = 0;
vbs11 = 0;
}
}

Anda mungkin juga menyukai