Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 1 de 9
FACULTAD DE INGENIERÍA
ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA DE SISTEMAS
LABORATORIO SESION-12
Tema: Circuitos Digitales y compuertas Lógicas.
Integrantes:
a.- …………………….
b.-………………………..
1.- A partir del siguiente circuito:
Actividad: Realizar La simulación en TinkerCAD y grabar en Arduino, simular y adjuntar link
más evidencias de fotos y video demostrativo de operación de cada circuito armado desde el
circuito de PROGRAMA-01 HASTA EL PROGRAMA-11.
Desarrollo:
………..
PROGRAMA-01:
int valor;
void setup()
{ pinMode(A0,INPUT); pinMode(11,OUTPUT); }
void loop()
{valor=analogRead(A0);//Valor=[0..1023]
digitalWrite(11,HIGH);delay(valor);
digitalWrite(11,LOW);delay(valor);
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 2 de 9
PROGRAMA-02:
int tiempo=200; //declara una variable
//como entero y de valor 200
void setup() { //comienza la configuración
pinMode(6,OUTPUT);pinMode(7,OUTPUT);
pinMode(8,OUTPUT);pinMode(9,OUTPUT); } //fin setup
void loop() { //Inicio bucle principal Prog
//Desplaza Derecha a Izquierda
digitalWrite(6,HIGH); delay(tiempo);
digitalWrite(6,LOW); delay(tiempo);
digitalWrite(7,HIGH); delay(tiempo);
digitalWrite(7,LOW); delay(tiempo);
digitalWrite(8,HIGH); delay(tiempo);
digitalWrite(8,LOW); delay(tiempo);
digitalWrite(9,HIGH); delay(tiempo);
digitalWrite(9,LOW); delay(tiempo);
//Desplaza Izquierda a Derecha
digitalWrite(9,HIGH); delay(tiempo);
digitalWrite(9,LOW); delay(tiempo);
digitalWrite(8,HIGH); delay(tiempo);
digitalWrite(8,LOW); delay(tiempo);
digitalWrite(7,HIGH); delay(tiempo);
digitalWrite(7,LOW); delay(tiempo);
digitalWrite(6,HIGH); delay(tiempo);
digitalWrite(6,LOW); delay(tiempo);
} //fin loop
PROGRAMA-03:
int tiempo; //declara una variable
//como entero y de valor 200
void setup() { pinMode(A0,INPUT);
pinMode(6,OUTPUT);pinMode(7,OUTPUT);
pinMode(8,OUTPUT);pinMode(9,OUTPUT); } //fin setup
void Derecha(){//Desplaza Derecha a Izquierda
digitalWrite(6,HIGH); delay(tiempo);
digitalWrite(6,LOW); delay(tiempo);
digitalWrite(7,HIGH); delay(tiempo);
digitalWrite(7,LOW); delay(tiempo);
digitalWrite(8,HIGH); delay(tiempo);
digitalWrite(8,LOW); delay(tiempo);
digitalWrite(9,HIGH); delay(tiempo);
digitalWrite(9,LOW); delay(tiempo); }
void Izquierda(){//Desplaza Izquierda a Derecha
digitalWrite(9,HIGH); delay(tiempo);
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 3 de 9
digitalWrite(9,LOW); delay(tiempo);
digitalWrite(8,HIGH); delay(tiempo);
digitalWrite(8,LOW); delay(tiempo);
digitalWrite(7,HIGH); delay(tiempo);
digitalWrite(7,LOW); delay(tiempo);
digitalWrite(6,HIGH); delay(tiempo);
digitalWrite(6,LOW); delay(tiempo);}
void loop() { //Inicio bucle principal Prog
tiempo=analogRead(A0);// tiempo recibe valores desde [0..1023]
Derecha();
Izquierda();
} //fin loop
PROGRAMA-04:
int tiempo,SW1; //declara una variable
//como entero y de valor 200
void setup() { pinMode(A0,INPUT);pinMode(2,INPUT);
pinMode(6,OUTPUT);pinMode(7,OUTPUT);
pinMode(8,OUTPUT);pinMode(9,OUTPUT); } //fin setup
void Derecha(){//Desplaza Derecha a Izquierda
digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,HIGH);
delay(tiempo);
digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,LOW);
delay(tiempo);
digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,LOW);
delay(tiempo);
digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,HIGH);digitalWrite(9,HIGH);
delay(tiempo);
}
void Izquierda(){//Desplaza Izquierda a Derecha
digitalWrite(9,HIGH); delay(tiempo);
digitalWrite(9,LOW); delay(tiempo);
digitalWrite(8,HIGH); delay(tiempo);
digitalWrite(8,LOW); delay(tiempo);
digitalWrite(7,HIGH); delay(tiempo);
digitalWrite(7,LOW); delay(tiempo);
digitalWrite(6,HIGH); delay(tiempo);
digitalWrite(6,LOW); delay(tiempo);}
void loop() { //Inicio bucle principal Prog
tiempo=analogRead(A0);// tiempo recibe valores desde [0..1023]
SW1=digitalRead(2);
if(SW1==HIGH)
{Derecha();}
else
{Izquierda();}
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 4 de 9
} //fin loop
PROGRAMA-05:
int tiempo,SW1,n; //declara una variable
//como entero y de valor 200
void setup() { pinMode(A0,INPUT);pinMode(2,INPUT);
for (n=6;n<10;n++) { pinMode (n, OUTPUT);
} //fin for
} //fin setup
void Derecha(){//Desplaza Derecha a Izquierda
for (n=6;n<10;n++) {
digitalWrite (n, HIGH);delay (tiempo);
digitalWrite (n, LOW);delay (tiempo); } //fin for
}
void Izquierda(){//Desplaza Izquierda a Derecha
for (n=9;n>5;n--) {
digitalWrite (n, HIGH);delay (tiempo);
digitalWrite (n, LOW);delay (tiempo); } //fin for
}
void loop() { //Inicio bucle principal Prog
tiempo=analogRead(A0);// tiempo recibe valores desde [0..1023]
SW1=digitalRead(2);
if(SW1==HIGH)
{Derecha();}
else
{Izquierda();}
} //fin loop
PROGRAMA-06:
int tiempo,SW1,n; int leds[]={6,7,8,9};// Declara variables
void setup() { pinMode(A0,INPUT);pinMode(2,INPUT);
for (n=0;n<4;n++) { pinMode (leds[n], OUTPUT);
} //fin for
} //fin setup
void Derecha(){//Desplaza Derecha a Izquierda
for (n=0;n<4;n++) {
digitalWrite (leds[n], HIGH);delay (tiempo);
digitalWrite (leds[n], LOW);delay (tiempo); } //fin for
}
void Izquierda(){//Desplaza Izquierda a Derecha
for (n=3;n>=0;n--) {
digitalWrite (leds[n], HIGH);delay (tiempo);
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 5 de 9
digitalWrite (leds[n], LOW);delay (tiempo); } //fin for
}
void loop() { //Inicio bucle principal Prog
tiempo=analogRead(A0);// tiempo recibe valores desde [0..1023]
SW1=digitalRead(2);
if(SW1==HIGH)
{Derecha();}
else
{Izquierda();}
} //fin loop
PROGRAMA-07:
int tiempo,SW1,SW2,n; int leds[]={6,7,8,9};// Declara variables
void setup() { pinMode(A0,INPUT);pinMode(2,INPUT);
for (n=0;n<4;n++) { pinMode (leds[n], OUTPUT);
} //fin for
} //fin setup
void Secuencia01(){//Desplaza Derecha a Izquierda
for (n=0;n<4;n++) {
digitalWrite (leds[n], HIGH);delay (tiempo);
digitalWrite (leds[n], LOW);delay (tiempo); } //fin for
}
void Secuencia02(){//Desplaza Izquierda a Derecha
for (n=3;n>=0;n--) {
digitalWrite (leds[n], HIGH);delay (tiempo);
digitalWrite (leds[n], LOW);delay (tiempo); } //fin for
}
void Secuencia03(){//Desplaza Derecha a Izquierda
digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,HIGH);
delay(tiempo);
digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,LOW);
delay(tiempo);
}
void Secuencia04(){//Desplaza Izquierda a Derecha
digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,HIGH);digitalWrite(9,LOW);
delay(tiempo);
digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,HIGH);
delay(tiempo);
}
void loop() { //Inicio bucle principal Prog
tiempo=analogRead(A0);// tiempo recibe valores desde [0..1023]
SW1=digitalRead(2);SW2=digitalRead(3);
if(SW2==LOW && SW1==LOW)
{Secuencia01();}
if(SW2==LOW && SW1==HIGH)
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 6 de 9
{Secuencia02();}
if(SW2==HIGH && SW1==LOW)
{Secuencia03();}
if(SW2==HIGH && SW1==HIGH)
{Secuencia04();}
} //fin loop
PROGRAMA-08:
int led1=6; int led2=7;
int led3=8; int led4=9;
void turn_off() { //Apaga los 3 LEDS
digitalWrite(led1, LOW);digitalWrite(led2, LOW);
digitalWrite(led3, LOW);digitalWrite(led4, LOW); }
void setup() {
pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);pinMode(led4,OUTPUT);
turn_off(); } //
void loop(){
int val= analogRead(A0); //VAL ESTA ENTRE [0..1023]
turn_off();//apaga los LED
// Si el valor de la señal medida es > 204 enciende LED del LED1
if (val>= 204) digitalWrite(led1, HIGH);
// Si el valor de la señal medida es > 408 enciende LED del LED2
if (val>= 408) digitalWrite(led2, HIGH);
// Si el valor de la señal medida es > 612 enciende LED del LED3
if (val>= 612) digitalWrite(led3, HIGH);
// Si el valor de la señal medida es > 816 enciende LED del LED4
if (val>= 816) digitalWrite(led4, HIGH);
}
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 7 de 9
CIRCUITO PARA MEDIDAS DE NIVELES
PROGRAMA-09:
int leds[]={2,3,4,5,6,7,8,9};
void turn_off() { //Apaga los LEDS
for (int n=0;n<8;n++) { digitalWrite (leds[n], LOW); } }
void setup()
{ [Link](9600); [Link]("Es una Medida Analogica:");
pinMode(A0,INPUT);
for (int n=0;n<8;n++) { pinMode (leds[n], OUTPUT); }
turn_off(); }
void loop()
{ [Link]("Sensor Resistivo: ");
[Link](analogRead(A0));
int val;
// lee el valor de la señal analógica
val= analogRead(A0);
turn_off(); //apaga los tres LED
// Si el valor de la señal medida es > 204 enciende LED del PIN8
if (val>= 113) digitalWrite(leds[0],HIGH);
if (val>= 226) digitalWrite(leds[1],HIGH);
if (val>= 339) digitalWrite(leds[2],HIGH);
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 8 de 9
if (val>= 452) digitalWrite(leds[3],HIGH);
if (val>= 565) digitalWrite(leds[4],HIGH);
if (val>= 678) digitalWrite(leds[5],HIGH);
if (val>= 791) digitalWrite(leds[6],HIGH);
if (val>= 904) digitalWrite(leds[7],HIGH);
}
CIRCUITO CON DISPLAY
PROGRAMA-10:
int tiempo,A=1,B=2,C=3,D=4,E=5,F=6,G=7,DP=8;
void setup()
{pinMode(A,OUTPUT);pinMode(B,OUTPUT);pinMode(C,OUTPUT);
pinMode(D,OUTPUT);pinMode(E,OUTPUT);pinMode(F,OUTPUT);
pinMode(G,OUTPUT);pinMode(DP,OUTPUT);pinMode(A0,INPUT); }
void cero()
{digitalWrite(A, HIGH);digitalWrite(B, HIGH);
digitalWrite(C, HIGH);digitalWrite(D, HIGH);
digitalWrite(E, HIGH);digitalWrite(F, HIGH);
digitalWrite(G, LOW);digitalWrite(DP, HIGH); }
void uno()
{digitalWrite(A, LOW);digitalWrite(B, HIGH);
digitalWrite(C, HIGH);digitalWrite(D, LOW);
digitalWrite(E, LOW);digitalWrite(F, LOW);
digitalWrite(G, LOW);digitalWrite(DP, LOW); }
void dos()
{digitalWrite(A, HIGH);digitalWrite(B, HIGH);
digitalWrite(C, LOW);digitalWrite(D, HIGH);
digitalWrite(E, HIGH);digitalWrite(F, LOW);
digitalWrite(G, HIGH);digitalWrite(DP, LOW); }
void tres()
Código : ECD
Versión : 01
ELECTRONICA Y CIRCUITOS DIGITALES Fecha :
09/05/2023
Página : 9 de 9
{digitalWrite(A, HIGH);digitalWrite(B, HIGH);
digitalWrite(C, HIGH);digitalWrite(D, HIGH);
digitalWrite(E, LOW);digitalWrite(F, LOW);
digitalWrite(G, HIGH);digitalWrite(DP, LOW); }
void loop()
{ tiempo=analogRead(A0);
cero();delay(tiempo); uno();delay(tiempo);
dos();delay(tiempo); tres();delay(tiempo); }
TAREA DE RETO
PROGRAMA-11:
En base al circuito anterior hacer que realice 4 secuencias de conteo diferentes:
1.- Conteo ASCENDENTE: 0,1,2,3,4,5,6,7,8,9,0,1,2,………….
2.- Conteo DESCENDENTE: 9,8,7,6,5,4,3,2,1,0,9,8,7…………
3.- Conteo PAR: 0,2,4,6,8,0,2,……
4.- conteo IMPAR: 1,3,5,7,9,1,3,……………