You are on page 1of 11

2016

ROBOTICA

INTEGRANTES:
- MUSAYON DURAND, JUAN
- ROSADO PEREZ, ANGHELO
- VILELA LLATAS, FRANKLIN
SEMESTRE:
2016 – I
DOCENTE: BERNARDO NUÑEZ
ROBOTICA
Objetivo:
Realizar un circuito que muestre el conteo de 0 a 99, al presionar un pulsador
deberá detenerse, y al presionar el otro pulsador continuará el conteo.
Materiales:
- 1 Arduino Uno
- 11 resistencias:
o 9 resistencias de 1kΩ (para los 7 segmentos y transistores)
o 2 resistencias de 10kΩ (para pulsadores)
- 2 pulsadores
- 2 displays (7 segmentos – cátodo común)
- 2 transistores NPN
- 1 protoboard
- Cables

Funcionamiento:
Se utilizaron los pines digitales 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13 del ARDUINO
UNO. Los pines del 2, 3, 4, 5, 6, 7, 8 corresponden a los segmentos a, b, c, d, e,
f, g de los 2 displays (7 segmentos – cátodo común) respectivamente. Los pines
10 y 11 se utilizaron para los pulsadores siendo el pin 10 para dar inicio al conteo
o continuar el conteo y el pin 11 para detener el conteo. Los pines 12 y 13 se
utilizaron para los transistores, siendo el pin 13 para dar continuidad a las
unidades y el pin 12 para dar continuidad a las decenas.
Se utilizaron también el GND y 5v del ARDUINO UNO para dar funcionamiento
correcto a los 2 pulsadores y a los 2 transistores.
Se utilizaron los 2 transistores 2N2222 (NPN) que se conmuta por una salida
digital para habilitar cada display en su turno, elegimos el buen nivel valor de la
resistencia de que es 1K, lo que nos permite estar seguros de que el transistor
actúa como un interruptor que está siempre totalmente encendido o totalmente
apagado.
En tanto a los 2 pulsadores, el que se conecta al pin 10 al presionarlo nos permite
dar por comenzado el conteo así como también nos permitirá reiniciar el conteo
desde el numero donde se quedó, cuando antes se hubiese presionado el
pulsador que se conecta al pin 11, el conteo llegara al número 99 y se detendrá
hasta volver a presionar el pulsador que se conecta del pin 10.
Circuito:

Diagrama:
Código:
int inicio=1; // variable para el botón de inicio
int parada=1; // variable para el botón de parada
int activar_boton_inicio=1; // activa botón de inicio con "1" desactiva con "0"
int activar_boton_parada=0; // activa botón de parada con "1" desactiva con
"0"
int activar_incremento=0; // activa incremento del contador con "1" desactiva
con "0"

int retardo=30; // tiempo que dura encendido cada 7 seg (10 mili segundos)
int var=0; // Valor del digito que se va a desplegar por el 7 seg.
int unidad=0; // cuenta las unidades (derecha)
int decena=0; // cuenta las decenas (izquierda)
int conmutador=0; // multiplexación de uno a otro 7 segmentos
int cont=0; // contador de ciclos de espera para cambiar de numero
void setup() {
pinMode(2, OUTPUT); //seg a
pinMode(3, OUTPUT); //seg b
pinMode(4, OUTPUT); //seg c
pinMode(5, OUTPUT); //seg d
pinMode(6, OUTPUT); //seg e
pinMode(7, OUTPUT); //seg f
pinMode(8, OUTPUT); //seg g

pinMode(13, OUTPUT); // activa digito 1 derecha (unidad)


pinMode(12, OUTPUT); // activa digito 2 izquierda (decena)

pinMode(10, INPUT); // botón de inicio


pinMode(11, INPUT); // botón de parada
}
void loop() {

inicio=digitalRead(10); // lee el estado del botón de inicio


parada=digitalRead(11); // lee el estado del botón de parada

delay(retardo); // tiempo que dura encendido cada 7seg antes de


cambiar al otro

if (inicio==0){ // si oprime botón de inicio el cronometro inicializa en


00
if((decena==9) && (unidad==9)){ // entra si llega a la cuenta 99
if(activar_boton_inicio==1){ // si está activado el botón de inicio
unidad=0;
decena=0;
activar_boton_inicio=0; // desactiva botón de inicio
activar_boton_parada=1; // activa botón de parada
activar_incremento=1; //desactiva el incremento del contador
}
}else{ // entra si la cuenta es menor que 99
if(activar_boton_inicio==1){ // si está activado el botón de inicio
activar_boton_inicio=0; // desactiva botón de inicio
activar_boton_parada=1; // activa botón de parada
activar_incremento=1; //desactiva el incremento del contador
}
}
}
if (parada==0){ // si oprime botón parada
if(activar_boton_parada==1){ // si está activado el botón de parada
activar_boton_parada=0; // desactiva botón de parada
activar_boton_inicio=1; // activa botón de inicio
activar_incremento=0; //desactiva el incremento del contador
}
}

if(activar_incremento==1){ // si está activo el incremento del contador


cont++; // incrementa el contador de ciclos en Uno

if((decena==9) && (unidad==9)){ // entra si la cuenta es 99 para poder parar


la cuenta.
if(activar_boton_parada==1){ // si está activado el botón de parada
activar_boton_parada=0; // desactiva botón de parada
activar_boton_inicio=1; // activa botón de inicio
activar_incremento=0; //desactiva el incremento del contador

}
}

if (cont==10){ // cada cuanto tiempo (ciclos)cambia un numero


cont=0;// inicializa el contador de ciclos
unidad=unidad+1; // incrementa la unidad, primer 7seg
if (unidad >= 10){ // cuando la unidad llegue a 10 incrementa la
decena
decena=decena+1; // incrementa la decena, segundo 7seg
unidad=0; // regresa la unidad a cero
if (decena>=10){ // cuando la decena llegue a 10 se inicializa a cero
decena=0;
}
}
}

if (conmutador == 0) { // hace la multiplexación conmutando entre los dos


7seg izq y der
digitalWrite(13, 1); // enciende el derecho
digitalWrite(12, 0); // apaga el izquierdo
var=unidad; // iguala la variable que escribe el numero en el 7seg al
valor de la unidad
conmutador=1; // cambia el conmutador para que en el siguiente ciclo
cumpla la otra condición

}
else{
digitalWrite(13, 0); // apaga el derecho
digitalWrite(12, 1); // enciende el izquierdo
var=decena; // iguala la variable que escribe el numero en el 7seg
al valor de la decena
conmutador=0; // cambia el conmutador para que en el siguiente
ciclo cumpla la otra condición
}

switch (var) {
case 1: //escribe en el 7seg el numero 1
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
break;
case 2: //escribe en el 7seg el numero 2
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 1);
break;
case 3: //escribe en el 7seg el numero 3
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
break;
case 4: //escribe en el 7seg el numero 4
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 5: //escribe en el 7seg el numero 5
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 6: //escribe en el 7seg el numero 6
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 7: //escribe en el 7seg el numero 7
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
break;
case 8: //escribe en el 7seg el numero 8
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 9: //escribe en el 7seg el numero 9
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 0: //escribe en el 7seg el numero 0
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
break;
default:
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
}
}

You might also like