Fundamentos

Aquí encontrarás los fundamentos de la programación del Calliope mini.

Matriz LED

RGB-LED

Altavoz

Botón A

Botón B

Pin -

Pin +

Pin P0

Pin P1

Pin P2

Pin P3

Sensor de Movimiento

Sensor de Luz

Procesador

Micrófono

Radio

Salidas / Output
Matriz LED

La matriz LED del Calliope mini tiene 5 x 5 = 25 LEDs rojos, con los cuales no solo se pueden mostrar números y textos, sino también imágenes y animaciones. Los monitores más grandes funcionan de manera similar, pero los puntos de luz, también llamados píxeles, están mucho más densamente empaquetados.

Mostrar texto

Se pueden mostrar letras individuales o palabras y frases completas. En Open Roberta se puede configurar si el texto se muestra como caracteres individuales o se desplaza a través de la pantalla como una animación. En MakeCode, el texto se desplaza automáticamente por la pantalla LED si es más largo que una letra.

MakeCode Python Scratch vertical_align_bottom


Mostrar números

Se pueden mostrar dígitos individuales o números más grandes con decimales. En Open Roberta se puede configurar si los números más grandes se muestran como dígitos individuales o se desplazan por la pantalla como una animación. En MakeCode, los números que tienen más de un dígito se desplazan automáticamente como una animación.

MakeCode Python Scratch vertical_align_bottom

Mostrar símbolos

Se pueden seleccionar y mostrar símbolos e imágenes predefinidos en la matriz LED.

MakeCode Python

Mostrar imágenes propias

Para los símbolos propios, los puntos de luz individuales se pueden encender o apagar individualmente.

MakeCode Python Scratch vertical_align_bottom

RGB-LED

El RGB-LED puede iluminarse en

diferentes colores. Más exactamente en 256^3 = 16,7 millones de colores, ya que los diferentes colores se mezclan aditivamente a partir de tres colores primarios, que en programación tienen un rango de valores de 0-255. La mezcla de colores aditiva se basa en el concepto de que casi cualquier color se puede componer de los tres colores rojo, verde y azul. El negro se muestra cuando la suma es 0, es decir, todos los LEDs están apagados, y el blanco cuando todos los LEDs están al máximo. Los colores secundarios amarillo, cian y magenta se mezclan respectivamente a partir de solo dos colores. Por ejemplo, el amarillo se compone solo de verde y rojo y tiene el valor RGB (255, 255, 0). El Calliope mini V3 tiene tres RGB-LEDs incorporados. Todos pueden iluminarse en un solo color o en diferentes colores.

MakeCode Python Scratch vertical_align_bottom

Altavoz

El Calliope mini puede reproducir música y sonidos con su altavoz piezoeléctrico incorporado. Un altavoz piezoeléctrico se basa en el efecto piezoeléctrico, derivado del griego antiguo piezein, que significa presionar o empujar. Cuando se aplica un voltaje eléctrico al material, este se deforma al ritmo de la frecuencia. Así, una señal de audio compuesta por diferentes frecuencias se puede convertir en ondas sonoras. El mismo principio funciona a la inversa como un micrófono.

MakeCode Python Scratch vertical_align_bottom
Entradas / Input
Botón - A, B, AB

En todos lados de nuestra vida encontramos botones que debemos presionar para activar acciones y funciones, por ejemplo, un teclado de PC, un controlador de juego o los botones de una máquina expendedora. Un botón funciona de manera similar a un interruptor, solo que este cierra el circuito mientras el botón está presionado. El Calliope mini tiene dos botones: A y B. Presionados simultáneamente, también pueden proporcionar una tercera opción de entrada: A + B.

MakeCode Python Scratch vertical_align_bottom


Touchpins - P0, P1, P2, P3

Los touchpins son pines de entrada/salida (I/O) que son ideales para cerrar un circuito con los dedos o conectar pinzas de cocodrilo. En el hexágono del Calliope mini hay un total de cuatro touchpins, numerados del P0 al P3, así como un pin de más y un pin de menos. Tanto los pines como el pin de más proporcionan una tensión de 3,3 voltios. Es importante tocar el pin de menos para activar los pines (o puedes cambiar la propiedad programáticamente, entonces también funciona sin el pin de menos). Todos los pines son digitales. Los pines P1 y P2 también son analógicos, lo que permite controlar servomotores o emitir valores analógicos de un potenciómetro. El Calliope mini V3 tiene un touchpin adicional en la parte trasera: el logotipo dorado táctil. Este logotipo táctil también funciona sin tocar el pin de menos.

MakeCode Python Scratch vertical_align_bottom

Sensores
Sensor de Movimiento y Posición

El sensor de movimiento y posición incluye un acelerómetro, un giroscopio y un magnetómetro (brújula). Esto permite que el Calliope mini, por ejemplo, mida en qué posición se encuentra y en qué dirección y con qué fuerza se mueve.

Gestos

Los diferentes gestos con los que se mueve, sacude, etc., el Calliope se pueden recuperar como eventos en el entorno de programación respectivo.

MakeCode Python Scratch vertical_align_bottom

Acelerómetro

Se puede medir una aceleración o desaceleración precisa utilizando el acelerómetro. Los valores se indican en milésimas de la aceleración de la gravedad (fuerza g) y se pueden recuperar para los 3 ejes x, y, z, así como la magnitud total. La magnitud corresponde a la longitud total de todos los vectores de fuerza y se puede calcular con el teorema de Pitágoras: √(x²+y²+z²). Ten en cuenta que la gravedad siempre actúa como una fuerza de atracción y también es detectada por el acelerómetro.

MakeCode Python Scratch vertical_align_bottom

Giroscopio

Con el giroscopio se puede medir la posición o rotación de los dos ejes x e y en grados (°). Una rotación del eje X se llama cabeceo y una rotación del eje Y se llama balanceo. Si colocas el Calliope mini sobre una mesa y dibujas una línea entre el Pin 0 y el Pin 3, ese es el eje X. Entre el puerto USB y el borde opuesto entre el Pin 1 y el 2, se encuentra el eje Y.

MakeCode Python Scratch vertical_align_bottom

Brújula

El magnetómetro integrado puede medir la fuerza magnética del campo magnético terrestre y así funcionar como una brújula. La dirección se da en grados (°). El norte está a 0°, el este a 90°, el sur a 180° y el oeste a 270°.

MakeCode Python Scratch vertical_align_bottom

Sensor de Luz

Los diodos emisores de luz (LED) no solo pueden emitir luz, sino también capturar la luz como fotodiodos. La matriz LED del Calliope mini también es el sensor de luz, que puede medir la luz ambiental. Esto permite que el Calliope mini detecte diferencias de brillo entre interiores y exteriores o entre día y noche. El brillo se emite en un rango de valores diferente en cada editor. En Open Roberta en porcentajes del 0 al 100 y en MakeCode en 8 bits del 0 al 255.

MakeCode Python Scratch vertical_align_bottom


Procesador

Sensor de Temperatura

El procesador tiene un sensor de temperatura incorporado que mide la temperatura del procesador. Con una pequeña conversión, también se puede medir la temperatura ambiental aproximada con el Calliope mini. La temperatura se da en grados Celsius (°C).

MakeCode Python Scratch vertical_align_bottom

Tiempo de Ejecución

El tiempo de ejecución nos da el tiempo que ha transcurrido desde el inicio del programa. Tan pronto como se presiona "reset" en el Calliope mini y el programa se reinicia, el tiempo de ejecución se restablece a 0. A diferencia de las pausas, el tiempo de ejecución permite trabajar con intervalos sin bloquear la ejecución del procesador. Esto se llama código "no bloqueante". Muchas funciones en MakeCode como el bucle infinito ya consideran el principio de la paralelización del flujo del programa. El tiempo de ejecución es muy preciso y se puede dar tanto en microsegundos (μs), que es una millonésima de segundo, como en milisegundos (ms), que es una milésima de segundo.

MakeCode Python Scratch vertical_align_bottom


Micrófono / Sensor de Volumen

El micrófono MEMS puede medir el volumen. En Open Roberta Lab, va del 0 al 100 por ciento y en MakeCode del 0 al 255.

MakeCode Python Scratch vertical_align_bottom


Radio

El Calliope mini tiene una pequeña antena que puede emitir y recibir ondas electromagnéticas. Este soporta dos servicios de transmisión inalámbrica: radio, que permite enviar mensajes entre diferentes Calliope mini, y Bluetooth, que permite que el Calliope mini se conecte con otros dispositivos como teléfonos y tabletas para transmitir datos o ser programado. Solo se puede activar un servicio a la vez. La radio puede transmitir a través de diferentes grupos/canales que se establecen en la programación. Solo los Calliope mini en el mismo grupo de radio pueden comunicarse entre sí.
En el editor de MakeCode, la extensión de radio debe cargarse por separado. En "Extensiones" debes seleccionar el paquete "radio".

Enviar valores

Se pueden enviar números, textos y valores lógicos (Open Roberta). En MakeCode también se puede enviar un par de valores que consiste en un nombre y un número.

MakeCode Python

Recibir valores

Los valores se pueden recibir y recuperar cuando los Calliope mini están en el mismo grupo/canal de radio.

MakeCode Python
Comandos y Funciones
Secuencia

Una secuencia es la forma más simple de una instrucción. El programa sigue exactamente tus instrucciones de arriba hacia abajo.

Python

Inicio

La función de inicio está incluida en muchos editores y define qué se debe ejecutar una sola vez al inicio del programa. Es como la entrada y acceso al programa. Al igual que en un juego o evento en la vida real, las reglas y condiciones del flujo del programa se definen previamente en variables.

MakeCode

Pausa

Al programar, las pausas son importantes para que la computadora se detenga brevemente. Esto puede ser importante para que, por ejemplo, una pantalla de color se vea más tiempo antes de que el programa continúe ejecutándose. Sin embargo, la pausa también detiene todo el programa durante ese período. Si se deben realizar otras tareas durante ese tiempo, como reproducir un sonido mientras el LED parpadea en un intervalo, es recomendable usar el tiempo de ejecución.

MakeCode Python Scratch vertical_align_bottom

Bucles

En programación, un bucle es una estructura de control. Repite instrucciones indefinidamente o hasta que se cumpla una condición de interrupción.

Siempre / repetir indefinidamente

El bucle "indefinido" asegura que una instrucción se ejecute continuamente. Esto es importante en la programación para que ciertas secciones del código se ejecuten continuamente. Para programar programas en curso sin condición de interrupción, como juegos, proyectos interactivos o mediciones de sensores, este bloque es indispensable.

MakeCode Python Scratch vertical_align_bottom

Repetir x veces

Las instrucciones dentro del bucle se ejecutan tantas veces como se indique.

MakeCode Python Scratch vertical_align_bottom

Repetir hasta / mientras

El bucle "Repetir hasta" ejecuta una instrucción hasta que se cumple una condición de interrupción. Una condición de interrupción debe ser un valor booleano o una afirmación lógica que pueda ser verdadera o falsa. Un ejemplo sería hacer que el LED parpadee hasta que la temperatura descienda por debajo de 10 grados. "Mientras" es el opuesto de "Repetir hasta". El código se ejecuta mientras la condición sea verdadera. "Repetir hasta" funciona al revés. El código se ejecuta mientras una condición sea falsa, y se interrumpe cuando es verdadera.

MakeCode Python Scratch vertical_align_bottom

Repetir para índice de a

Este bucle incrementa un índice para un rango de valores definido y lo pone a disposición como variable local dentro del bucle. El bucle comienza en el valor de inicio y se interrumpe al alcanzar el valor más alto. Es útil, por ejemplo, para contar con el valor del índice o para recuperar valores de una lista.

MakeCode Python Scratch vertical_align_bottom

Lógica

Con los bloques de lógica se controla el flujo del programa y puede conducir a diferentes resultados según la entrada. La lógica se basa en el álgebra booleana, en la que dos estados/valores de verdad (verdadero y falso, o 1 y 0) se combinan y conducen a diferentes resultados. Estas combinaciones lógicas forman la base de los circuitos de transistores en los procesadores y la electrónica digital.

Operadores lógicos/booleanos

Existen operadores lógicos como negación (no), conjunción (y), disyunción (o) y comparaciones como mayor que (>), menor que (<) e igual a (=). Con los operadores lógicos se pueden devolver valores de verdad como verdadero y falso.

MakeCode Python Scratch vertical_align_bottom


Instrucción condicional

La instrucción condicional, conocida como bloque "Si, entonces" o "Si, hacer", solo ejecuta una sección si se cumple una condición. Un ejemplo sería encender el RGB-LED solo si la temperatura supera los 20 grados. El LED permanece rojo incluso si la temperatura vuelve a bajar de 20 grados. Una bifurcación proporciona una sección alternativa del programa con "si no" que se ejecuta si la condición no se cumple o es falsa. En el ejemplo del LED, podrías apagarlo si está por debajo de 20 grados.

MakeCode Python

Si, entonces / si no

La segunda forma de una bifurcación múltiple se puede imaginar como una estructura de árbol. Se prueba la primera condición. Si es verdadera, se va a la siguiente rama con la siguiente condición. Si es falsa, se interrumpe la bifurcación y no se prueban más condiciones. El orden es crucial aquí. En los editores de programación, se pueden agregar múltiples condiciones haciendo clic en el "+".

MakeCode Python Scratch vertical_align_bottom

Matemáticas

Un procesador procesa solo dos estados 0 y 1 / encendido y apagado, pero con una unidad aritmético-lógica (ALU) basada en circuitos de transistores, se realizan operaciones matemáticas en un abrir y cerrar de ojos. Así, el Calliope mini también se puede usar como calculadora en el sistema decimal y resolver tareas matemáticas y lógicas complejas.

Operadores aritméticos

Con operadores aritméticos como adición (+), sustracción (-), multiplicación (*) y división (/), se devuelven números que pueden ser negativos o positivos y tener decimales.

MakeCode Python Scratch vertical_align_bottom

Modulo / Resto de División

El operador modulo (%) devuelve el resto de una división entre dos números y puede ser útil para encontrar números pares (i%2), generar un patrón repetitivo de números o, por ejemplo, obtener los valores X de los LEDs en la cuadrícula 5x5 (i%5).

MakeCode Python Scratch vertical_align_bottom

Azar

Se elige un número aleatorio dentro de un rango de valores definido. El azar juega un papel importante en la programación de juegos, pero también en la encriptación de datos. Cuando en la vida real se lanza un dado, el resultado es difícil de predecir debido a muchas influencias físicas, aunque en teoría sería posible. Como las computadoras funcionan de manera predecible (determinista), es decir, producen el mismo resultado para una entrada determinada, el azar a veces se genera a partir de datos físicos y aleatorios, como la presión de teclas, sonidos ambientales, posición, etc.

MakeCode Python Scratch vertical_align_bottom

Variables

Las variables en programación son como "contenedores" en los que un programa puede almacenar un valor de datos, como un número, una cadena de texto o un símbolo. Una variable se puede consultar y modificar. Por ejemplo, la puntuación en un juego se almacena en una variable y se puede consultar y modificar constantemente.

MakeCode Python Scratch vertical_align_bottom

Listas

Las listas son un tipo de dato que puede contener múltiples números, textos, valores booleanos o incluso imágenes. Los valores de una lista se pueden recuperar y procesar en bloque usando bucles.

Añadir valores

Se pueden añadir valores a una lista al final, al principio o en la posición del índice, o reemplazarlos.

MakeCode Python Scratch vertical_align_bottom

Recuperar valores

Todos los valores de una lista se pueden recuperar y leer usando el índice en un bucle.

MakeCode Python Scratch vertical_align_bottom

Funciones

Las funciones son como bloques de programa autodefinidos que se pueden reciclar y reutilizar, y con los cuales un programa más complejo se puede estructurar en subprogramas. También se pueden imaginar como una máquina que cumple una función específica, como dice la palabra.

Función / Procedimiento

Un procedimiento solo desplaza el código del programa a otro lugar y se puede recuperar tantas veces como se llame a la función (por ejemplo, en un bucle).

MakeCode Python Scratch vertical_align_bottom

Función con parámetro de entrada

Una función con parámetro de entrada es más flexible porque puede procesar diferentes valores de entrada localmente y generar una salida individual. Por ejemplo, se puede escribir una función para el parpadeo del corazón y establecer el número de veces que el LED debe parpadear como parámetro.

MakeCode Python Scratch vertical_align_bottom

Función con valor de retorno

Una función con valor de retorno se puede imaginar como una máquina que produce un producto o producto intermedio. El valor de retorno es un tipo de dato, como un número o un valor booleano, y se puede usar nuevamente como entrada.

MakeCode Python