Leer Primero

Como se utiliza este blog?

sábado, 8 de marzo de 2025

Triángulo de Sierpinski en Python utilizando el módulo Python Turtle

Bienvenido a mi blog, hoy hablaremos un poco sobre el triángulo de Sierpiński, el cual es un fractal que se construye a partir de un triángulo equilátero y se obtiene al repetir infinitas veces un algoritmo geométrico. Dicho triángulo lleva el nombre del matemático polaco Wacław Franciszek Sierpiński (Varsovia, 1882-1969), quien creó varios objetos fractales, entre ellos el conocido triángulo de Sierpiński. De manera análoga al conjunto de Cantor, este fractal puede obtenerse mediante una sucesión infinita de extracciones.

Fractal (del latín fractus, "irregular", "fragmentado") es una palabra acuñada por el matemático Benoît Mandelbrot para describir la repetición "infinita" de patrones geométricos a diferentes escalas, los cuales muestran versiones cada vez más pequeñas de sí mismos. Las partes pequeñas de un fractal, explicaba Mandelbrot, son semejantes al todo, es decir, al conjunto completo. Lo más interesante es que el matemático demostró que la mayoría de las formas de la naturaleza son fractales. Estos se han utilizado para explicar fenómenos atmosféricos, analizar las redes vasculares y neuronales del cuerpo humano, calcular la longitud de las costas, explicar el crecimiento de los cerebros de los mamíferos, estudiar los seísmos... Incluso en telecomunicaciones se han diseñado antenas fractales, como las que utilizan los teléfonos celulares actuales, ya que mejoran el rendimiento y permiten reducir la longitud de los hilos de estas, disminuyendo a su vez el espacio que ocupan.

En el contexto de los fractales, la iteración se refiere a la aplicación repetida de una regla o un procedimiento para generar la forma o estructura compleja del fractal. En la creación del triángulo de Sierpiński, una fórmula matemática se aplica repetidamente, produciendo un patrón característico. La cantidad de veces que se aplica la fórmula se conoce como el nivel de iteración. La autosimilitud es una característica de los fractales que hace referencia a su capacidad para mantener un patrón o forma similar a sí mismos en diferentes escalas. En otras palabras, una porción de un fractal se asemeja a su forma completa, sin importar la escala en la que se observe. Esta propiedad se conoce como simetría fractal. La autosimilitud es una de las características que hacen que los fractales sean tan interesantes y únicos en el mundo de las matemáticas.

Para generar el triángulo de Sierpiński, vamos a utilizar Python Turtle, un módulo de Python que permite crear gráficos vectoriales mediante comandos simples. Estos comandos controlan un cursor, conocido como tortuga (turtle), que se mueve por la pantalla y dibuja líneas y figuras geométricas, permitiéndonos crear diseños personalizados. Es comúnmente utilizado en la enseñanza de la programación, ya que es fácil de entender y usar. Con Python Turtle, los estudiantes pueden aprender conceptos básicos de programación, como bucles, condicionales y funciones, mientras crean sus propios gráficos. Para utilizar Python Turtle, primero debemos importar el módulo en nuestro script. Luego, podemos crear una instancia de turtle y emplear los comandos mencionados anteriormente para dibujar en la pantalla. Hoy aprenderemos a dibujar el triángulo de Sierpiński con el módulo Python Turtle.

En el siguiente código Python utilizamos el módulo Turtle para dibujar un triángulo equilátero y el triángulo total se forma mediante iteraciones, acá tenemos el desglose del código comentado:

  1. # -------------------------------------------------------------------------
  2. # (| " TriánguloSierpinski.py "|)
  3. # (| " "|)
  4. # (| " Script que genera el fractal del triángulo de sierpinski para "|)
  5. # (| " mostrar a modo de ejemplo, cómo se realiza el procedimiento. "|)
  6. # (| " "|)
  7. # (| " Este código de ejemplo es de dominio público. "|)
  8. # (| " "|)
  9. # (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB "|)
  10. # (| " Visita https://jorgechac.blogspot.com "|)
  11. # (| " "|)
  12. # (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32 "|)
  13. # (| " Whatsapp y Ventas NEQUI +573177295861 "|)
  14. # (| " Bucaramanga - Colombia "|)
  15. # -------------------------------------------------------------------------
  16. import turtle # Importa la biblioteca turtle para gráficos
  17. import math # Importa la biblioteca math para cálculos matemáticos
  18. # Función recursiva para dibujar el triángulo de Sierpinski
  19. def sierpinski(t, order, size):
  20. if order == 0: # Caso base: dibuja un triángulo equilátero
  21. for _ in range(3):
  22. t.forward(size) # Dibuja un lado del triángulo
  23. t.left(120) # Gira a la izquierda 120 grados
  24. else:
  25. # Llamadas recursivas para dibujar triángulos más pequeños
  26. sierpinski(t, order-1, size/2) # Triángulo inferior izquierdo
  27. t.forward(size/2) # Mueve la tortuga a la derecha
  28. sierpinski(t, order-1, size/2) # Triángulo inferior derecho
  29. t.backward(size/2) # Regresa a la posición original
  30. t.left(60) # Gira a la izquierda
  31. t.forward(size/2) # Mueve la tortuga hacia arriba
  32. t.right(60) # Corrige la dirección
  33. sierpinski(t, order-1, size/2) # Triángulo superior
  34. t.left(60) # Regresa la dirección original
  35. t.backward(size/2) # Vuelve a la posición de inicio
  36. t.right(60) # Corrige la orientación
  37. # Configuración del nivel del fractal y tamaño del triángulo
  38. order = 5 # Nivel de recursión del fractal
  39. size = 500 # Tamaño del triángulo principal
  40. # Configuración de la pantalla de Turtle
  41. screen = turtle.Screen()
  42. screen.bgcolor("white") # Color de fondo blanco
  43. screen.setup(width=size + 50, height=(size * math.sqrt(3)) / 2 + 100)
  44. # Ajusta el tamaño de la ventana
  45. # Configuración de la tortuga para dibujar
  46. t = turtle.Turtle()
  47. t.speed("fastest") # Velocidad máxima de dibujo
  48. t.pencolor("green") # Color del lápiz
  49. # Posiciona la tortuga para centrar el triángulo en la pantalla
  50. t.penup() # Levanta el lápiz para mover sin dibujar
  51. t.goto(-size/2, -size/(2*math.sqrt(3)) - 30)
  52. # Mueve la tortuga a la posición inicial, más abajo
  53. t.pendown() # Baja el lápiz para empezar a dibujar
  54. # Llama a la función para dibujar el fractal
  55. sierpinski(t, order, size)
  56. # Finaliza el dibujo
  57. turtle.done()


Finalmente después de ejecutar el código, se abrirá una nueva ventana y se comenzará a generar la grafica en Python, así:



Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Generación de Formas de Onda en Python utilizando la libreria Matplotlib y Numpy

Dibujo de un arbol de navidad utilizando el módulo Python Turtle

ARBOL DE NAVIDAD EN PYTHON

Dibujando en Python utilizando la libreria Matplotlib y Numpy

Dibujando en Python utilizando el módulo Python Turtle

Dibujo del logotipo de Python utilizando el módulo Python Turtle


jueves, 6 de marzo de 2025

Generación de Formas de Onda en Python utilizando la libreria Matplotlib y Numpy

Bienvenido a mi blog, hoy hablaremos un poco de la generación de formas de onda, la cual es la producción de patrones de señales analógicas o digitales, periódicas o no periódicas. Esta acción, se realiza físicamente mediante dispositivos electrónicos llamados generadores de formas de onda. Un generador de forma de onda, produce formas de onda precisas, incluyendo sinusoidales, cuadradas, triangulares y de rampa, así como formas de onda arbitrarias definidas por el usuario utilizando secuencias de datos o transmitiendo continuamente desde un host o instrumento "peer-to-peer" dentro de sistemas de pruebas de señal mixta.

La generación de formas de onda por software se puede realizar con programas especializados que permiten crear, editar y administrar dichas formas de onda, el día de hoy veremos la generación básica de algunas formas de onda en Python, para ello haremos uso de Matplotlib, la cuál es una librería completa para crear visualizaciones estáticas, animadas e interactivas en Python, y de igual forma también usaremos la librería NumPy, que nos trae el poder computacional de lenguajes como C y Fortran a Python, un lenguaje mucho más fácil de aprender y usar. Vamos a ello directamente y veamos el código en Python con sus respectivos comentarios explicativos:

  1. # -------------------------------------------------------------------------
  2. # (| " FormasdeOnda.py "|)
  3. # (| " "|)
  4. # (| " Script que genera las formas de onda más conocidas para mostrar, "|)
  5. # (| " a modo de ejemplo, cómo se realiza el procedimiento. "|)
  6. # (| " "|)
  7. # (| " Este código de ejemplo es de dominio público. "|)
  8. # (| " "|)
  9. # (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB "|)
  10. # (| " Visita https://jorgechac.blogspot.com "|)
  11. # (| " "|)
  12. # (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32 "|)
  13. # (| " Whatsapp y Ventas NEQUI +573177295861 "|)
  14. # (| " Bucaramanga - Colombia "|)
  15. # -------------------------------------------------------------------------
  16. import numpy as np # Importamos la biblioteca NumPy para proporciona un
  17. # objeto de matriz N-dimensional y funciones
  18. # matemáticas de alto rendimiento para operar en esas
  19. # matrices.
  20. import matplotlib.pyplot as plt # Importamos Matplotlib para graficar
  21. # y visualizar
  22. # Definición de parámetros
  23. T = 1 # Duración de la señal en segundos
  24. fs = 1000 # Frecuencia de muestreo en Hz (muestras por segundo)
  25. t = np.linspace(0, T, int(T * fs), endpoint=False) # Vector de tiempo
  26. # Onda Senoidal
  27. f_sine = 5 # Frecuencia de la onda senoidal en Hz
  28. sine_wave = np.sin(2 * np.pi * f_sine * t) # Generación de la señal senoidal
  29. # Onda Cuadrada
  30. f_square = 2 # Frecuencia de la onda cuadrada en Hz
  31. duty_cycle = 0.01 # Ciclo de trabajo (porcentaje del período en alto)
  32. square_wave = np.where(np.mod(np.floor(2 * duty_cycle * fs * t), 2) == 0, 1, -1)
  33. # Generación de la señal cuadrada
  34. # Onda Triangular
  35. f_triangle = 1 # Frecuencia de la onda triangular en Hz
  36. triangle_wave = 2 * np.abs((10 * f_triangle * t) % 2 - 1) - 1
  37. # Generación de la señal triangular
  38. # Onda Diente de Sierra
  39. f_sawtooth = 10 # Frecuencia de la onda diente de sierra en Hz
  40. sawtooth_wave = 2 * (f_sawtooth * t - np.floor(f_sawtooth * t + 0.5))
  41. # Generación de la señal diente de sierra
  42. # Gráfica de las ondas
  43. fig, axs = plt.subplots(4, 1, sharex=True, figsize=(8, 8))
  44. # Crea una figura con 4 subgráficos
  45. axs[0].plot(t, sine_wave) # Grafica la onda senoidal
  46. axs[0].set_title('Onda Senoidal') # Título del primer gráfico
  47. axs[1].plot(t, square_wave) # Grafica la onda cuadrada
  48. axs[1].set_title('Onda Cuadrada') # Título del segundo gráfico
  49. axs[2].plot(t, triangle_wave) # Grafica la onda triangular
  50. axs[2].set_title('Onda Triangular') # Título del tercer gráfico
  51. axs[3].plot(t, sawtooth_wave) # Grafica la onda diente de sierra
  52. axs[3].set_title('Onda Diente de Sierra') # Título del cuarto gráfico
  53. plt.xlabel('Tiempo (seg)') # Etiqueta del eje X para todas las gráficas
  54. plt.show() # Muestra la gráfica

Finalmente después de ejecutar el código, se abrirá una nueva ventana y se comenzará a generar la grafica en Python con matplotlib, así:


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Dibujo de un arbol de navidad utilizando el módulo Python Turtle

ARBOL DE NAVIDAD EN PYTHON

Dibujando en Python utilizando la libreria Matplotlib y Numpy

Dibujando en Python utilizando el módulo Python Turtle

Dibujo del logotipo de Python utilizando el módulo Python Turtle


lunes, 1 de enero de 2024

Dibujo de un arbol de navidad utilizando el módulo Python Turtle

Bienvenido a mi blog, hoy hablaremos un poco de Python turtle, el cual es un módulo de Python que permite crear gráficos vectoriales mediante el uso de comandos simples. Estos comandos controlan un cursor, conocido como tortuga (turtle), que se mueve por la pantalla y dibuja líneas y figuras geométricas y nos permite crear diseños personalizados. Es comúnmente utilizado en la enseñanza de la programación, ya que es fácil de entender y usar. Con Python turtle, los estudiantes pueden aprender conceptos básicos de programación como bucles, condicionales y funciones mientras crean sus propios gráficos. Algunos ejemplos de cómo utilizar la función turtle incluyen:

  • Mover el cursor hacia adelante utilizando el comando "forward()"
  • Girar el cursor utilizando el comando "left()" o "right()"
  • Cambiar el color de la línea utilizando el comando "pencolor()"
  • Escribir texto en la pantalla utilizando el comando "write()"
  • Mostrar o ocultar el cursor utilizando el comando "showturtle()" o "hideturtle()"

Para utilizar la función turtle, primero debemos importar el módulo en nuestro script. Luego, podemos crear una instancia de turtle y utilizar los comandos mencionados anteriormente para dibujar en la pantalla. Hoy aprenderemos a dibujar un sencillo arbol navideño con el modulo Python Turtle.

En el siguiente código Python utilizamos el módulo Turtle para dibujar un patrón que representa un árbol de Navidad, se utiliza la biblioteca Turtle para crear un patrón visual con círculos y cuadrados. La figura se forma mediante iteraciones y se utilizan diferentes colores para los círculos en ciertos puntos del patrón. Este código utiliza dos tortugas, una para dibujar cuadrados (representando los niveles del árbol) y otra para dibujar círculos (representando las bolas de Navidad). El patrón se crea mediante bucles y la posición de las tortugas se ajusta en cada iteración. Finalmente, se agrega un mensaje de texto y la ventana se cierra al hacer clic, aca tenemos el desglose del codigo comentado:
  1. # -------------------------------------------------------------------------
  2. # (| " christmastree.py "|)
  3. # (| " "|)
  4. # (| " Este sencillo y corto código en Python, utiliza el módulo Turtle "|)
  5. # (| " para dibujar un patrón que representa un árbol de Navidad, se "|)
  6. # (| " utiliza la biblioteca Turtle para crear un patrón visual con "|)
  7. # (| " círculos y cuadrados. La figura se forma mediante iteraciones y "|)
  8. # (| " se utilizan diferentes colores para los círculos en ciertos "|)
  9. # (| " puntos del patrón. "|)
  10. # (| " "|)
  11. # (| " Este código de ejemplo es de dominio público. "|)
  12. # (| " "|)
  13. # (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB "|)
  14. # (| " Visita https://jorgechac.blogspot.com "|)
  15. # (| " "|)
  16. # (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32 "|)
  17. # (| " Whatsapp y Ventas NEQUI +573177295861 "|)
  18. # (| " Bucaramanga - Colombia "|)
  19. # -------------------------------------------------------------------------
  20. # Se importar la biblioteca turtle para graficos simples
  21. import turtle
  22. # Se configura la pantalla con dimensiones 800x600
  23. screen = turtle.Screen()
  24. screen.setup(800, 600)
  25. # Se crea un objeto turtle llamado 'circle' para representar las bolas
  26. # de adorno
  27. circle = turtle.Turtle()
  28. circle.shape('circle')
  29. circle.color('red')
  30. circle.speed('fastest')
  31. circle.up()
  32. # Se crea un objeto turtle llamado 'square' para representar los bloques
  33. # cuadrados del árbol
  34. square = turtle.Turtle()
  35. square.shape('square')
  36. square.color('green')
  37. square.speed('fastest')
  38. square.up()
  39. # Posiciona el objeto 'circle' en la parte superior del árbol y lo marca
  40. # como circulo inicial
  41. circle.goto(0, 280)
  42. circle.stamp()
  43. # Inicializar variable de ajuste
  44. k = 0
  45. # Bucle para dibujar los bloques del árbol y las bolas de adorno, es decir
  46. # se itera para crear el patrón
  47. for i in range(1, 17):
  48. y = 30 * i
  49. for j in range(i - k):
  50. x = 30 * j
  51. # Posiciona y marca el bloque en la posición actual y su reflejo
  52. # simétrico
  53. square.goto(x, -y + 280)
  54. square.stamp()
  55. square.goto(-x, -y + 280)
  56. square.stamp()
  57. # Añade bolas de adorno de color rojo y amarillo en ciertas filas del árbol
  58. if i % 4 == 0:
  59. x = 30 * (j + 1)
  60. circle.color('red')
  61. circle.goto(-x, -y + 280)
  62. circle.stamp()
  63. circle.goto(x, -y + 280)
  64. circle.stamp()
  65. k += 2
  66. if i % 4 == 3:
  67. x = 30 * (j + 1)
  68. circle.color('yellow')
  69. circle.goto(-x, -y + 280)
  70. circle.stamp()
  71. circle.goto(x, -y + 280)
  72. circle.stamp()
  73. # Cambia el color del objeto 'square' a marrón para representar el tronco
  74. # del árbol
  75. square.color('brown')
  76. # Bucle para dibujar el tronco del árbol, es decir añadir más filas al
  77. # patrón
  78. for i in range(17, 20):
  79. y = 30 * i
  80. for j in range(3):
  81. x = 30 * j
  82. # Posiciona y marca el bloque del tronco y su reflejo simétrico
  83. square.goto(x, -y + 280)
  84. square.stamp()
  85. square.goto(-x, -y + 280)
  86. square.stamp()
  87. # Crea un objeto turtle llamado 'text_turtle' para mostrar un mensaje
  88. text_turtle = turtle.Turtle()
  89. text_turtle.hideturtle()
  90. text_turtle.up()
  91. text_turtle.color('blue')
  92. text_turtle.goto(350, -280)
  93. text_turtle.write("Christmas tree in Python by jorgechac", align='right', font=('Arial', 10, 'bold'))
  94. # Esperamos a que el usuario haga clic en la ventana para cerrarla
  95. turtle.exitonclick()

Finalmente después de ejecutar el código, se abrirá una ventana independiente y se comenzará a generar el Arbol de Navidad, asi:




Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.



Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.




También te puede interesar:






martes, 26 de diciembre de 2023

ARBOL DE NAVIDAD EN PYTHON


Bienvenido a mi blog, hoy hablaremos un poco de como escribir codigo para realizar un sencillo arbol de navidad y visualizarlo en la consola de Python, utilizando para esto la herramienta Microsoft Visual Studio Code, para ello desglosare el codigo fuente y le ire añadiendo los comentarios para tratar de explicar lo que se esta haciendo paso a paso de la siguiente forma (sobra decir que tu visual studio code debe tener instalado la extension para trabajar con Python):


  1. # -------------------------------------------------------------------------
  2. # (| " Arbol.py "|)
  3. # (| " "|)
  4. # (| " Este sencillo y corto código en Python, utiliza códigos de escape"|)
  5. # (| " ANSI para imprimir en la consola colores y formato de texto; "|)
  6. # (| " Simulando la apariencia de un arbol de navidad en la consola. "|)
  7. # (| " "|)
  8. # (| " Este código de ejemplo es de dominio público. "|)
  9. # (| " "|)
  10. # (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB "|)
  11. # (| " Visita https://jorgechac.blogspot.com "|)
  12. # (| " "|)
  13. # (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32 "|)
  14. # (| " Whatsapp y Ventas NEQUI +573177295861 "|)
  15. # (| " Bucaramanga - Colombia "|)
  16. # -------------------------------------------------------------------------
  17. # Se define una clase llamada 'Color' que contiene algunos atributos que
  18. # representan códigos de escape ANSI para cambiar el color del texto en la
  19. # consola. Los atributos son:
  20. # reset: Restablece el color a su valor por defecto.
  21. # rojo: Establece el color del texto a rojo.
  22. # verde: Establece el color del texto a verde.
  23. # cafe: Establece el color del texto a un tono de café utilizando el formato
  24. # de color RGB.
  25. class Color:
  26. reset = "\033[0m"
  27. rojo = "\033[91m"
  28. verde = "\033[92m"
  29. cafe = "\033[38;2;139;69;19m"
  30. # Se utiliza un bucle for para imprimir una serie de líneas que representan
  31. # un árbol de Navidad. La forma del árbol está compuesta por caracteres '^'
  32. # de diferentes longitudes. El color del árbol es verde (Color.verde), y las
  33. # líneas se centran en un espacio de 40 caracteres.
  34. for i in range(1, 30, 2):
  35. print((Color.verde + ('^' * i)).center(40))
  36. # Se utiliza otro bucle for para imprimir tres líneas horizontales que
  37. # representan las patas del árbol. Estas líneas son de color café (Color.cafe)
  38. # y contienen el texto '|||'. Cada línea se centra en un espacio de 50 caracteres.
  39. for leg in range(3):
  40. print((Color.cafe + '|||').center(50))
  41. # Se imprimen líneas adicionales que representan el tronco del árbol. El tronco
  42. # consiste en las líneas '\___/' de color café (Color.cafe). Estas líneas se centran
  43. # en un espacio de 50 caracteres.
  44. print((Color.cafe + '\___/').center(50))
  45. # Se imprimen líneas horizontales de guiones rojos (Color.rojo) para decorar la
  46. # parte superior e inferior del árbol. Estas líneas se centran en un espacio de
  47. # 40 caracteres y tienen una longitud de 25 guiones.
  48. print((Color.rojo + ('-' * 25)).center(40))
  49. # Se imprime el mensaje '¡Feliz Navidad!' en el centro y con el color de texto
  50. # restablecido (Color.reset). La línea se centra en un espacio de 40 caracteres.
  51. print((Color.reset + '¡Feliz Navidad!').center(40))
  52. print((Color.rojo + ('-' * 25)).center(40))

Los códigos de escape ANSI son secuencias de caracteres que se utilizan para controlar el formato y el color del texto en terminales compatibles con ANSI. Estas secuencias comienzan con el carácter de escape \033 seguido de parámetros y códigos de control. En este caso, se están utilizando para cambiar el color del texto en la consola.

En el código proporcionado tenemos:

\033[0m:  Restablece todos los estilos y colores a los valores predeterminados.

\033[91m: Establece el color del texto a rojo.

\033[92m: Establece el color del texto a verde.

\033[38;2;139;69;19m: Establece el color del texto a un tono de café mediante el formato de color RGB. El formato es \033[38;2;R;G;Bm.

Estos códigos de escape ANSI son específicos de las terminales que admiten ANSI, como la mayoría de las terminales en sistemas operativos Unix/Linux y también en Windows si se utiliza un emulador de terminal compatible.

Finalmente después de ejecutar el código, se abrirá la consola de python y se comenzará a generar el Arbol de Navidad, así:

Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Dibujando en Python utilizando la libreria Matplotlib y Numpy

Dibujando en Python utilizando el módulo Python Turtle

Dibujo del logotipo de Python utilizando el módulo Python Turtle


lunes, 6 de noviembre de 2023

YouTube bloquea los ad-blockers

Bienvenido a mi blog, hoy hablaremos un poco de la reciente ofensiva de YouTube contra los bloqueadores de publicidad, que ha desencadenado una oleada de cientos de miles de desinstalaciones de este tipo de extensiones de navegadores (como el famoso y útil adblock plus), los cuales sin duda son una de las funcionalidades más útiles y necesarias para disfrutar de una experiencia de navegación razonable y, sobre todo, segura.

Vamos a aprender el día de hoy como evadir dicha restricción.


De acuerdo con la imagen anterior, "los ad blockers no están permitidos en YouTube", ya que "los anuncios permiten que YouTube sea gratis para miles de millones de usuarios en todo el mundo". Y luego se muestran dos botones para tomar acciones ante el aviso: desactivar el bloqueador para permitir los anuncios, o probar YouTube Premium. Es curioso que esto pase poco más de un año después de que Google obligara a <YouTube Vanced> a cerrar por "razones legales". Con este hecho Google logró eliminar a la mejor alternativa de YouTube Premium, pero tal parece que no es suficiente y ahora va contra todos los softwares de bloqueo de anuncios en general.

Aunque hay otras formas de bloquear los anuncios, como, por ejemplo, permitiendo su carga, pero no mostrándolos. Bienvenidos a FadBlock: Friendly Adblock for Youtube™ (también disponible para Firefox, Opera, Edge y Safari) una extensión que permite que el propietario del vídeo siga cobrando, pero que tú no veas el vídeo, y que el anunciante no consiga su objetivo de molestarte. Y si Fadblock, por la razón que fuese, desapareciese, aparecerían otros. Es lo que tiene la tecnología de hoy en día: que no se puede parar.

Lo que sí se puede parar son los modelos de negocio que los usuarios no quieren. Los usuarios hemos dicho a gritos que no queremos ser molestados con anuncios intrusivos cuando queremos ver un vídeo, y se han instalado bloqueadores para evitar esos anuncios molestos por centenares de millones. Que ahora venga YouTube y demuestre que eso ya está provocando un problema a su modelo de negocio no quiere decir que eso sea malo en sí, sino que su modelo de negocio está mal planteado, y que tendrá que replanteárselo con otros parámetros o de otras formas.

Los anuncios de YouTube son infumables e insoportables. Los anunciantes que se promocionan en YouTube son compañías que saben perfectamente que la reacción que provocan sus anuncios es la de soltar un madrazo cada vez que te aparecen y acordarle de todos los muertos puestos en fila a la persona o empresa que decidió pagarlos, pero por la razón que sea, siguen creyendo de que «la publicidad que funciona es la que molesta». Pues no es así, si nos molesta y siempre encontraremos la forma de evitarla, no tenemos por qué aguantarla.

Finalmente, si hay cosas que no quieres ver, no las veas, nadie debería poder obligarte. Ese fue el principio "fundacional" de la internet, y así debería ser siempre: una red al servicio de los usuarios y de aquellos que quieren compartir información.





"La palabra 'YouTube', así como los logotipos oficiales, son marcas comerciales con copyright © de Google LLC. Todos los derechos de marca y autor están reservados por sus respectivos propietarios y licencias correspondientes."


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.



Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último, si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.




También te puede interesar:


sábado, 29 de julio de 2023

Arduino UNO R4 WiFi

Bienvenido a mi blog, hoy hablaremos un poco de la placa Arduino UNO R4 WiFi, Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores o desarrolladores, para hacerlo, utiliza el lenguaje de programación Arduino (basado en Wiring) y el Software Arduino IDE (basado en Processing, una herramienta basada en Java). Recordemos que Arduino es un proyecto, un ecosistema y no solo un modelo concreto de placa. Como todas las placas Arduino y compatibles, tiene semejanzas con otras de sus hermanas: es la evolución de Arduino UNO R3 y Arduino UNO WiFi Rev2. En este post podrás comprender todo lo que necesitas saber sobre esta placa y comenzar a desarrollar tus propios proyectos DIY con Arduino UNO R4 WiFi. Antes de iniciar quiero recordar que el nuevo Arduino IDE 2.0 esta ahora basado en el marco Eclipse Theia.

Theia se basa en el mismo código subyacente que el popular y ampliable "Visual Studio Code" de Microsoft, esto permite que Arduino avance a un editor más potente y moderno y no olvidemos que ahora el DARK MODE o Modo Oscuro, ya viene nativo.



Arduino UNO R4 WiFi combina la potencia de procesamiento y los emocionantes nuevos periféricos del microcontrolador RA4M1 de Renesas (32 bits) con la potencia de conectividad inalámbrica del ESP32-S3 de Espressif. Además de esto, el UNO R4 WiFi ofrece una matriz de LED de 12x8 integrada, un conector Qwiic, VRTC y un pin de apagado, lo que cubre todas las necesidades potenciales que tendrán los Makers para su próximo proyecto. Con Arduino UNO R4 WiFi, puede actualizar fácilmente su proyecto y agregar conectividad inalámbrica para ampliar el alcance de su configuración actual. Si este es tu primer proyecto, este tablero tiene todo lo que necesitas para despertar tu creatividad.

Exploremos lo que el Arduino UNO R4 WiFi tiene para ofrecernos:



  • Compatibilidad de hardware con factor de forma UNO: El UNO R4 WiFi mantiene el mismo factor de forma, pinout y voltaje operativo de 5 V que su predecesor, el UNO R3, lo que garantiza una transición perfecta para los escudos y proyectos existentes.
  • Memoria ampliada y reloj más rápido: el UNO R4 WiFi cuenta con mayor memoria y una velocidad de reloj más rápida, lo que permite cálculos más precisos y un manejo sin esfuerzo de proyectos complejos.
  • Periféricos integrados adicionales: el UNO R4 WiFi presenta una gama de periféricos integrados, incluidos un DAC de 12 bits, CAN BUS y OPAMP (Amplificador Operacional), que brindan capacidades ampliadas y flexibilidad de diseño.
  • Tolerancia extendida de 6-24 V: el UNO R4 WiFi admite un rango de voltaje de entrada más amplio, lo que permite una integración perfecta con motores, tiras de LED y otros actuadores utilizando una sola fuente de alimentación. Eso es especialmente interesante, ya que 24V es el voltaje estándar en la industria, especialmente en entornos con controladores PLC y es una opción diseñada para traernos altos beneficios e integrarnos más en aplicaciones industriales.
  • Compatibilidad con HID: con la compatibilidad con HID incorporada, el UNO R4 WiFi puede simular un mouse o un teclado cuando se conecta a una computadora a través de USB, lo que facilita el envío de pulsaciones de teclas y movimientos del mouse, similar a las caracteristicas encontradas en Arduino Leonardo o Sparkfun Pro Micro.
  • Wi-Fi® y Bluetooth®: El UNO R4 WiFi aloja un módulo ESP32-S3, lo que permite a los makers y entusiastas, agregar conectividad inalámbrica a sus proyectos. En combinación con Arduino IoT Cloud, los diseñadores pueden monitorear y controlar sus proyectos de forma remota. Se cuenta con Wi-Fi® 4, el cual trabaja a una banda de 2.4 GHz y es compatible con el estándar 802.11 b/g/n, ademas tambien posee soporte para Bluetooth® 5 LE.
  • Conector Qwiic: El UNO R4 WiFi cuenta con un conector Qwiic I2C, lo que permite una fácil conexión a los nodos del extenso ecosistema Qwiic. Los cables adaptadores también permiten la compatibilidad con sensores y actuadores basados ​​en otros conectores.
  • Compatibilidad con RTC alimentado por batería: el UNO R4 WiFi incluye pines adicionales, incluido un pin "OFF" para apagar la placa y un pin "VRTC" para mantener el reloj interno en tiempo real encendido y en funcionamiento.
  • Matriz LED: El UNO R4 WiFi incorpora una matriz LED roja brillante de 12x8 (96 puntos), ideal para proyectos creativos con animaciones o trazado de datos de sensores, eliminando la necesidad de hardware adicional y es completamente direccionable ya que utiliza Charlieplexing para controlar individualmente cada punto. Para comenzar, simplemente descargue el núcleo "Arduino UNO R4 boards". Esto le otorgará acceso a la API Arduino_LED_Matrix fácil de usar, lo que le permitirá programar y controlar la matriz LED. Podemos encontrar ayuda para LED Matrix gracias a una herramienta gráfica, diseñada específicamente para ayudar a los Makers a crear y exportar sus propias animaciones. De esta manera, podemos dar rienda suelta a nuestra creatividad y aprovechar al máximo esta emocionante característica. Encuentra más información de esta herramienta gráfica en el sitio web de Arduino Labs.
  • Diagnóstico de errores de tiempo de ejecución: el UNO R4 WiFi incluye un mecanismo de captura de errores que detecta fallas en el tiempo de ejecución y proporciona explicaciones detalladas y sugerencias sobre la línea de código que causa la falla.



Con todas estas características incluidas en el conocido factor de forma UNO, ahora es el momento perfecto para actualizar su proyecto o embarcarse en su viaje como Maker. El UNO R4 WiFi ofrece una versatilidad y posibilidades incomparables para creadores de todos los niveles.



Compatible con Arduino IoT en la nube:





Utilice su placa en la nube IoT de Arduino, una forma simple y rápida de garantizar una comunicación segura para todas sus cosas conectadas, pruebe la nube Arduino IoT gratis!


Especificaciones Técnicas:

Board     Nombre                             Arduino® UNO R4 Wi-Fi

            SKU                                     ABX00087

Microcontrolador    Renesas RA4M1 (Arm® Cortex®-M4)

USB     USB‑C®                            Puerto de programación

Pines     Pines de E/S Digitales                     14

Pines     Pines de entrada Analógica                     6

            DAC                                     1

            Pines PWM                           6

Comunicación     UART                                     Sí, 1x (pin D0, D1)

            I2C                                     Sí, 1x (pin A4, A5, SDA, SCL)

            SPI                                     Sí, 1x (pin D10-D13, ICSP header)

         CAN                                                     Sí 1 bus CAN (pin D4, D5, external                                                                                                                        transceiver is required)

Power     Voltaje de operación                     5 V (ESP32-S3 es 3,3 V)

            Voltaje de entrada (VIN)                     6-24 Vcc

            Corriente CC por pin de E/S                     8mA

Velocidad de reloj    Núcleo principal                             48 MHz

            ESP32-S3                                     hasta 240 MHz

Memoria                    RA4M1                             Flash de 256kB, RAM de 32 kB

            ESP32-S3                                     ROM de 384 kB, SRAM de 512 kB

                                    EEPROM                                                      8kB

Dimensiones            Ancho                             68,85mm

            Longitud                                     53,34 mm


Documentación:






¿Qué hay de nuevo en resumen en R4 a diferencia de R3?

  • Pasamos de tener 2 KB de RAM (UNO R3) a tener 32 KB de RAM (UNO R4) y de 32 KB de memoria Flash (UNO R3) a un total de 256 KB de memoria Flash (UNO R4).
  • La frecuencia del procesador también se triplica, pasando de los 16 MHz (UNO R3) a los 48 MHz (UNO R4).
  • Se agregan los puertos DAC, CAN BUS, OPAMP y SWD de 12 bits, permitiendo desarrollar proyectos más avanzados.
  • Se utiliza el conector USB-C para la conexión con el ordenador, adaptandose a los nuevos tiempos.
  • Dispositivo HID: permite hacer proyectos interactivos mucho más interesantes, creando interfaces sin apenas esfuerzo y tiempo.


Pinout for Arduino UNO R4 WiFi


¿Puedo usar hardware compatible con Arduino UNO R3 con Arduino UNO R4 WiFi?

Sí, Arduino UNO R4 WiFi fue diseñado específicamente para garantizar la compatibilidad con shields anteriores y hardware compatible desarrollado para Arduino UNO R3. El UNO R4 WiFi mantiene la misma compatibilidad mecánica y eléctrica, lo que le permite usar sin problemas sus escudos y hardware existentes con la nueva placa. Esto facilita la actualización al UNO R4 WiFi sin necesidad de cambios significativos o adaptaciones a sus proyectos.


¿Puedo usar hardware compatible con Arduino UNO WiFi Rev2 con Arduino UNO R4 WiFi?

Sí, Arduino UNO R4 WiFi es totalmente compatible con shields y hardware anteriores desarrollados para UNO WiFi Rev2. Ambas placas comparten el mismo factor de forma UNO y un voltaje operativo de 5 V. Sin embargo, es importante tener en cuenta que, según el diseño, puede haber cambios en los elementos de distribución de pines. Consulte la documentación y los diagramas de pines para obtener detalles específicos y consideraciones de compatibilidad.


¿Puedo usar mi boceto desarrollado para el Arduino UNO R3 en el UNO R4 WiFi?

Sí, si su boceto se desarrolló utilizando la API de Arduino. En caso de que esté utilizando instrucciones solo disponibles para la arquitectura AVR, es necesario realizar algunos cambios para garantizar la compatibilidad.


¿Todas las bibliotecas compatibles con UNO R3 también son compatibles con UNO R4 WiFi?

No, algunas bibliotecas de UNO R3 usan instrucciones de la arquitectura AVR que no son compatibles con la arquitectura de UNO R4 WiFi, sin embargo, hay bibliotecas que ya se han portado como parte del programa de primeros usuarios o se basan en la API de Arduino.




Si trabajas como yo con Fritzing, recuerda que ya se creo la librería 'Arduino UNO R4 Wi-Fi' para realizar nuestros esquemáticos.


Bibliografía https://www.arduino.cc/


"La palabra 'Arduino' y los logotipos oficiales son marcas comerciales con copyright © de Arduino AG. El software Arduino IDE es propiedad de sus respectivos autores. La licencia principal que rige los productos de Arduino es la Licencia Pública General de GNU (GPL) y la Licencia Pública General Menor de GNU (LGPL). Todos los derechos están reservados por sus respectivos propietarios y licencias correspondientes."




Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Arduino GIGA R1 Wi-Fi

SparkFun Pro Micro

Arduino Pro Mini

Simulador Wokwi - Generalidades

Nuevos Microcontroladores Raspberry Pi Pico W, H y WH

Las 10 formas más fáciles de averiar tu Arduino

FTDI como programador ISP

Arduino UNO Rev3

Arduino NANO v3

Arduino UNO WiFi Rev2

Nueva Placa Arduino Nano RP2040 Connect

Nuevo Microcontrolador Raspberry Pi Pico

Nueva Raspberry Pi 400

Convierte fácilmente una Fuente ATX de PC en una Fuente para alimentar tus proyectos Arduino y/o Raspberry Pi

Conociendo La Familia de los Módulos WiFi ESP8266

Cómo Detectar un Arduino Falsificado

Uso cookies propias y de terceros para mejorar tu navegación. Si continuas navegando en mi blog considero que aceptas el uso de cookies. OK Más información