Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación de un microcontrolador
Introducción Teórica
15. Del siguiente código indique con que variables podría reemplazar los números resaltados para declarar los 7
segmentos de un display como salidas:
#define seg_a 0
#define seg_b 1
#define seg_c 2
#define seg_d 3
#define seg_e 4
#define seg_f 5
#define seg_g 6
Página 1
Programación de Dispositivos – Actividad de repaso
void setup ()
{for(i=0;i<=6;i++) pinMode(i,OUTPUT);}
16. Teniendo en cuenta la declaración de salidas del numeral 15. Considere el siguiente código donde la función
pretende apagar en sentido antihorario cada uno de los segmentos de un display. Explique por qué el código no
funciona correctamente en la implementación e indique que debe modificar para obtener el funcionamiento
correcto.
void giro_antihorario(void){
unsigned char i;
for(i=seg_f;i>=seg_a;i--){
digitalWrite(i,HIGH);
if(i==seg_a) digitalWrite(seg_f,LOW);
else digitalWrite (i-1, LOW);
delay(retardo); //congela el uC 150ms=150000us=150000000ns (1 instrucción=62.5ns)
}}
17. El siguiente código implementa una función que enciende una secuencia de leds en las salidas digitales de un
microcontrolador. Escriba nuevamente el código con menor cantidad de líneas (sugerencia: usar la función for).
void led_onoff(int caso){ //La función led_onoff() es de ejecución por llamada
if (caso==0){
digitalWrite (LED1, HIGH); // 1er caso : leds ON
digitalWrite (LED2, HIGH);
digitalWrite (LED3, HIGH);
digitalWrite (LED4, HIGH);
digitalWrite (LED5, HIGH);
} else if (caso==1) {
digitalWrite (LED1, LOW); // 2do caso : led 1 ON el resto OFF
digitalWrite (LED2, LOW);
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
digitalWrite (LED5, LOW);
} else {
digitalWrite (LED1, HIGH); // 3er caso : impares OFF pares ON
digitalWrite (LED2, LOW);
digitalWrite (LED3, HIGH);
digitalWrite (LED4, LOW);
digitalWrite (LED5, HIGH);}}
Página 2