Está en la página 1de 15

ÍNDICE:

Práctica 1 3

Practica 2 4

Práctica 3 5

Práctica 4 6

Práctica 5 7

Práctica: 6 9

Práctica: 7 11

Práctica: 8 12

Práctica: 9 13

Práctica: 10 14

Durante las prácticas se utilizarán estos números pertenecientes al NIA:

A B C D F

E 8

8 1 7 1 2

2
Práctica 1
Diseñar un programa que encienda el led 13 de nuestra placa. El led deberá estar
encendido durante X segundos que corresponden a los dígitos del NIA y apagado ½
segundo entre cada encendido. Como resultado si el NIA es 817128, el led deberá
estar encendido 8 segundos, apagado ½ segundo, encendido 1 segundo, apagado ½
segundo y así con todos los números del nia.

El código inicializa con la función setup (la cual solo se ejecutará una vez), dentro de esta
función se define el pin que se va a utilizar y cómo se va a usar (si como output o input). En
este caso se pide el pin 13, el cual tiene incorporado un led, y se va a utilizar como output.

Seguidamente se genera la función “encenderLed” que recibe el número X del NIA. Dentro de
la función “encenderLed” se define la variable “espera” que es el número X del NIA
multiplicado por 1000 (debido al paso de segundos a milisegundos). Tras esto se utiliza la
función digitalWrite para encender el led, utilizando delay se consiguen los segundos que el
número “espera”,definido anteriormente, indica debe estar encendido el led. Una vez pasado
este tiempo de encendido, se vuelve a utilizar la función digitalWrite, para esta vez para
apagar el led, como antes se vuelve a utilizar el delay para indicar el tiempo de apagado del
led (siempre será ½ segundo, o lo que es lo mismo 500 milisegundos).

Para finalizar, se utiliza la función loop (la cual se ejecuta continuamente) y dentro de esta
función definimos 6 veces,una por cada número del NIA, la función “encender led”, de tal
forma que por cada número del NIA se ejecutará la función “encenderLed” con su encendido
de X (número del NIA*1000) segundos y su apagado de ½ segundo. Repitiendose así
infinitamente

3
Practica 2
Diseñar un programa que encienda un led en su máxima intensidad, que de forma
progresiva baje su intensidad durante X (número equivalente al F del NIA) segundos
hasta que se apague y que seguidamente permanezca apagado durante X (número D
del NIA) segundos.

En esta práctica se debe utilizar un pin que cuente con una salida PWM para poder trabajar
con una salida analógica y por tanto elegir el voltaje que pasa por el led.

El código inicializa con la función “setup” y definiendo el pin 11 como output.

Seguidamente empieza la función “loop” y dentro de esta se encuentra la función


“analogWrite”, donde se utiliza el pin 11 y los 255 niveles que indican que el led está
encendido, a continuación iniciamos el bucle “for” indicando que inicializa en el nivel más alto
255, con una condición de que sea mayor o igual que 0 y que va decreciendo. Mientras va
decreciendo de nivel en nivel entre cada nivel hay un “delay” cuyo valor es F del
NIA*1000/Frecuencia ((8*1000)/255=31.37), aprox. 31 milisegundos. Todo esto ocurre
mientras se cumpla la condición de bucle “for”.

Cuando no se cumpla, el led habrá llega a su nivel más bajo y seguidamente de llegar a este
nivel se aplica un “delay” de un valor (D del NIA)* 1000. Una vez terminado vuelve a empezar
la función “loop”, así infinitamente.

4
Práctica 3
Diseñar un programa que encienda un led y que la iluminación de este vaya
cambiando de forma aleatoria y suave con el tiempo. Se debe utilizar la función
random(), esta función dará un número aleatorio que esté en un intervalo que se
haya elegido.

El código inicializa con la función “setup”

Seguidamente se define la variable brillo será el nivel de intensidad. Después dentro del
“loop” se crea un bucle for que tenga como variable el brillo y que debe estar entre 0 y 255,
además utilizando la función “random” a la variable citada anteriormente se le sumará o
restará 10 unidades. A continuación dentro el bucle for se hay dos if que hacen que el brillo
esté entre 0 y el 255.

Para finalizar se usa la función “analogWrite()” para encender el led con el nivel de intensidad
de la variable y después un delay de 40 milisegundos.

5
Práctica 4
Diseñar un programa que cree un generador de una señal triangular donde el
periodo sea F*C (números del NIA) milisegundos. Se deberán usar las funciones
“SerialPlotter()” y “delayMicroseconds()”.

Primero, se calcula el periodo con el que se va a trabajar, siendo este caso de 56


milisegundos. Este es el tiempo que tarda la señal en llegar desde su punto más alto hasta su
punto más bajo, es decir, en recorrer toda la amplitud. En este programa se ha elegido 255
porque es la máxima que se puede alcanzar.

Después se pasan los milisegundos del periodo a microsegundos y se dividen entre la


amplitud para obtener el tiempo que hay entre cada cambio de nivel para que se cumpla con
el periodo requerido “Tbaja”.

Por último, introducimos dos bucles “for”, uno para la subida de la señal y otro para la bajada.
El primer bucle, el de bajada, recorre los niveles de intensidad desde el 255 hasta llegar al
0, utilizando un delay de “Tbaja” microsegundos entre cada cambio.
El segundo bucle, el de subida, será lo mismo que el de bajada, pero recorriendo los niveles
del 0 al 255.
Para ver dibujada la señal en el serial plotter utilizamos el Serial.println().

6
Práctica 5
Diseñar un programa que lea por teclado una secuencia de letras. Cuando encuentre
un “I”, encienda el led , cuando encuentre una “k” se apague el led , cuando encuentre
una “j” aumente el brillo del led “E” (número del NIA) unidades y si encuentra “h” lo
reduzca “F” (número del nia) unidades.

7
El código inicializa con la función “setup”.
Seguidamente se crea una variable llamada “intensidad”, que determinará la intensidad con
la que brillará el led. Después, dentro del “loop” se crea otra variable “i” y se crea una lista, la
variable contará los caracteres, mientras que la lista los almacenará.
Consecutivamente se crea un “while”, el cual se ejecutará si hay datos por leer (gracias al
Serial.available()) y por el que se irán introduciendo la lista “s” (gracias al Serial.read()). Luego
el bucle “for” recorre todos los elementos de la lista.
Para finalizar, mediante el uso de varios “if”, se logra que se analicen cada uno de los
elementos, haciendo que si este es 0 se salga del bucle con un “break”, y cómo se pide en el
enunciado, si hay una “l” la intensidad del led será de 255, si hay una “k” la intensidad será
de 0, si hay una “j” se sumarán 2 unidades a la intensidad y si hay una “h” se restarán 8
unidades a la intensidad.

8
Práctica: 6
Diseñar un programa al que le introduzca una cadena de texto desde el teclado y
muestre la misma cadena, pero donde aparezcan repetidas todas las vocales.

9
El código inicializa con el “setup” y con el puerto serial a 115200 baudios.
Seguidamente comienza el “loop” dentro se crea una variable “i” y una lista “s”, con la
finalidad de que la variable sirva para contar los caracteres y que la lista los contenga.
Después se crea un “while”, el cual se ejecutará si hay datos por leer (gracias a
“Serial.available()”), y se introducen los datos en la lista s (gracias al Serial.read()).

Cuando todos los datos están dentro de la lista “s” se recorrerá cada elemento de
está con un bucle “for”. Cuando se llega al final del “string” analizado, se sale del bucle “for”
gracias a un “break” que hay dentro de un “if”, que se ejecutará si se encuentra el carácter de
final de string 0.

Para finalizar, tras el “if” se imprime cada el elemento de la lista que se está analizando en
cada momento con un Serial.print(), en caso de que este sea una vocal, esta se volverá a
imprimir gracias a los 5 “if” que hay al final del código, teniendo cada uno la función de
repetir cada una de las vocales.

10
Práctica: 7
Diseñar un programa que al introducir una lista de números separados por espacios
(en este caso), devuelva la diferencia entre el primer valor y el resto. (La lista tiene
longitud variable)

El código inicializa con el “setup” y con el puerto serial a 115200 baudios.

Seguidamente comienza el “loop” dentro se crea una variable “i” y una lista “s”, con la
finalidad de que la variable sirva para contar los caracteres y que la lista los contenga.

Después se crea un “while”, el cual se ejecutará si hay datos por leer (gracias a
“Serial.available()”), y se introducen los datos en la lista “s” (gracias al Serial.read())
A continuación, dentro del “if”, se separa cada elemento del string que esté separado por un
espacio con la función “strtok”. Después se pasa cada elemento de “”string” a “float” con
la función “atof”. Luego el bucle “while”, recorrerá la cadena y cuando se encuentre un
elemento “NULL” se sustituirá por un espacio. Para finalizar, se convierte estos valores a float
y restamos al primero los elementos posteriores.

11
Práctica: 8
Diseñar un programa que pida un número por pantalla e imprima un triángulo de
números con las mismas filas y columnas que el valor introducido.

El código inicializa con el “setup” y con el puerto serial a 115200 baudios.


Seguidamente comienza el “loop” dentro, introducimos 2 bucles “while”. EL primer bucle
“while” no tendrá nada, de tal forma que no se salga del bucle si no hay datos por leer. El
segundo bucle “while”, una vez se hayan introducido los datos, se saldrá del primer bucle y
se entrará a este con el fin de que este recoja todos los datos “int” con la función
“Serial.parseInt()”.
A continuación, cuando haya un número se creará el triángulo. Primero se crea un bucle “for”
que nos hará cambiar de fila del triángulo y que repetirá “w” veces (w es el número
introducido). Después dentro del bucle “for”, se crean 2 bucles “for”. El primero para que
coloque los espacios que hay en cada fila. El segundo se encargará de escribir los números y
que se repetirá 2*x-1 veces por fila siendo x el número de fila.

12
Práctica: 9
Diseñar un programa que calcule el volumen de un cono, el programa deberá el
siguiente diálogo con el usuario

El código inicializa con el “setup” y con el puerto serial a 115200 baudios.


A continuación, se crean 4 variables float que son el radio de la base, la altura, el número pi y
el volumen resultante del cono.
Después, con un “Serial.print” se inicia el primer diálogo con el usuario (Introduzca el radio
de la base). Seguido se crea un bucle “while” sin nada para que se permanezca en este bucle
hasta que se introduzca un dato.
Seguidamente se crea otro bucle “while”, el cual se ejecuta cuando haya datos por leer.
Dentro de este bucle se pone un “Serial.read” para que se lean todos los datos. A
continuación, se imprime el dato del radio.
La altura del cono seguirá el mismo procedimiento que se ha explicado para el radio.
Para finalizar, con los datos ya recogidos, se puede calcular el volumen del cono.

13
Práctica: 10
Escriba un programa que imprima por pantalla todos los números primos inferiores
a un valor dado por teclado.

Para comenzar, inicialmente esta práctica “pide un número” y seguidamente se guarda en


una variable como se ha hecho en las prácticas anteriores, en caso de que el número sea
negativo saltará un mensaje de que “este número debe de ser positivo” y el usuario tendrá
que introducir otro número positivo.

Luego se calculan los números primos menores al número recogido, para ello se crea una
lista donde se meterán estos números primos. Luego se calcula el número de divisores que

14
tienen cada uno de los números inferiores al dado, conforme se encuentran divisores se
introducen en la lista. Mientras se van encontrando cada número primo se va imprimiendo
por pantalla separándolos por una coma.

15

También podría gustarte