Pico Bricks Pico Bricks es una placa con sensores y actuares básicos integrados para hacer proyectos maker Introducción Objetivos y contenidos Objetivos Conocer las posibilidades didácticas del kit Picobricks Pico Ser capaz de realizar proyectos dando opción a programar en bloques o en código, dependiendo de la etapa educativa que imparte el docente. Sentar las bases para realizar proyectos STEAM con este kit Contenidos SOLO SE EXIGIRÁ EL DOMINIO DE UN LENGUAJE DE LOS CUATRO MOSTRADOS DOS LENGUAJES DE BLOQUES GRÁFICO (PicoBlocky y Microblocks) Y DOS LENGUAJES DE CÓDIGO (Python y Arduino IDE) Introducción ¿Qué es Pico Bricks? Proyectos a realizar PROYECTO BLINK PROYECTO ACTION-REACTION PROYECTO Autonomous Lighting PROYECTO Thermometer PROYECTO Graphic Monitor PROYECTO Dominate the Rhythm PROYECTO Show Your Reaction PROYECTO My Timer PROYECTO Alarm Clock PROYECTO Know Your Color PicoBlocky Interface Conexión Dos formas de ejecutar los programas Proyectos Algo diferente PROYECTO IR Microblocks Instalación Proyectos Aldo diferente Data Graph Micropython con Thonny Instalación Algo diferente: Apagar y encender por Wifi Arduino IDE Conexión con Arduino IDE Proyectos Proyectos con Wifi ¿Qué es Pico Bricks? Pico Bricks pertenece a las placas electrónicas con sensores y actuadores básicos integrados, pero también preparado para poner externos y así poder hacer proyectos maker. Hardware Placa microcontroladora : Raspberry pi Pico W. Sensores o entradas Botón Sensor Temperatura y Humedad Potenciómetro Sensor IR con mando LDR Actuadores o salidas OLED Screen Led rojo RGB Led Relé Driver motor Buzzer ¿Qué es la Raspberry Pi Pico W? Es una placa controladora con las siguientes características: ( adaptado de  Bricogeek Licencia CC-BY ) Chip RP2040:  Un microcontrolador con un procesador ARM Cortex-M0 de doble núcleo funcionando a 133 MHz. Este es el corazón de la placa y le da su potencia. Memoria : 264 KB de RAM SRAM y 2 MB de memoria Flash. Aunque no es tanto como un Raspberry Pi tradicional, es más que suficiente para la mayoría de los proyectos de microcontroladores. Conectividad : 2.4GHz Wifi 802.11n Pines : 26 pines GPIO (General Purpose Input Output), de los cuales muchos son multifunción, incluyendo UART, SPI, I2C, PWM, y pines analógicos (ADC). Alimentación : Puede funcionar con una fuente de alimentación de entre 1.8V y 5.5V, lo que la hace versátil para distintas fuentes de energía, como baterías o conexiones USB. Interfaz de programación: Puedes programarla usando C/C , MicroPython, o el Arduino IDE, lo que la hace- extremadamente accesible para la comunidad de makers.                                                                                                           P: ¿Qué diferencia tiene con respecto a otros microcontroladores? R: Con respecto al de las placas Arduino UNO y similares (Atmegaxxx...) es más potente, permite la programación MicroPython, y sobre todo  tiene wifi incorporado P: ¿Igual que el ESP32? R: No, el ESP32 tiene el Bluetooh y el Raspberry Pi Pico W NO.  P: Entonces... ¿Cuál es mejor?¿el ESP32 o Raspberry Pi Pico W? R: Pues si tus proyectos no necesitan Bluetooth, ni sensores de tacto que tiene el ESP32, el Raspberry Pi Pico W es muy buena opción pues sólo cuesta 8€, además Raspberry tiene PIO (Programable Input/Output) que permite visualizar en pantallas VGA +info Importante : Tienes que localizar el botón BOOTSEL que lo hablaremos en este curso Fuente Datasheet Pico W https://datasheets.raspberrypi.com/picow/pico-w-datasheet.pdf Pines GPIO Intentamos que los proyectos que se muestran no necesites componentes externos, con los que hay en Picobricks sobra. Pero enseñamos algún proyecto que con un componente externo barato y fácilmente conseguible, que nos parece interesante. Para conectar estos componentes, es necesario que sepas los pines GP, la alimentación y la masa dónde están : Fuente CC-BY https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html Software Puede programarse con multitud de plataformas de código o de bloques gráficos Fuente https://picobricks.com/products/raspberry-pi-pico-w-kit ¿Qué software se va a utilizar en este curso? Vamos a ver cuatro programas pertenecientes a dos formas de programar : PROGRAMACIÓN POR BLOQUES adecuado para primaria y primeros cursos de secundaria PICOBLOCKLY perteneciente a los 4 programas de Pico Bricks IDE MICROBLOCKS de software libre, multi tarjeta y popularmente extendido PROGRAMACIÓN POR CÓDIGO adecuado para secundaria THONNY IDE con el lenguaje micropython ARDUINO IDE con el lenguaje de código Arduino (C++) ¿Cuál es el recomendable? Para programación con bloques: PICOBLOCKLY de Pico Bricks IDE que es un software propio y tiene unos tutoriales muy cómodos (en inglés), aunque si ya trabajas con Microblocks , sigue con él, pues es muy potente si quieres trabajar con código, el que quieras: Si estas acostumbrado al Python,  MicroPython con Thonny, Si ya trabajas con ArduinoIde puedes seguir trabajando con PicoBricks Opciones de compra Fuente Pico Bricks IDE Book CC-BY-SA https://picobricks.com/pages/idebook ver créditos Picobricks se venden en muchas tiendas y con muchas opciones y accesorios. Tienes que tener en cuenta que : 👌 Lo más barato es ... Pack básico imprescindible:  Ultra-lab 57 € Kubii 50€ comprar solo la placa  unos 35€ Curiosamente en la web sale la foto sin el microcontrolador Raspberry Pi Pico W. En Catedu lo hemos comprado y han venido con el microcontrolador correctamente. 😕  No obstante comprar sólo el microcontrolador  Raspbery Pico W aparte cuesta unos 8.60€ si buscas en otros sitios, lo puedes encontrar más barato pero ojo que este soldado los pines para poderlos insertar en el socket de la placa Picobrkicks OJO No viene con cable. Vale un cable de datos de USB de móvil micro USB, unos 2€ el cable Si le añades un sensor distancia HC-SR04  2€ y un servo 2.20€ y mando IR, unos 2€ y a tienes un kit completísimo 😍 Y si le añades el kit de coche pues permite la conexión de dos motores  11€ ya es el novamás ❤️❤️❤️❤️ 😒Lo más cómodo es .... Comprar kits ya hechos ver https://picobricks.com/collections En el caso de que te venga sin el microcontrolador Rasperry Pi Pico W, es muy fácil conectarlo : Fuentte Microblocks Wiki Proyectos Vamos a ver los siguientes proyectos y vamos a ver que se pueden desarrollar de cuatro formas diferentes: PROGRAMACIÓN POR BLOQUES adecuado para primaria y primeros cursos de secundaria PICOBLOCKLY perteneciente a los 4 programas de Pico Bricks IDE MICROBLOCKS de software libre, multi tarjeta y popularmente extendido PROGRAMACIÓN POR CÓDIGO adecuado para secundaria THONNY IDE con el lenguaje micropython ARDUINO IDE con el lenguaje de código Arduino (C++) Los proyectos son PROYECTO BLINK https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Blink PROYECTO ACTION-REACTION https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Action-Reaction PROYECTO Autonomous Lighting https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Autonomous%20Lighting PROYECTO Thermometer https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Thermometer PROYECTO Graphic Monitor https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Graphic%20Monitor PROYECTO Dominate the Rhythm https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Dominate%20the%20Rhythm PROYECTO Show Your Reaction https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Show%20Your%20Reaction PROYECTO My Timer https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/My%20Timer PROYECTO Alarm Clock https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Alarm%20Clock PROYECTO Know Your Color https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Know%20Your%20Color PROYECTO Buzz Wire Game https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Buzz%20Wire%20Game Además de algún proyecto que creemos que completa la formación en este robot. Hay más proyectos en  https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities pero implican usar actuadores y sensores externos pero interesantes y fáciles de conseguir y baratos, por ejemplo un servo, un sensor de distancia ultrasónico, etc.. Mentirijilla : el proyecto   Buzz Wire Game haría falta unos simples cables El mismo repositorio facilita los proyectos ordenándolos de  más fácil a más dificil dificultad,  marcamos los que vamos a dar en este curso - Blink - Action-Reaction - Autonomous Lighting - Thermometer - Graphic Monitor - Dominate the Rhythm - Show Your Reaction - My Timer - Alarm Clock - Know Your Color - Magic Lamp - Smart Cooler - Buzz Wire Game - Dinosaur Game - Night and Day - Voice Controlled Robot Car - Two Axis Robot Arm - Smart House - Piggy Bank - RFID Smart Door - Automatic Trash Bin - Digital Ruler -Air Piano - Maze Solver Robot - Smart Greenhouse Libros Project Book Un libro completo (en inglés) que lo puedes conseguir aquí https://picobricks.com/pages/projectbook que pena que no tiene licencia CC IDEBOOK Este libro esta especializado en realizar proyectos con el software PICOBRICKS IDE lo puedes conseguir aquí https://picobricks.com/pages/idebook y sí que tiene licencia CC Teacher Book Con 20 actividades STEM, https://picobricks.com/pages/education No es descargable, pero puedes solicitarlo gratis en contacto https://picobricks.com/pages/contact-information-picobricks Pensamiento computacional ¿Dónde encaja Picobricks dentro de la oferta de equipos robóticos para la educación? Cómo puedes ver entra tanto en primaria como secundaria gracias a sus dos modos de programación: Programación en bloques (Primaria) Programación en código (Secundaria) Unido al bajo precio y a las prestaciones que tiene con actuadores y sensores, es un buen producto con buena relación calidad/precio Guía orientativa Tenemos un grupo Telegram Robótica Educativa en Aragón , https://t.me/roboticaeducativaaragon Lenguaje de programación El Picobricks se puede programar  Por bloques  Por código  Guía de los lenguajes de programación para robots Tenemos un grupo Telegram Robótica Educativa en Aragón , https://t.me/roboticaeducativaaragon PicoBlockly Cuatro programas a elegir Si entramos en http://rbt.ist/ide podemos ver cuatro opciones PICOJR Pensado para programar Picobriks con bloques para etapas de 8 a 10 años con un  mínimo de instrucciones Fuente Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook  ver  créditos PicoBlockly Es la opción más recomendada para la mayoría de las etapas Fuente Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook  ver  créditos PicoPy Para poder editar en Python, no lo intentes por aquí, no va. Para trabajar con Python se trabaja con Thommy que lo trataremos en este curso. Pico simulator Es un  simulador online que permite realizar proyectos sin tener físicamente la Pico bricks Ojo el simulador no permite gestión de ficheros, es decir, no puedes ni grabar proyectos ni abrirlos, cuando cierras el navegador se pierde todo Interface Cuando abrimos Picoblockly tenemos la siguiente ventana: Fuente Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook  ver  créditos Donde encontramos las diferentes instrucciones ordenadas por categorías La paleta de instrucciones preparados para elegir y arrastrar a 7 Herramienta de zoom, borrar Menú de fichero para grabar los proyectos o abrirlos (todo localmente) Panel operaciones Botón de conectar, por cable (recomendado) o bluetooh Botón de proyectos ya preinstalados Vista de código Python (también en 6 hay una pestaña para pasar a esta vista) Menú de configuración para descargar los firmwares necesarios para la conexión Área donde programamos Start stop tu programa Área del puerto serie donde podemos ver los valores que desemos   Conexión Lo primero que tenemos que hacer es poner el firmware para podernos conectar con Picobriks P: ¿Qué es eso de "firmware"? R: No es más que un software que se graba en los chips de la placa. P ¿Y por qué se llama así, y no se llama software o programa y en paz? R: Digamos que como se graba en los chips, es un medio camino entre software y hardware, para diferenciarlo del software habitual. Entramos en el menú y descargamos el firmware ATENCIÓN, poner PicoBricks en modo Bootloader 1.-Desconectamos PicoBricks de nuestro ordenador 2.- Apretamos el botón BOOTSEL mientras lo volvemos a conectar al puerto USB 3.- Automáticamente aparecerá una nueva unidad de disco en nuestro ordenador (ya puedes soltar BOOTSEL) Descargamos el correspondiente al PicoW  Y LO GRABAMOS EN LA UNIDAD NUEVA en mi caso RPI-RP2 (D:)  Fuente Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Una vez grabado el firmware, esperamos a que nos salga un mensaje: Please conect to the board Entonces dar a conectar y seleccionar la placa  Una vez conectado, descargamos las librerías en el PicoBricks para poder usar todas las funciones YA ESTA, esto lo tienes que hacer  SOLO UNA VEZ  mientras uses PicoBlockly, si te pasas a otro programa y te cargas su firmware, tendrás que volverlo a poner. Dos formas de ejecutar los programas Picrobriks permite dos formas de trabajar: La forma más fácil de trabajar es  EN VIVO es decir, que los programas se ejecuten  desde nuestro ordenador es la más rápida y para ello necesita que el PicoBricks tenga el Firmware correspondiente dentro (tal y como hemos visto) La otra forma de trabajar es EN CARGA es decir que los programas se ejecutan  desde dentro de PicoBricks tiene la ventaja que el programa funciona si necesidad de ordenador. Eso sí, hay que alimentar Picobriks por el cable USB (usando un Powerbank o un cargador de móvil por ejemplo) ATENCIÓN si trabajamos EN CARGA nos "cargamos" el Firmware, por lo que si queremos volver a trabajar EN VIVO tenemos que volverlo a poner tal y como hemos visto Recomendamos EN VIVO por la rapidez y sencillez. Sólo es aconsejable EN CARGA cuando sean proyectos que precisen que el ordenador no esté. Por ejemplo en el PICO COCHE https://libros.catedu.es/books/pico-bricks/page/pico-coche Para trabajar EN VIVO tenemos que estar conectados (1) y darle al Run (2) (recuadros amarillos) Para trabajar EN CARGA entramos en archivo y cargamos el programa dentro de Picobricks (recuadro verde) Upload Python File to Board PROYECTO BLINK Extraido de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Vamos a realizar nuestro primer proyecto, parpadear el led rojo Como es un programa predeterminado, lo más cómodo es ir los tutoriales que lo explican bien Vamos al código y si apretamos en este botón, nos aparece en nuestro panel  si necesidad de hacerlo pero ojo que a veces está escondido tras la ventana, usar el zoom y navegar al dar a RUN tenemos PROYECTO ACTION-REACTION Extraido de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Ahora será con la interacción del botón. Repetimos los pasos pero con este proyecto: Resultado PROYECTO Autonomous Lighting Extraido de Pico Bricks IDE Book CC-BY-SA https://picobricks.com/pages/idebook ver créditos Lo mismo con el siguiente proyecto Resultado PROYECTO Thermometer Extraído de Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Si soplamos el aliento sobre el sensor podemos ver como sube la temperatura Recomendamos este proyecto cargarlo en el PicoBricks y así funciona autónomo sin necesidad de PC, con lo que se puede colocar en el exterior y ver la temperatura que hace simplemente alimentandolo con un PowerBank en el cable USB P: ¿No sabes cómo se carga el programa en PicoBricks? R: Porque no te has leído https://libros.catedu.es/books/pico-bricks/page/dos-formas-de-ejecutar-los-programas PROYECTO Graphic Monitor Extraido de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Resultado PROYECTO Dominate the Rhythm Extraído de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Este proyecto ya es más complejo y recomendamos importarlo desde el tutorial como siempre pues es más largo Implica la utilización de FUNCIONES Y recomendamos leer el tutorial, esta bien explicado en el libro en la página 34; Como se puede ver en el resultado, la primera vez suena la música a un ritmo número 4 pero en la segunda vez subimos con el potenciómetro al ritmo máximo 7 y la música suena más deprisa PROYECTO Show Your Reaction Extraido de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos Cuando nuestro proyecto comience a funcionar, mostraremos un mensaje de bienvenida en el OLED pantalla. A continuación imprimiremos en la pantalla lo que el usuario tiene que hacer para iniciar el juego. Para comenzar el juego, le pediremos al jugador que se prepare contando hacia atrás desde 3 en la pantalla después de presionar el botón. Después del final de la cuenta regresiva, el El LED rojo se encenderá en un tiempo aleatorio entre 2 y 10 segundos. Reiniciaremos el temporizador inmediatamente después se enciende el LED rojo. Mediremos el temporizador tan pronto como el se vuelve a pulsar el botón. Este valor que obtengamos estará en milisegundos. Mostraremos esto en la pantalla como el tiempo de reacción del jugador. Aquí he ganado pues sólo he tardado 1ms en pulsar el botón PROYECTO My Timer Extraído de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos El clásico cuenta atrás pero con la pecularidad que es fácil de programar con el potenciómetro, hasta las horas ! PROYECTO Alarm Clock Extraído de Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos   PROYECTO Know Your Color Extraido de  Pico Bricks IDE Book CC-BY-SA  https://picobricks.com/pages/idebook   ver  créditos El juego que construiremos en el proyecto se construirá en base a que el usuario conozca los colores correcta o incorrectamente. Uno de los colores rojo, verde, azul y blanco se iluminará aleatoriamente en el LED RGB de Picobricks, y el nombre de uno de estos cuatro colores se escribirá aleatoriamente en la pantalla OLED al mismo tiempo. El usuario debe pulsar el botón de Picobricks en 1,5 segundos para utilizar el derecho de réplica. El juego se repetirá 10 veces, cada repetición obtendrá 10 puntos si el usuario presiona el botón cuando los colores coinciden -10 puntos si no coinciden Después de diez repeticiones, la puntuación del usuario se mostrará en el OLED pantalla. Si el usuario lo desea, no podrá hacer uso de su derecho de réplica no pulsando el botón botón.   PROYECTO BUZZ WIRE GAME Enunciado Este juego es el típico de pasar una arandela por un cable y si toca, suena la alarma   Hardware Preparamos : un cable pelado, rígido pero fino, conectado en el GP1 (segundo agujero por arriba izquierda) y GND (tercer agujero abajo derecha) un cable normal dupond un clip unido al cable normal dupond por una regleta pequeña como en la foto. Software El programa lo tienes en los tutoriales Buzz Wire Game Resultado Este proyecto no funciona muy bien con los otros lenguajes de programación, no sé por qué Algo diferente PROYECTO IR No hay en los tutoriales ningún proyecto para usar el mando IR, luego este proyecto no pertenece a ninguno de los tutoriales que predetermina PicoBricks. Proponemos el siguiente enunciado Realizar un programa que: -si se aprieta un botón del mando IR que visualice por la pantalla OLED que ha recibido un código  - visualizará por el puerto serie el código recibido - si la tecla es OK se encenderá el led rojo Solución Resultado Por el puerto serie van apareciendo los códigos de las teclas apretadas en el mando IR y en la pantalla OLED se visualizaba que se había recibido un código y si era OK se enciende el led rojo: PICO COCHE Podemos comprar en cualquier tienda de electrónica por unos 10€ un kit de coche, por ejemplo aquí En Picobrkicks creamos un programa similar al anterior de Infrarrojos Precaución: No utilizar la instrucción señalada, bloquea nuestra Raspberry Pi Pico W, sospechamos que es para otra versión. Por lo tanto no puede dar marcha atrás Consejo: Grabarlo en la placa, y así es independiente Una vez cargado el programa en la placa Raspberry Pi pico W,   lo montamos en el coche: Ponemos alguna sujeción, en este caso he puesto una pinza, pero puede ser una goma elástica.  Conectamos los cables de los motores en los terminales verdes Si por alguna razón va al revés algún motor, intercambiar los cables Conectamos alimentación Puede ser también con el cable usb y un powerbank Apretamos el botón reset A jugar Detalle de conexión, asegúrate que los jumpers están colocados en modo DCMOTOR, es decir GP21 y GP22 tienen que estar conectados con DCMOTOR1 y DCMOTOR2 😒las pilas estaban algo gastadas ... Mapeo ¿Qué es eso de "mapeo"? En la jerga robótica, dicho pronto y mal pero para que se entienda, mapear significa hacer un cambio de escala ¿Cuándo se dan esas situaciones? SITUACION A : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255 SITUACION B : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V SITUACION C : Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255 Nota: El mínimo de 917 (puede ser otro número, es un valor experimental) es debido a que los LDR van montados en un divisor de tensión como el de la figura, y la resistencia de abajo, siempre se queda algo de tensión SITUACION D : Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) se representen en la pantalla de Scratch 2*220 por 2*180, es decir   - Eje X : el potenciómetro (vamos a llamarlo potx ) va de 0 a 1023 y la salida ( ejex ) va de -220 a 220   - Eje Y : el potenciómetro (vamos a llamarlo poty ) va de 0 a 1023 y la salida ( ejey ) va de -180 a 180 SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel ) que va 250 a 500 SITUACION F : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180 SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535 ¿Cómo se consigue mapear? Si programas con código ArduinoIDE, tienes la instrucción map Si no tienes map, por ejemplo, programas con bloques gráficos tipo Scratch, lo tienes que hacer a mano ¿Cómo? Con la ecuación de una recta Para entendernos : X  será el valor de entrada que tiene unos valores límites X 1 e X 2 Y es la variable de salida que queremos y que tiene otros valores límites Y 1  e Y 2 Luego y tiene esta ecuación : donde m es  Gráficamente  ¿Una hoja de cálculo para poder hacer esos cálculos? Sí, claro, en este enlace https://docs.google.com/spreadsheets/d/1qNbaZ2c_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing dale a descargar Rellena las casillas amarillas, y en las naranjas tienes el resultado de m y n ¿Me lo puedes hacer para cada situación anterior? Si claro: SITUACION A : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255 Límites de las variables : X de 0-1023 Y de 0-255 Con la instrucción map : Y = map( X, 0, 1023, 0, 255); Sin la instrucción map Y = 025 * X  pues 255/1023 = 0.25 también podemos escribir Y = X/4 SITUACION B : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V Límites de las variables : X de 0-1023 Y de 0-5 Con la instrucción map : Y = map( X, 0, 1023, 0, 5); Sin la instrucción map Y = 0.0048 * X  pues 5/1023 = 0.0048 o también podemos escribir Y = X/204 que queda mejor pues 1023/5=204 aprox. SITUACION C : Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255 Límites de las variables : X de 917-1023 Y de 0-255 Con la instrucción map : Y = map( X, 917, 1023, 0, 255); Sin la instrucción map Y = 2.4 * X  pues 255/(1023-917) = 2.4 SITUACION D : Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) se representen en la pantalla de Scratch 2*220 por 2*180, es decir   - Eje X : el potenciómetro (vamos a llamarlo potx ) va de 0 a 1023 y la salida ( ejex ) va de -220 a 220   - Eje Y : el potenciómetro (vamos a llamarlo poty ) va de 0 a 1023 y la salida ( ejey ) va de -180 a 180 EJEX Límites de las variables : potx de 0-1023 ejex de -220 a +220 Con la instrucción map : ejex = map( potx, 0, 1023, -220, 220); Sin la instrucción map ejex =-220 + 0.43*potx pues (220-(-220))/1023=0.43 EJEY Límites de las variables : poty de 0-1023 ejey de -180 a +180 Con la instrucción map : ejey = map( poty, 0, 1023, -180, 180); Sin la instrucción map ejey =-180 + 0.35*poty pues (180-(-180))/1023=0.35 SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel ) que va 250 a 500 EJEX Límites de las variables : acelerómetro acel de 250-500 ejex de -220 a +220 Con la instrucción map : ejex = map( acel, 250, 500, -220, 220); Sin la instrucción map ejex =-220 + 1.76*(acel-250) pues (220-(-220))/(500-250)=1.76 EJEY Límites de las variables : acelerómetro acel de 250-500 ejey de -180 a +180 Con la instrucción map : ejey = map( acel, 250 500, -180, 180); Sin la instrucción map ejey =-180 + 1.44*(acel-250) pues (180-(-180))/(500-250)=1.44 SITUACION F : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180 Límites de las variables : X de 0-1023 Y de 0-180 Con la instrucción map : Y = map( X, 0, 1023, 0, 180); Sin la instrucción map Y = 0.17* X  pues 180/1023 = 0.17 también podemos escribir Y = X/5.7 pues 1023/180=5.7 SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535 Límites de las variables : X de 0-65535 Y de 0-180 Con la instrucción map : Y = map( X, 0, 65535, 0, 180); Sin la instrucción map Y = 0.00274* X  pues 180/65535 = 0.00274 pero es más cómodo al revés Y = X/364 pues 65535/180=364 Servo Una de las aplicaciones más utilizadas de los sistemas de control por ordenador y en la robótica están asociados con los motores, que permiten accionar o mover otros componentes, como puertas, barreras, válvulas, ruedas, etc. Uno de los tipos que vamos a ver en este capítulo son lo servos, hay de dos tipos: El servomotor o servos convencionales que posee la capacidad de posicionar su eje en un ángulo determinado entre 0 y 180 grados en función de una determinada señal. Servo de rotación continua  Son servos por fuera igual que los anteriores, pero pueden girar 360º y se controlan por tiempo Por defecto cuando se dice servo , es un servomotor o servo convencional Servomotores o servos convencionales Los servos son un tipo especial de motor en el que se añade una circuito lógico electrónico que permite un control mucho más preciso que a un motor normal de corriente continua. Esto les permite posicionar el eje en un ángulo determinado.  El hardware interno se compone de un potenciómetro y un circuito integrado que controlan en todo momento los grados que gira el motor. De este modo, en nuestro caso, desde Arduino, usando las salidas digitales PWM podremos controlar fácilmente un servo. Lo ideal es conectarlo a 6V pero trabajan bien en los 5V del Arduino. Hay muchos modelos, en robótica educativa cuestan entre 1-5€, el más común es el SG90, muy barato, pero tiene muy poca fuerza, el MG90S tiene algo más, si queremos algo más, ya tiene que ser el  MG996R pero ya este modelo NO se puede conectar directamente al Arduino o Raspberry, el pico de energía que necesita, provoca el reinicio de la placa. Incluso varios pequeños SG90. Si quieres saber más, te recomendamos https://www.luisllamas.es/controlar-un-servo-con-arduino/ Ejemplos de uso de servos: Curso Arduino con código Curso brazo robótico del mClon con nanoArduino Apertura de barrera por ultrasonidos en curso Arduino con ArduinoBlocks Tractor entrando en el corral Arduino con EchidnaShield Apertura de puerta Domótica con Arduino Servo con PicoBrick Apertura ventana y puerta en Smarth Home para microbit Smart Agriculture Kit para micro:bit Enunciado Vamos a aprovechar el concepto de mapeo con el siguiente enunciado Queremos que se mueva un servo motor (ángulo de 0º a 180º) en función del potenciómetro, conectado a GP27 por lo tanto sus valores van de 0 a 65535 (que es 2 elevado a 16) Hardware Conectamos un servo en el slot correspondiente Ojo, fíjate que tienes que conectar el pin - con el marrón. Mira la foto Movemos el Jumper a la posición que conecte GP21 con Servo Mapeo Utilizaremos la situación G de mapeo https://libros.catedu.es/books/pico-bricks/page/mapeo por lo tanto dividiremos la posición del potenciómetro por 364 Software El programa es el siguiente: No utilizar esta instrucción   Resultado Te atreves a... manejar dos servos, por ejemplo con el mando a distancia de IR Relé Enunciado Buscamos un circuito que cuando haya luz, se encienda y cuando hay oscuridad se apaga. Es al revés de una luz crepuscular es decir, que cuando sea de noche se encienda y si es de día que se apague automáticamente P: ¿Por qué lo hacemos al revés?. R: Por que nos evitamos  retroalimentaciones es decir, si hay oscuridad, se enciende pero como se enciende es de día, por lo que se apaga pero como es de noche se enciende, ... etc... y comienza a hacer clack, clack, clack, clack, clack, clack, clack, clack,... P ¿Pero entonces cómo se soluciona en las luces públicas? R: El sensor LDR no se dirige a las luces a encender, o incluso con una pantalla que haga sombra. Relé Un relé es un interruptor activado por un electroimán, lo que permite independizar los circuitos. En el dibujo se ve que el circuito rojo de 220V esta separado del verde, de sólo 1.5V. Pero es el circuito verde que al funcionar, hace que el electroimán mueva el interruptor del relé y encienda la bombilla. El objetivo es que he podido encender una bombilla de 220V sin tocar los 220V peligrosos. En el circuito verde, el interruptor puede ser un Arduino. Experiméntalo en este simulador . Circuito con Picobriks ATENCIÓN , -NO RECOMENDABLE PARA PRIMARIA. -NO DEJAR A LOS ALUMNOS SOLOS CON ESTE CIRCUITO. -SE UTILIZAN TENSIONES DE 220V -EL CONECTOR VERDE DEL RELÉ ES MUY PEQUEÑO:       - los dos bordes están muy próximos, NO UTILIZAR CABLE CON HILOS peligro de que algún hilo cortocircuite       - no utilizar potencias superiores a 20W Si no quieres estos peligros , sustituye el enchufe por una pila y la bombilla doméstica por una pequeña de maquetas : El circuito que se propone es utilizar el relé para que cierre un circuito que encienda una bombilla. El circuito con los cables rojos estarían a 220V, luego  peligro !!! Programa El programa lee la intensidad luminosa y lo visualiza por la pantalla OLED. Si es inferior a 20.000 eso quiere decir que hay luz, por lo tanto que cierre el circuito. si quieres hacerlo crepuscular como es en la vida real, cambia el estado del relé pero aleja el sensor de la bombilla o pon una pantalla de sombra Resultado Sensor de distancia de ultrasonidos ¿Qué es el sensor de distancia HC-SR04? Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. No es un sensor preciso , con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato El más común es el HC-SR04 que tiene 4 pines de conexión:  VCC     Trig (Disparo del ultrasonido)    Echo (Recepción del ultrasonido) y  GND  aunque en algunos modelos como el de Elecfreaks tiene 3 pines. Integra Trig y Echo en uno sólo. La distancia se calcula con esta fórmula: Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2 Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo. Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti 😍 Ejemplos de uso: Alarma en Domótica con Arduino Piano invisible en Arduino con ArduinoBlocks ,  Sensor parking en Arduino con ArduinoBlocks Piano invisible en Arduino con mBlock Sensor parking en Arduino con mBlock Sensor de distancia de ultrasonidos con Picobricks Conexión con la Raspberry Pi Pico E Si miras https://libros.catedu.es/books/pico-bricks/page/que-es-pico-bricks verás el esquema para poder conectar los pines del HC-SR04 con la Raspberry, te lo mostramos aquí La conexión de Echo y de Trg es arbritaria, lo hemos puesto en GP14 y GP15 que es la que recomienda el programa Picobricks Enunciado Mostrar por la pantalla de OLED la distancia y a la vez que suene un radar como en los asistentes de parking de los coches Programa Para hacer el pitido intermitente en función de los centímetros del objeto, se utiliza una pausa, como la espera en cm convertirla a segundos es muy grande, se divide por 30, puedes modificar este valor a tu gusto Resultado Te atreves a... Juntar el Pico coche con un sensor de distancia de tal manera que vaya autónomo evitando los obstáculos como un romba ¿No te atreves? Pues aquí tienes la solución:         Microblocks Conexión con Microblocks Microblocks es un software extendido de uso libre para programar en bloques para diferentes placas. Se puede trabajar online o también descargarse e instalarlo localmente en el ordenador en https://microblocks.fun/ INSTALAR EL FIRMWARE ATENCIÓN al instalar el firmware de MicroBlocks  te cargas el firmware de PicoBlockly por lo tanto si quiere volver a programar con PicoBlockly tienes que poner su firmware (y viceversa) Entramos en Micrboblocks y vamos al menú de la  rueda dentada a Update firmware on board Nos vamos a RP2040 PicoW ATENCIÓN, poner PicoBricks en modo Bootloader 1.-Desconectamos PicoBricks de nuestro ordenador 2.- Apretamos el botón BOOTSEL mientras lo volvemos a conectar al puerto USB 3.- Automáticamente aparecerá una nueva unidad de disco en nuestro ordenador (ya puedes soltar BOOTSEL) Y en la siguiente pantalla volvemos a elegir RP2040 Entonces aparecerá CONECTADO el icono del USB INSTALACIÓN DE LAS LIBRERÍAS Entramos en la siguiente ruta Y entonces se instala una librería para poder manejar Picobricks PRUEBALO Microblocks trabaja en vivo, luego arrastra esta sencilla instrucción y da dos clicks  comprueba que se enciende el led rojo haz dos clicks con el selector en rojo para apagarlo PROYECTOS Los proyectos vistos con PicoBlockly se pueden hacer igual con Microblocks. Repositorio Microblocks wiki https://wiki.microblocks.fun/en/picobricks Repositorio ProyectBook Los tienes todos desarrollados paso a paso en este libro (en inglés) que lo puedes conseguir aquí  https://picobricks.com/pages/projectbook PROYECTO BLINK ver pag 23 PROYECTO ACTION-REACTION ver pag 27 PROYECTO Autonomous Lighting ver pag ver pag 31 PROYECTO Thermometer ver pag 38 PROYECTO Graphic Monitor ver pag 44 PROYECTO Dominate the Rhythm ver pag 49 PROYECTO Show Your Reaction ver pag 60 PROYECTO My Timer ver pag 68 PROYECTO Alarm Clock ver pag 78 PROYECTO Know Your Color ver pag 85 PROYECTO Buzz Wire Game ver pag 106   Al no tener licencia CC no los podemos reproducir aquí en este tutorial Algo diferente: Data Graph Microblocks tiene algo diferente a PicoBlockly y es la posibilidad de visualizar gráficamente variables Haz el siguiente programa y pulsa en Graph y verás que puedes visualizar gráficamente los valores del potenciómetro (que van de 0 a 1023)   MicroPython con Thonny Instalación de micropython ¿Dónde se instala el Micropython? Como puedes ver en este vídeo en 21:20 Python se compila  dentro del microcontrolador es decir, dentro del ESP32. A diferencia con otros lenguajes, como el C++, el ordenador tiene el compilador, y se lo da ya en binario. Fuente  vídeo Exploring the Arduino Nano ESP32 | MicroPython & IoT Fuente  vídeo Exploring the Arduino Nano ESP32 | MicroPython & IoT ¿Qué programa vamos a usar? Usaremos el Thonny  https://thonny.org/ que lo puedes descargar e instalar de esta página: https://thonny.org/ ¿Cómo se instala micropython con Thonny en Picobricks? Entramos en ejecutar-configurar intérprete Seleccionamos en ¿Qué tipo de interprete ...? le decimos que Rasbperry Pi pico y el puerto si lo sabemos lo seleccionamos o si no lo sabemos que lo detecte automáticamente ATENCIÓN, poner PicoBricks en modo Bootloader 1.-Desconectamos PicoBricks de nuestro ordenador 2.- Apretamos el botón BOOTSEL mientras lo volvemos a conectar al puerto USB 3.- Automáticamente aparecerá una nueva unidad de disco en nuestro ordenador (ya puedes soltar BOOTSEL) Entonces le damos a Instalar y lo instala en la unidad nueva que ha detectado, en el siguiente diálogo seleccionamos v ariante Raspberry pico W: Si visualizamos la ventana de archivos Podemos ver que a la hora de guardar nos pregunta si lo queremos guardar en el chip de PicoBricks o en tu ordenador ¿SABIAS QUE ...? Si lo grabas en Raspberry Pi Pico con el nombre de main.py , entonces cuando enciendas el Picobricks, se ejecutará automáticamente sin necesidad de ningún ordenador El primer programa con Python: Blink El led rojo está en el pin GPI7 tal y como lo indica en la placa Luego ponemos en el Thonny el siguiente programa from time import sleep import machine import time led = machine.Pin(7, machine.Pin.OUT) while True: led.on() time.sleep((0.5)) led.off() time.sleep((0.5)) Ejecutamos con F5 y el led parpadea como estaba previsto Otra forma de conseguir el programa es con la ventana de Python de PicoBlockly Otra manera de ver el mismo programa, está en la página 25 del libro https://picobricks.com/pages/projectbook se encuentra el mismo código pero usando la instrucción  led.toggle()   Proyectos Los mismos proyectos vistos con PicoBlockly se pueden hacer igual con código. Repositorio ide picobrkics https://ide.picobricks.com/examples/examples.ht Repositorio Github En la ruta  https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities los tienes listos los programas para copiar y pegar - Blink - Action-Reaction - Autonomous Lighting - Thermometer - Graphic Monitor - Dominate the Rhythm - Show Your Reaction - My Timer - Alarm Clock - Know Your Color Buzz Wire Game Libro Projectbook Los tienes en este libro (en inglés) que lo puedes conseguir aquí https://picobricks.com/pages/projectbook PROYECTO BLINK ver pag 25 PROYECTO ACTION-REACTION ver pag 29 PROYECTO Autonomous Lighting ver pag 35 PROYECTO Thermometer ver pag 41 PROYECTO Graphic Monitor ver pag 46 PROYECTO Dominate the Rhythm ver pag 55 PROYECTO Show Your Reaction ver pag 63 PROYECTO My Timer ver pag 71 PROYECTO Alarm Clock ver pag 81 PROYECTO Know Your Color ver pag 90 PROYECTO Buzz Wire Game ver pag 106 A diferencia de Microblocks, no los explica paso a paso, por lo que es mejor copiar y pegar de los repositorios de Github   Al no tener licencia CC no los podemos reproducir aquí en este tutorial Un proyecto diferente: Encender y apagar led por wifi En la lista de proyectos que propone PicoBricks sólo hay uno que usa la Wifi  SmartHome , pero  no utiliza la wifi de Raspberry Pi  sino que utiliza un módulo wifi ESP8266 auxiliar. Proponemos uno que no use elementos auxiliares Enunciado : Encender y apagar el led rojo conectado en GPI7 a través de una página web puesto en el servidor que se instala en la Raspberry Solución La explicación del programa está en https://peppe8o.com/getting-started-with-wifi-on-raspberry-pi-pico-w-and-micropython/ La fuente del programa en https://github.com/raspberrypi/pico-micropython-examples/blob/master/wireless/webserver.py Recuerda  que tienes que poner los datos de tu wifi en las líneas 35 y 36 import socket ################################33 import network, rp2 import time def connectWiFi(ssid,password,country): rp2.country(country) wlan = network.WLAN(network.STA_IF) wlan.config(pm = 0xa11140) wlan.active(True) wlan.connect(ssid, password) # Wait for connect or fail max_wait = 10 while max_wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break max_wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('network connection failed') else: print('connected') status = wlan.ifconfig() print( 'ip = ' + status[0] ) return status ######################################################333 from machine import Pin led = Pin(7, Pin.OUT) country = 'ES' ssid = 'pon aqui el nombre de tu wifi' password = 'pon aqui el password de tu wifi' wifi_connection = connectWiFi(ssid,password,country) #########################################################################33333 html = """ Pico W

Pico W

Current status: %s

Turn ON

Turn OFF

by peppe8o.com

""" ###################################################################### # Open socket addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] s = socket.socket() s.bind(addr) s.listen(1) print('listening on', addr) # Initialize LED status led.value(0) stateis = "LED is OFF" # Listen for connections while True: try: cl, addr = s.accept() print('client connected from', addr) request = cl.recv(1024) print(request) request = str(request)[0:50] # The [0:50] avoids getting the url directory from referer led_status = request.find('GET / HTTP') led_on = request.find('/light/on') led_off = request.find('/light/off') print( 'led on = ' + str(led_on)) print( 'led off = ' + str(led_off)) if led_status >0: print("LED status request") # No LED action if led_on >0: print("led on") led.value(1) stateis = "LED is ON" if led_off >0: print("led off") led.value(0) stateis = "LED is OFF" response = html % stateis cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n') cl.send(response) cl.close() except OSError as e: cl.close() s.close() print('connection closed') Ejecución del programa Para encender y apagar el led tienes que entrar en la IP de la Raspberry Pi, puedes verlo en la ventana del puerto serie (cónsola) que puedes ver en el programa Thonny: Otro truco es ejecutar un programa de rastreo de IPs como el Wireless Network Watcher y ver la IP de la Raspberry. O poner una IP estática ver aquí Abrimos un navegador y ponemos la IP de la Raspberry en mi caso 192.168.1.54 Si os sale el error OSError: [Errno 98] EADDRINUSE es porque no se ha cerrado bien la conexión, desconectar PicoBrikcs y volverlo a conectar y solucionado Envío de mensajes a Telegram En la anterior página, PicoBricks hacía de servidor, alojaba una página web y desde el exterior, se llamaba a su página web para encender y apagar un led. ¿y al revés? es decir, la llamada de PicoBricks a una web externa, por ejemplo la api de Telegram y así poder enviar temperatura, datos, etc.. de forma muy fácil : Primero creando un bot de Telegram y consiguiendo su Token  Segundo identificar nuestro ID de usuario a donde enviar el mensaje Tercero utilizar la instrucción urequest.get(laurl) de la librería urequests Tienes que poner en la línea 11 los datos de tu wifi Tienes que poner en la url de la línea 16: - Donde pone PONTUBOT sustitúyelo por el token del bot que has conseguido en reando un bot de Telegram y consiguiendo su Token  - Donde pone PONTUID sustitúyelo por el ID de tu usuario a donde hay que enviar el mensaje ver  identificar nuestro ID de usuario a donde enviar el mensaje ## extraido del proyecto action-reaction https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities/Action-Reaction from machine import Pin#to acces the hardware picobricks led = Pin(7,Pin.OUT) #### initialize digital pin as an output for led push_button = Pin(10,Pin.IN,Pin.PULL_DOWN) ### initialize digital pin 10 as an input ##### extraido de página 21 de https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf ##### Connecttonetwork import network wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect('PONTUWIFI', 'PONTUCONTRASEÑAWIFI') # Make GET request import urequests def mandarmensaje(): r = urequests.get("http://api.telegram.org/botPONTUBOT/sendMessage?chat_id=PONTUID&text=APRETADO") print(r.status_code) # redirectsto https #print(r.content) r.close() #### while loop ####################################### while True: logic_state = push_button.value();#button on&off status if logic_state == True:#check the button and if it is on led.value(1)#turn on the led mandarmensaje() else: led.value(0)#turn off the led #### end while loop ################################### Hay que dejar apretado unos segundos el botón para que funcione: Arduino IDE Conexión con Arduino IDE El software Arduino IDE lo puedes descargar en https://www.arduino.cc/ Una vez instalado vamos a ver cómo podemos programar con el software de Arduino nuestro Picobriks No sigas las instrucciones de Project Book aquí  https://picobricks.com/pages/projectbook NO funcionan . Las siguientes instrucciones sí que funcionan y son de   Bricogeek Licencia CC-BY  (hay muchas páginas con las mismas instrucciones pon en un buscador raspberry pico arduino ide ) Nos vamos a Archivo-Preferencias y le decimos que ponga el siguiente directorio para las librerías : Esta es la URL que pegar para que cargue placas que no vienen por defecto : https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json Una vez puesto nos vamos a Boards manager .. Y ponemos RP2040 en el buscador, aparecerá este software, Raspberry Pi Pico/RP2040 Lo instalamos ATENCIÓN, poner PicoBricks en modo Bootloader 1.-Desconectamos PicoBricks de nuestro ordenador 2.- Apretamos el botón BOOTSEL mientras lo volvemos a conectar al puerto USB 3.- Automáticamente aparecerá una nueva unidad de disco en nuestro ordenador (ya puedes soltar BOOTSEL) Una vez puesto en modo Booloader seleccionamos la placa Raspberry Pi Pico W  (4) y también seleccionamos el puerto (5) UF2_Board También puede salir otro tipo de puerto como este que dice que es el RP2040 Rasbberry Pi Pico W . En resumen tiene que salir abajo a la derecha que esta conectado El primer programa con Arduino IDE: Blink Entramos en Arduino IDE configurado según la página anterior (Board: Raspberry Pi y el puerto COM que corresonda) y pegamos el siguiente código: void setup() { // put your setup code here, to run once: pinMode(7, OUTPUT); // inicicializamos GPI7 que es donde esta el ledrojo como salida } void loop() { // put your main code here, to run repeatedly: digitalWrite(7, HIGH); //encendemos led rojo delay(1000); //espera 1 segundo digitalWrite(7, LOW); //apagamos led rojo delay(1000); //espera 1 segundo } Ponemos el código en el área 1, pulsamos 2 para compilar, y finalmente 3 para que lo suba a PicoBricks, cuando aparezca el mensaje wrote... en 4 ya podemos ver que el  led rojo empieza a parpadear Por cierto, el programa  se queda cargado pruébalo! desenchúfalo del ordenador, alimenta PicoBricks con un PowerBank o un cargador de móvil con el cabla USB y ¡¡  sigue funcionando !!!   Proyectos Los mismos proyectos vistos con PicoBlockly se pueden hacer igual con código. Repositorio ide picobrkics https://ide.picobricks.com/examples/examples.ht Repositorio Github En la ruta  https://github.com/Robotistan/PicoBricks/tree/main/Software/Activities los tienes listos los programas para copiar y pegar - Blink - Action-Reaction - Autonomous Lighting - Thermometer - Graphic Monitor - Dominate the Rhythm - Show Your Reaction - My Timer - Alarm Clock - Know Your Color Buzz Wire Game Libro Projectbook Los tienes en este libro (en inglés) que lo puedes conseguir aquí https://picobricks.com/pages/projectbook PROYECTO BLINK ver pag 25 PROYECTO ACTION-REACTION ver pag 29 PROYECTO Autonomous Lighting ver pag 35 PROYECTO Thermometer ver pag 41 PROYECTO Graphic Monitor ver pag 46 PROYECTO Dominate the Rhythm ver pag 55 PROYECTO Show Your Reaction ver pag 63 PROYECTO My Timer ver pag 71 PROYECTO Alarm Clock ver pag 81 PROYECTO Know Your Color ver pag 90 PROYECTO Buzz Wire Game ver pag 106 A diferencia de Microblocks, no los explica paso a paso, por lo que es mejor copiar y pegar de los repositorios de Github   Al no tener licencia CC no los podemos reproducir aquí en este tutorial Proyectos con Wifi ScanNetworks   Podemos ir a Ejemplos y vamos a ejecutar el ScanNetworks que no requiere contraseñas de wifi Al ejecutarlo nos sale en la ventana de monitor serie las wifis que encuentra WifiClient Si nos vamos a este ejemplo: Tenemos que ir a las líneas 9 y 10 para poner nuestra wifi y contraseña: #define STASSID "aquituwifi" #define STAPSK "aqui tu contraseña" Al ejecutarlo llama a esta dirección definida en las líneas 16 y 17 const char* host = "djxmmx.net"; const uint16_t port = 17; Y sale  la cita del día cada 5 minutos en el puerto serie WiFi connected IP address: 192.168.1.48 connecting to djxmmx.net:17 sending data to server receiving from remote server "Thomas wants to get it in quickly, and...Now there's a steal by Bird! Underneath to DJ, lays it in! 1 second left, what a play by Bird!" - 1987 NBA Eastern Conference Finals closing connection connecting to djxmmx.net:17 sending data to server receiving from remote server "Oh oh oh oh oh ooh, why'd you have to go oh, away from all, me love, why you leave me, w-why you leave me?..." - Sean Kingston (Me Love) closing connection connecting to djxmmx.net:17 sending data to server receiving from remote server "I wanna run away, with you, cuz baby you're my everything..." - Frankie J. (Run Away) closing connection Encender y apagar un led De https://dronebotworkshop.com/picow-arduino/ hemos conseguido este código, donde Raspberry actúa como cliente, pero esta pensado para encender y apagar el led integrado en la Rasberry Pi Pico W, así que le hemos añadido el Led rojo de PicoBrick que esta en GPI7 En la línea 43 el pin 7 como salida pinMode(7,OUTPUT); En la línea 97 que encienda el pin 7 también    digitalWrite(7, HIGH); En la línea 102 que apague el pin 7 también digitalWrite(7, LOW); Acuérdate de poner en las líneas 17 y 18 tu wifi /* Pico W Web Interface Demo picow-web-control-demo.ino Web Interface & WiFi Connection Control the onboard LED with Pico W Adapted from ESP32 example by Rui Santos - https://randomnerdtutorials.com DroneBot Workshop 2022 https://dronebotworkshop.com */ // Load Wi-Fi library #include // Replace with your network credentials const char* ssid = "pontuwifi"; const char* password = "pontucontraseña"; // Set web server port number to 80 WiFiServer server(80); // Variable to store the HTTP request String header; // Variable to store onboard LED state String picoLEDState = "off"; // Current time unsigned long currentTime = millis(); // Previous time unsigned long previousTime = 0; // Define timeout time in milliseconds (example: 2000ms = 2s) const long timeoutTime = 2000; void setup() { // Start Serial Monitor Serial.begin(115200); // Initialize the LED as an output pinMode(LED_BUILTIN, OUTPUT); pinMode(7,OUTPUT);//initialize digital pin 7 as an output // Set LED off digitalWrite(LED_BUILTIN, LOW); // Connect to Wi-Fi network with SSID and password WiFi.begin(ssid, password); // Display progress on Serial monitor while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Print local IP address and start web server Serial.println(""); Serial.print("WiFi connected at IP Address "); Serial.println(WiFi.localIP()); // Start Server server.begin(); } void loop() { WiFiClient client = server.available(); // Listen for incoming clients if (client) { // If a new client connects, currentTime = millis(); previousTime = currentTime; Serial.println("New Client."); // print a message out in the serial port String currentLine = ""; // make a String to hold incoming data from the client while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected currentTime = millis(); if (client.available()) { // if there's bytes to read from the client, char c = client.read(); // read a byte, then Serial.write(c); // print it out the serial monitor header += c; if (c == '\n') { // if the byte is a newline character // if the current line is blank, you got two newline characters in a row. // that's the end of the client HTTP request, so send a response: if (currentLine.length() == 0) { // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) // and a content-type so the client knows what's coming, then a blank line: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); // Switch the LED on and off if (header.indexOf("GET /led/on") >= 0) { Serial.println("LED on"); picoLEDState = "on"; digitalWrite(LED_BUILTIN, HIGH); digitalWrite(7, HIGH); } else if (header.indexOf("GET /led/off") >= 0) { Serial.println("LED off"); picoLEDState = "off"; digitalWrite(LED_BUILTIN, LOW); digitalWrite(7, LOW); } // Display the HTML web page client.println(""); client.println(""); client.println(""); // CSS to style the on/off buttons client.println(""); // Web Page Heading client.println("

Pico W LED Control

"); // Display current state, and ON/OFF buttons for Onboard LED client.println("

Onboard LED is " + picoLEDState + "

"); // Set buttons if (picoLEDState == "off") { //picoLEDState is off, display the ON button client.println("

"); } else { //picoLEDState is on, display the OFF button client.println("

"); } client.println(""); // The HTTP response ends with another blank line client.println(); // Break out of the while loop break; } else { // if you got a newline, then clear currentLine currentLine = ""; } } else if (c != '\r') { // if you got anything else but a carriage return character, currentLine += c; // add it to the end of the currentLine } } } // Clear the header variable header = ""; // Close the connection client.stop(); Serial.println("Client disconnected."); Serial.println(""); } } Al ejecutarlo, nos aparece por el puerto serie la IP que se ha conectado: Entramos en un navegador en un ordenador conectado a la misma wifi en la dirección 192.168.1.48 y este es el resultado: ¿Y con un servo? Si tienes un servo puedes conectarlo y también puedes utilizar el código que aparece en De https://dronebotworkshop.com/picow-arduino/ con las conexiones que indican Créditos Capitulo PicoBlocky Extraido de Pico Bricks IDE Book   Propiedad Copyright © 2022 Robotistan Licencia CC-BY-SA Except for commercial usage, you can copy, reproduce and edit photos and content in this book by referring Autores Contents: Mustafa Kemal Avcı, Abdullah Kaya, Selim Gayretli Translation: Naze Gizem Özer Design: Ahmet Gürsu, Elanur Tokalak Pico Bricks Developer Team Yasir Çiçek - Project Manager Yusuf Gündoğdu - Software Developer Mehmet Suat Morkan - Chief Developer Mehmet Ali Dağ - Hardware Developer Descarga del libro https://picobricks.com/pages/idebook https://drive.google.com/file/d/1plad6bjn87FcgHb3cpd1vI-B_A25rnfF/view Resto de capítulos: Autor Javier Quintana CATEDU Diciembre 2024 Creative Commons-BY-NC-SA Cualquier observación o detección de error en soporte.catedu.es Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.