Está en la página 1de 12

#include <Servo.

h> // incluimos la libreria para sevomotores

Servo servoEntrada; // declaramos servo para controlar entrada estacionamiento

Servo servoSalida; // declaramos servo para controlar salida estacionamiento.

int sensorEntrada = A0;

int sensorSalida = 12;

const int a = 3; // segmento A del display en el pin como salida 3

const int b = 2; // segmento B del display en el pin como salida 2

const int c = 7; // segmento C del display en el pin como salida 7

const int d = 6; // segmento D del display en el pin como salida 6

const int e = 8; // segmento E del display en el pin como salida 8

const int f = 4; // segmento F del display en el pin como salida 4

const int g = 5; // segmento G del display en el pin como salida 5

const int botonIncremento = 9; // declaramos pin 13 como entrada del sensor infrarojo
para aumentar los cupos.

const int botonDecremento = 13; // declaramos pin 9 como la salida para controlar el servo
de la entrada del estacionamiento

const int tiempoAntirebote = A1; // constante para evitar el rebote del sensor en m7s
int cuenta = 9; // cupos maximos permitidos en el estcionamiento

int estadoBotonIncremento; // declaramos constante para guardar el estado del sensor


para aumentar cupos

int estadoBotonAnteriorIncremento; // declaramos constante para guardar el estado anterior


del display

int estadoBotonDecremento; // declaramos constante para guardar el estado del sensor


para disminuir los cupos

int estadoBotonAnteriorDecremento; //declaramos constante para guardar el estado anterior


del display

boolean antirebote(int pin) {

int contador = 0;

boolean estado;

boolean estadoAnterior;

do {

estado = digitalRead(pin);

if(estado != estadoAnterior) {

contador = 0;

estadoAnterior = estado;

else {
contador = contador + 1;

delay(1);

} while(contador < tiempoAntirebote);

return estado;

void actualizarNumero() {

switch(cuenta) {

case 0: // numero cero

digitalWrite(a, HIGH); // segmento A del display, salida en estado alto

digitalWrite(b, HIGH); // segmento B del display, salida en estado alto

digitalWrite(c, HIGH); // segmento C del display, salida en estado alto

digitalWrite(d, HIGH); // segmento D del display, salida en estado alto

digitalWrite(e, HIGH); // segmento E del display, salida en estado alto

digitalWrite(f, HIGH); // segmento F del display, salida en estado alto

digitalWrite(g, LOW); // segmento G del display, salida en estado bajo

break;
case 1: // numero uno

digitalWrite(a, LOW); // segmento A del display, salida en estado bajo

digitalWrite(b, HIGH); // segmento B del display, salida en estado alto

digitalWrite(c, HIGH); // segmento C del display, salida en estado alto

digitalWrite(d, LOW); // segmento C del display, salida en estado bajo

digitalWrite(e, LOW); // segmento C del display, salida en estado bajo

digitalWrite(f, LOW); // segmento C del display, salida en estado bajo

digitalWrite(g, LOW); // segmento C del display, salida en estado bajo

break;

case 2:

digitalWrite(a, HIGH); // 2

digitalWrite(b, HIGH);

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

break;
case 3:

digitalWrite(a, HIGH); // 3

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

break;

case 4:

digitalWrite(a, LOW); // 4

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

break;
case 5:

digitalWrite(a, HIGH); // 5

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

break;

case 6:

digitalWrite(a, HIGH); // 6

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

break;
case 7:

digitalWrite(a, HIGH); // 7

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

break;

case 8:

digitalWrite(a, HIGH); // 8

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

break;
case 9:

digitalWrite(a, HIGH); // 9

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

break;

void setup() {

pinMode(a, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento A del display

pinMode(b, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento B del display

pinMode(c, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento C del display
pinMode(d, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento D del display

pinMode(e, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento E del display

pinMode(f, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento F del display

pinMode(g, OUTPUT); // se declara el pin del arduino como salida digital para el
segmento G del display

pinMode(botonIncremento, INPUT); // se declara el pin 9 como entrada del sensor


infrarrojo para incrementar los cupos disponibles

pinMode(botonDecremento, INPUT); // se declara el pin 13 como entrada del sensor


infrarrojo para disminuir los cupos disponibles

servoEntrada.attach (10, 500, 1200); // pin 10 como salida ANALOGA del servomotor, paleta
de entrada

servoSalida.attach (11, 500, 1200); // pin 11 como salida ANALOGA del servomotor, paleta
de salida

pinMode(12, INPUT); // declaramos pin 12 como entrada para sensor infrarojo, para
servomotor de salida estacionamiento

pinMode(A0, INPUT); // declaramos pin A0 analoga como digital para entrada de


sensor infrarojo, de servo entrada estacionamiento

void loop()
{

estadoBotonIncremento = digitalRead(botonIncremento);

if(estadoBotonIncremento !=estadoBotonAnteriorIncremento) {

if(antirebote(botonIncremento)) {

cuenta++;

if(cuenta >1) {

cuenta;

estadoBotonAnteriorIncremento = estadoBotonIncremento;

sensorEntrada = digitalRead (A0);

estadoBotonDecremento = digitalRead(botonDecremento);

if(estadoBotonDecremento !=estadoBotonAnteriorDecremento) {

if(antirebote(botonDecremento)) {

cuenta--;
if(cuenta -1){

cuenta };

estadoBotonAnteriorDecremento = estadoBotonDecremento;

actualizarNumero();

{ sensorEntrada = digitalRead (A0);

sensorSalida = digitalRead (12);

if ( sensorEntrada == HIGH){

servoEntrada.write(90);

delay(500);

}
if ( sensorSalida == HIGH){

servoSalida.write(90);

delay(500);

if (sensorEntrada == LOW){

servoEntrada.write(0);

delay(500);

if (sensorSalida == LOW){

servoSalida.write(0);

delay(500);

}}}

También podría gustarte