Clases y objetos

En programación los objetos son entidades software que tienen atributos (variables) y métodos (funciones).

Todos los objetos son de una clase.

Como programadores podemos utilizar las clases y/o objetos de otros programadores o utilizar las nuestras propias.

Monta el siguiente circuito.

El código de esta práctica utiliza las clases Led y Pulsador. Abre Arduino, copia el código del programa principal y crea dos nuevas pestañas Led.h y Pulsador.h y copia las clases homónimas. Prueba el programa. Fíjate las diferencias con el que hicimos en una práctica anterior.

Piezoeléctico. Arrays y bucles for

El piezoeléctrico (buzzer en inglés) puede ser utilizado como altavoz o como micrófono.

Monta el siguiente circuito para utilizarlo como altavoz.


Copia el siguiente código y cargalo en la placa Arduino. A continuación, prueba a hacer tu propia melodía.

Un array es una lista de variables del mismo tipo. Si necesitas más ayuda puedes acudir la referencia de la plataforma online de Arduino.

El bucle for es muy empleado para recorrer todas los items de un array. Si necesitas más ayuda puedes acudir la referencia de la plataforma online de Arduino.

El piezoeléctrico puede funcionar también como microfono. Monta ahora este otro circuito

Prueba ahora este otro código.

Polímetro. LDR y termistores

Con un poco de ingenio, podemos utilizar la placa de Arduino como si fuera un polímetro.


Teniendo en cuenta la fórmula de un divisor de tensión y conociendo el valor de la resistencia R2, podemos calcular el valor aproximado de la resistencia R1.


Monta un divisor de tensión en la placa protoboard con una resistenca R2=10k Ohm y utiliza este programa para calcular el valor de la resistencia R1.

Sustituye la resistencia por una LDR o un NTC y comprueba como varía su valor cuando hay más o menos luz

Potenciometro y comunicación serie

Monta el siguiente circuito

Copia el siguiente código. Comprueba como se puede controlar la frecuencia de parpadeo actuando sobre el potenciometro.

Observa que en el código aparece la clase Serial. Esta clase sirve para comunicar la placa Arduino con el ordenador. Tiene varios métodos útiles:
  • Serial.begin() -> Establece la velocidad de comunicación. 
  • Serial.print() -> Manda información
  • Serial.println() -> Como la anterior pero con retorno de carro (creando nueva línea)
También se puede utilizar para recibir datos desde el ordenador:
  • Serial.available() -> Informa si hay datos disponibles
  • Serial.read() -> Lee datos 
Para ver los datos enviados solo hay que abrir el "monitor serie" de la aplicación Arduino. Observa que desde allí también puedes enviar datos a la placa de Arduino.

Con este otro programa, puedes apagar el LED mandando una a y volverlo a encender mandando una e

Practica LED con Pulsador

Monta el siguiente circuito


Copia el siguiente código en Arduino y comprueba como funciona.

A continuación, con el mismo circuito copia el siguiente código en Arduino y verifica su funcionamiento.

A continuación prueba este otro programa y mira como funciona.




Java. Arrays y bucle for

En el siguiente enlace tienes una solución al reto de la clase anterior.


Llamamos arrays a listas de variables del mismo tipo. La sintaxis para definir un array es la siguiente:

tipoDato [] nombreLista;

Los arrays, al igual que los objetos, hay que crearlos con la palabra reservada new. La sintaxis se muestra a continuación.

nombreLista new tipoDado [tamañoLista];

El primer elementos de la lista es el 0 y el último tamañoLista-1. La sintaxis para acceder a ellos es:

nombreLista[0] = dato1;
nombreLista[1] = dato1;
...
nombreLista[ tamañoLista-1] = datoN;

En realidad los arrays, son un tipo de objetos especiales de Java. De hecho tienen atributos. Concretamente, el atributo length informa del número de elementos del array.

tamañoLista == nombreLista.length;


En Java existen diferentes formas de realizar bucles. Una de las más utilizadas es el bucle for. Su sintaxis es la siguiente:

for (sentenciaUnicaInicial; condición; sentenciaFinalBucle) {
   //Aquí dentro se pone el código que se quiere repetir
}

Hay que tener en cuenta varias cosas:

  • sentenciaUnicaInicial, condición, sentenciaFinalBucle van separadas por punto y coma. 
  • sentenciaUnicaInicial: Se ejecuta siempre, una única vez al principicio de todo.
  • condición: Siempre que se cumple la condición (condición vale "true") se ejecutará el código que hay entre las llaves del bucle for. En caso contrario el bucle acaba.
  • sentenciaFinalBucle: Se ejecuta a continuación de la última línea de código ejecutada dentro de las llaves.
En la siguiente imagen se muestra una equivalencia con un bucle de Scratch. Fíjate como en la sentenciaUnicaInicial  se crea una variable auxiliar (se suele emplear como nombre de variable la letra i, de "iterator")


Los bucles for son ampliamente utilizados para recorrer arrays.

El siguiente ejemplo dibuja una serie de bolas
Pincha en este enlace para obtener el código.

En la práctica de hoy se pide modificar el código para:
  • Que se pinten 7 bolas
  • Que las bolas se pinten de color verde si no son tocadas con el ratón y de color rojo si son tocadas por el ratón. Recomendación: Fíjate en el código de la práctica anterior y adaptalo en esta.
  • Que las bolas aumenten de tamaño (de 10 a 12) a la vez que se pintan de rojo.

Java. Sentencia if

En esta ocasión, vamos a crear y utilizar funciones que devuelvan datos.

En esta práctica pintaremos una única cara de color negro, pero cuando se pase el ratón por encima de ella cambiará el color a azul.


Utilizaremos dos tipos de datos nuevos de Java:

  • float: Tipo de datos para número decimal
  • boolean: Tipo de datos lógico. Admite solo dos posibles valores true y false.

Además, utilizaremos condiciones
O también

Ojo: En Java, = es el operador de asignación y == el de comparación.

Puedes utilizar este código de base. Como ves, hay una función nueva, distancia(), que calcula la distancia entre dos puntos y tocandoMickey() que utilizando la anterior ha de informarnos si tenemos el ratón encima de la cara. Termina esta última función para alcanzar el reto.

Java. Funciones

En la práctica anterior utilizamos variables para poder modificar algunos aspectos del resultado final modificando solo algunos parámetros del código.

¿Qué hacemos si queremos pintar varias caras? Podemos hacer dos cosas: Replicar el código tantas veces como caras queramos pintar o crearnos una función que pinte caras y llamarla tantas veces como necesitemos.

Para declarar una función en Java se utiliza la siguiente sintáxis:

tipoDevuelto nombreFunción (tipoParametro parametro1, tipoParametro parametro2,...) {

}

Si la función no devuelve nada el tipoDevuelto debe ser void. Si la función devuelve algo se utiliza la palabra reservada return para devolver el valor. 

NOTA: En ambos casos puede aparecer la palabra return. Cuando se ejecuta la línea de código que la contiene se sale de la función.

Entre las llaves pondremos el código que queremos que haga nuestra función.

Por ejemplo:


Pintamos dos cruces en dos posiciones diferentes.

Lo que se pide en el día de hoy es modificar el código de la práctica anterior para pintar varias caras en posiciones distintas de la pantalla. Para ello, podemos implementar una función como la que sigue.



Por si te perdiste en la práctica anterior, puedes emplear este código.