CursosEmpresasBlogLiveConfPrecios

Entrada Digital con ESP32

Clase 19 de 30 • Curso de IoT: Programación de Microcontroladores ESP32

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Introducción a los microcontroladores

    Introducción a los microcontroladores

    10:48 min
  • 2
    La importancia de la industria IoT

    La importancia de la industria IoT

    16:08 min
  • 3
    Tipos de computadoras

    Tipos de computadoras

    12:50 min
  • 4
    Cómo escoger un microcontrolador

    Cómo escoger un microcontrolador

    14:59 min

Hardware

  • 5
    Características del ESP32

    Características del ESP32

    16:15 min

ESP-IDF

  • 6
    Documentación oficial del ESP-IDF

    Documentación oficial del ESP-IDF

    08:43 min
  • 7
    Instalación del ESP-IDF en Windows

    Instalación del ESP-IDF en Windows

    11:06 min
  • 8

    Instalación de ESP-IDF en macOS Ventura con M1 y Python 3.10

    03:46 min
  • 9

    Instalación de ESP-IDF en Ubuntu 22.04 con Python 3.10

    03:42 min
  • 10
    Lista de materiales

    Lista de materiales

    11:50 min
  • 11
    Proyectos con ESP-IDF

    Proyectos con ESP-IDF

    17:12 min
  • 12
    Primer proyecto

    Primer proyecto

    12:28 min

API Core

  • 13
    Hola mundo con ESP-IDF

    Hola mundo con ESP-IDF

    12:27 min
  • 14
    Sistemas Operativos en Tiempo Real

    Sistemas Operativos en Tiempo Real

    08:28 min
  • 15
    FreeRTOS con ESP32

    FreeRTOS con ESP32

    14:48 min
  • 16
    Ciclo de vida de las tareas con FreeRTOS

    Ciclo de vida de las tareas con FreeRTOS

    08:56 min
  • 17
    Almacenamiento con ESP32

    Almacenamiento con ESP32

    20:42 min

Peripherals API

  • 18
    Salida Digital con ESP32

    Salida Digital con ESP32

    14:37 min
  • 19
    Entrada Digital con ESP32

    Entrada Digital con ESP32

    Viendo ahora
  • 20
    Entrada Analógica con ESP32

    Entrada Analógica con ESP32

    19:44 min
  • 21
    Modulación de Ancho de Pulsos

    Modulación de Ancho de Pulsos

    09:20 min
  • 22
    Control PWM con ESP32 y LEDC

    Control PWM con ESP32 y LEDC

    19:47 min

Servidor Web

  • 23
    Redes y protocolos de Internet

    Redes y protocolos de Internet

    18:16 min
  • 24
    Redes WiFi

    Redes WiFi

    07:07 min
  • 25
    Loop de eventos

    Loop de eventos

    05:02 min
  • 26
    Conexión WiFi con ESP32

    Conexión WiFi con ESP32

    18:58 min
  • 27
    Servidor HTTP básico con ESP32

    Servidor HTTP básico con ESP32

    16:36 min

Smart Light

  • 28
    Dimmer LED via HTTP con ESP32

    Dimmer LED via HTTP con ESP32

    28:00 min
  • 29
    Aplicación Web con ESP32

    Aplicación Web con ESP32

    20:02 min

Despedida

  • 30
    Tu primer proyecto de IoT con ESP32

    Tu primer proyecto de IoT con ESP32

    01:23 min
Tomar examen
    Martín Gutiérrez Hernández

    Martín Gutiérrez Hernández

    student•
    hace 3 años

    Pull-Up y Pull-Down

    Dentro del esp32 podemos activar estas resistencias y así ahorrarnos una resistencia, yo active la resistencia pull-down configurándola desde una estructura pero también se puede activar por medio de la función gpio_set_pull_mode() !codigo usado !gif de circuito

      Harrison Malagon

      Harrison Malagon

      student•
      hace 3 años

      Gracias Martin, hice mi codigo usando la función:

      #include <stdio.h> #include "freertos/FreeRTOS.h" #include "driver/gpio.h" #define LED_PIN 2 #define BTN_PIN 14 void app_main(void) { int led_state = 0; // Configuración de pines gpio_reset_pin(LED_PIN); gpio_reset_pin(BTN_PIN); gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(BTN_PIN, GPIO_MODE_INPUT); // Configuración de pull-up o pull-down // gpio_set_pull_mode(BTN_PIN, GPIO_PULLUP_ONLY); // Si el pulsador conecta a GND gpio_set_pull_mode(BTN_PIN, GPIO_PULLDOWN_ONLY); // Si el pulsador conecta a VCC gpio_set_level(LED_PIN, led_state); while (1) { // Lee el estado del pulsador led_state = gpio_get_level(BTN_PIN); // Actualiza el estado del LED con el estado del pulsador gpio_set_level(LED_PIN, led_state); } }
      Carlos Andres Betancourt Perez

      Carlos Andres Betancourt Perez

      student•
      hace 2 años

      excelente, muy parecido a las estructuras que se usan en STM32 con HAL en el stm32cube IDE

    Mariana Valencia Gallego

    Mariana Valencia Gallego

    student•
    hace 3 años

    Es tonto, pero me sentí muy feliz de que funcionara todo a la primera :D

    Luis Ariel Torres

    Luis Ariel Torres

    student•
    hace 2 años

    Modificando un poco el programa para que ponga en la salida el valor que leyo en la entrada, pero invertido, agregando un delay de 500ms y conectando con un cable la entrada con la salida "en este caso no es necesario la resistencia de pull-up", nos queda el led parpadeando una ves por segundo. Como la salida esta conectada con la entrada, el ESP32 lee el estado actual del LED en el pin de entrada, lo invierte, modifica el estado del led, espera 500ms y vuelve a empezar. Asi se ve en un osciloscopio:

    clase_19.png

    Este seria el código:

    #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #define LED_PIN 4 #define BTN_PIN 14 void app_main(void) { int led_state = 0; gpio_reset_pin(LED_PIN); gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(BTN_PIN, GPIO_MODE_INPUT); gpio_set_level(LED_PIN, led_state); while (1) { led_state = gpio_get_level(BTN_PIN); gpio_set_level(LED_PIN, !led_state); vTaskDelay(50); } }
    Carlos Andres Betancourt Perez

    Carlos Andres Betancourt Perez

    student•
    hace 2 años

    Hola aquí comparto el código con algunas correcciones ya que el de la clase reinicia el microcontorlador cada cierto tiempo:

    //incluimos las librerias necesarias #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #include "esp_log.h" //Privated defines #define LED1 19 #define PUSH 25 //Global variables static const char* TAG = "ESP32"; uint8_t led_state = 0; uint8_t last_state = 0; //function prototypes static void esp_logs(esp_err_t* err, char* ok, char* fail); static esp_err_t led_init(void); static esp_err_t push_button_init(void); //main function void app_main(void) { led_init(); push_button_init(); //apagamos el led inicialmente gpio_set_level(LED1, led_state); ESP_LOGI(TAG, "LED state: %u", led_state); while (true) { led_state = gpio_get_level(PUSH); if (led_state != last_state) { gpio_set_level(LED1, led_state); ESP_LOGI(TAG, "LED state: %u", led_state); last_state = led_state; } vTaskDelay(pdMS_TO_TICKS(10)); } } //------------------------------ static void esp_logs(esp_err_t* err, char* ok, char* fail) { if (*err == ESP_OK) ESP_LOGI(TAG, "%s", ok); else ESP_LOGE(TAG, "%s", fail); } //-------------------------------- static esp_err_t led_init(void) { esp_err_t err; err = gpio_reset_pin(LED1); esp_logs(&err, "LED Reset Done", "LED Reset Failed!!"); err = gpio_set_direction(LED1, GPIO_MODE_OUTPUT); esp_logs(&err, "LED GPIO config Done", "LED GPIO config Failed!!"); return err; } //------------------------------ static esp_err_t push_button_init(void) { esp_err_t err; err = gpio_set_direction(PUSH, GPIO_MODE_INPUT); esp_logs(&err, "BUTTON GPIO config Done", "BUTTON GPIO config Failed!!"); return err; } //------------------------------ ```//incluimos las librerias necesarias#include \<stdio.h>#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "driver/gpio.h"#include "esp\_log.h" //Privated defines#define LED1         19#define PUSH         25 //Global variablesstatic const char\* TAG = "ESP32";*uint8\_t* led\_state = 0;*uint8\_t* last\_state = 0; //function prototypesstatic void esp\_logs(*esp\_err\_t*\* *err*, char\* *ok*, char\* *fail*);static *esp\_err\_t* led\_init(void);static *esp\_err\_t* push\_button\_init(void); //main functionvoid app\_main(void) {   led\_init();   push\_button\_init();   //apagamos el led inicialmente   gpio\_set\_level(LED1, led\_state);   ESP\_LOGI(TAG, "LED state: %u", led\_state);    while (true) {      led\_state = gpio\_get\_level(PUSH);      if (led\_state != last\_state) {         gpio\_set\_level(LED1, led\_state);         ESP\_LOGI(TAG, "LED state: %u", led\_state);         last\_state = led\_state;      }      vTaskDelay(pdMS\_TO\_TICKS(10));   }}//------------------------------ static void esp\_logs(*esp\_err\_t*\* *err*, char\* *ok*, char\* *fail*) {   if (\**err* == ESP\_OK) ESP\_LOGI(TAG, "%s", *ok*);   else ESP\_LOGE(TAG, "%s", *fail*);}//-------------------------------- static *esp\_err\_t* led\_init(void) {   *esp\_err\_t* err;   err = gpio\_reset\_pin(LED1);   esp\_logs(\&err, "LED Reset Done", "LED Reset Failed!!");   err = gpio\_set\_direction(LED1, GPIO\_MODE\_OUTPUT);   esp\_logs(\&err, "LED GPIO config Done", "LED GPIO config Failed!!");    return err;}//------------------------------ static *esp\_err\_t* push\_button\_init(void) {   *esp\_err\_t* err;   err = gpio\_set\_direction(PUSH, GPIO\_MODE\_INPUT);   esp\_logs(\&err, "BUTTON GPIO config Done", "BUTTON GPIO config Failed!!");    return err;}//------------------------------
    Fabio Quimbay

    Fabio Quimbay

    student•
    hace 3 años

    Por favor, excuseme por mi pregunta, pero tal vez podrían orientarme sobre que fuente se está usando para esta práctica? Entiendo que es una fuente de 5V DC ?

      Diana Martinez

      Diana Martinez

      student•
      hace 3 años

      Únicamente es un cable USB con un cargador de celular cualquiera, pues la tarjeta funciona a 5V y la corriente consumida en este curso es mínima.

    Martín Gutiérrez Hernández

    Martín Gutiérrez Hernández

    student•
    hace 3 años

    ¿Qué es un strapping pin y cual es su función?

      Diana Martinez

      Diana Martinez

      student•
      hace 3 años

      Los Strapping Pins son pines de uso específico, que si bien se pueden usar con otros fines, están diseñados para funcionar como una especie de configuración por hardware que dependiendo cómo se conecten es cómo podemos poner el chip en modo de programación, o reiniciarlo.

      Así que es buena idea dejarlos libres para esos usos.

    Gabriel Obregón

    Gabriel Obregón

    student•
    hace 9 meses

    Lectura de Señales de Entrada con GPIO en el ESP32

    Ahora que ya sabes cómo controlar las salidas de señales con tu ESP32, vamos a aprender la operación contraria: leer señales de entrada utilizando los pines GPIO. Para ello, construiremos un circuito específico.

    Descripción del Circuito

    El circuito que usaremos es similar al de la clase anterior, donde controlamos un LED. La diferencia es que ahora agregamos un push button (botón pulsador), que permitirá enviar una señal digital 1 o 0 según su estado.

    Configuración Pull-Down

    Este circuito utiliza una configuración pull-down, lo que significa que:

    • Hay una resistencia conectada a tierra (GND).
    • En los diagramas eléctricos, "tierra" suele estar en la parte inferior y 5V en la parte superior.
    • La resistencia garantiza que la señal se mantenga en 0 lógico por defecto.

    Cuando el botón se presiona, la señal cambia a 1 lógico y el ESP32 detecta este cambio.

    Conexión del Push Button

    • Tiene cuatro pines, de los cuales dos están conectados internamente.
    • Funciona como un puente entre la entrada y la salida de la señal.
    • Al presionar el botón, se genera continuidad en la corriente.

    Función de la Resistencia

    La resistencia pull-down es clave para:

    • Evitar cortocircuitos.
    • Asegurar que la señal tenga un estado bien definido.
      • Por defecto: 0 lógico (señal baja).
      • Al presionar el botón: 1 lógico (señal alta, 5V).

    Código para Leer la Entrada Digital

    Vamos a modificar el código anterior para que el LED se encienda solo cuando se presione el botón.

    #include <stdio.h>

    #include "freertos/FreeRTOS.h"

    #include "driver/gpio.h"

    #define LED_PIN 4

    #define BTN_PIN 14

    void app_main(void)

    {

      int led_state = 0;

      gpio_reset_pin(LED_PIN);

      gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);

      gpio_set_direction(BTN_PIN, GPIO_MODE_INPUT);

      gpio_set_level(LED_PIN, led_state);

      while (1)

      {

        led_state = gpio_get_level(BTN_PIN);

        gpio_set_level(LED_PIN, led_state);

      }

    }

    Explicación del Código

    1. Definimos los pines del LED y del botón.
    2. Configuramos el LED como salida y el botón como entrada.
    3. Inicializamos el LED en estado apagado.
    4. En el ciclo infinito:
      • Leemos la entrada digital del botón con gpio_get_level(BTN_PIN).
      • Asignamos ese valor al LED (gpio_set_level(LED_PIN, led_state)).

    De este modo, cuando presionemos el botón, el LED se encenderá. Cuando lo soltemos, el LED se apagará.

    Compilación y Prueba del Código

    1. Compilar el código

      • Ejecutamos la compilación desde la terminal.
      • Como ya se ha compilado antes, el proceso será más rápido.
    2. Flashear el Microcontrolador

      • Usamos el comando flash, indicando el puerto COM.
    3. Probar el Circuito

      • Observamos el LED en la protoboard:
        • Botón sin presionar → LED apagado.
        • Botón presionado → LED encendido.

    Uso de Wokwi.com para Simulación

    Si no tienes el hardware físico, puedes probar este circuito en, un simulador de ESP32.

    Ventajas de Wokwi.com

    • Permite escribir código en ESP-IDF (aunque puede ser una versión anterior).
    • Simula el circuito electrónico con diagramas visuales.
    • Tres pestañas principales:
      • main.c → Código principal.
      • diagram.json → Configuración del circuito.
      • Library Manager → Permite cargar archivos adicionales.
    • Posibilidad de agregar más componentes (como LEDs o sensores) con el botón +.

    Ejecutando la Simulación

    1. Abrimos el proyecto en Wokwi.
    2. Hacemos clic en “Simular”.
    3. Probamos el circuito:
      • Clic en el botón virtual → El LED se enciende.
      • Soltar el botón → El LED se apaga.

    Limitaciones del Simulador

    ❌ No soporta Bluetooth ni Wi-Fi. ✅ Funciona perfectamente para entradas y salidas digitales, sensores y pantallas LCD.

     ✅ Es gratuito y fácil de usar.

    Conclusión y Próximos Pasos

    Hemos aprendido a leer señales de entrada digital con ESP32 y a probar el código en hardware real y en simulación. Ahora dominas:

    ✅ Configuración de pines GPIO como entrada y salida.

    ✅ Uso de resistencias pull-down para señales estables.

    ✅ Interacción con botones para controlar dispositivos.

    ✅ Simulación de circuitos en Wokwi.com.

    Julio Cardenas

    Julio Cardenas

    student•
    hace 2 años

    Esta es la diferencia entre pull up y pull down. . .

    pullup_pulldown.jpg

    Julio Cardenas

    Julio Cardenas

    student•
    hace 2 años

    El switch lo conecte en pull-up. De esta manera la logica del programa queda al reves . .

    #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #define LED_RED_PIN 4 #define LED_GREEN_PIN 0 #define LED_BLUE_PIN 12 #define SW_KY040_PIN 34 bool state_red = false; bool state_green = false; bool state_blue = false; const TickType_t blink_delay = 1000 / portTICK_PERIOD_MS; const TickType_t debounce_delay = 50 / portTICK_PERIOD_MS; void app_main(void) { gpio_reset_pin(LED_RED_PIN); gpio_reset_pin(LED_GREEN_PIN); gpio_reset_pin(LED_BLUE_PIN); gpio_set_direction(LED_RED_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(LED_GREEN_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(LED_BLUE_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(SW_KY040_PIN, GPIO_MODE_INPUT); gpio_set_level(LED_RED_PIN, state_red); gpio_set_level(LED_GREEN_PIN, state_green); gpio_set_level(LED_BLUE_PIN, state_blue); while (true) { //El switch esta conectado en pull up //su estado normal es alto //cuando se oprime su estado es bajo state_red = gpio_get_level(SW_KY040_PIN); gpio_set_level(LED_RED_PIN, !state_red); if (!state_red) vTaskDelay(debounce_delay); } }
    Jesús Ramon

    Jesús Ramon

    student•
    hace 3 años

    La conexión pull-up y pull-down se refiere a cómo se conecta una resistencia en un circuito electrónico para mantener un valor específico en un pin de entrada o salida.

    En la conexión pull-up, una resistencia se conecta entre el pin de entrada o salida y una fuente de voltaje positivo (VCC), que generalmente es 5V en sistemas electrónicos digitales. Esto significa que cuando el pin está en estado "abierto" o no se está usando, la resistencia tira del voltaje del pin hacia el VCC, manteniéndolo en un estado lógico alto (1).

    Por otro lado, en la conexión pull-down, la resistencia se conecta entre el pin de entrada o salida y una fuente de voltaje negativo (GND). Esto significa que cuando el pin está en estado "abierto" o no se está usando, la resistencia tira del voltaje del pin hacia el GND, manteniéndolo en un estado lógico bajo (0).

    La conexión pull-up y pull-down se utilizan comúnmente en la entrada de botones o interruptores, para asegurar que la entrada tenga un valor definido incluso cuando el botón o interruptor no está activado. También se pueden usar en la salida de un circuito, para garantizar que el pin esté en un estado definido si el circuito está desconectado o no se está utilizando.

    Es importante tener en cuenta que la elección de una conexión pull-up o pull-down depende del diseño específico del circuito y de su funcionamiento.

      Luis Ariel Torres

      Luis Ariel Torres

      student•
      hace 2 años

      Excelente, las resistencias pull-up y pull-down tambien se utilizan cuando la entrada esta conectada a una salida tipo open colector como son por ejemplo los sensores de efecto hall de los motores brushless.

    Harrison Malagon

    Harrison Malagon

    student•
    hace 3 años

    Esta página tambien tiene un excelente Pin Out : https://lastminuteengineers.com/esp32-pinout-reference/

    Esta es la documentación para configurar el GPIO como pull/down : documentación

    Hay que recodar que los pines GPIO 34-39 son solo de entrada. Estos pines no cuentan con un controlador de salida o un circuito interno pull-up/pull-down.

    Rogelio Meza

    Rogelio Meza

    student•
    hace un año

    En mi caso quise hacer una pequeña variación utilizando el botón en configuración pull up, el pin 16 como entrada y cambiando el estado cada que presione el botón sin la necesidad de mantenerlo presionado (me gusta más asi), mi resultado fue este:

    #include <stdio.h> #include "freertos/FreeRTOS.h" //Libreria para funciones con RTOS. #include "freertos/task.h" //Libreria para manejo de procesos. #include "driver/gpio.h" //Libreria para controladores de gpio. /* El programa prende y apaga un led cada que se presiona un boton utilizando GPIO. **Nota: La lógica del funcionamiento del boton esta diseñado para un boton con resistor en configuración pull. ** La entrada del boton está normalmente en 1 y cuando se presiona, detecta un 0. */ #define LED_PIN 4 //Establece macros para operar pines GPIO. #define Input_PIN 16 void app_main(void) { int led_state = 0; gpio_reset_pin(LED_PIN); //Configura internamente pines de entrada y salida. gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT ); gpio_set_direction(Input_PIN, GPIO_MODE_INPUT ); gpio_set_level(LED_PIN, 1); //Asegura led apagado. vTaskDelay(1000 / portTICK_PERIOD_MS); gpio_set_level(LED_PIN, 0); //Asegura led apagado. vTaskDelay(1000 / portTICK_PERIOD_MS); gpio_set_level(LED_PIN, 1); //Asegura led apagado. //Indicador de inicio de programa exitoso con blink de led a utilizar. vTaskDelay(1000 / portTICK_PERIOD_MS); gpio_set_level(LED_PIN, 0); //Asegura led apagado. while(1){ //Repite ciclo de lectura y proceso infinitamente. if(gpio_get_level(Input_PIN) == 0){ led_state = !led_state; //Cambia estado de led cuando se detecta que el boton está presionado. gpio_set_level(LED_PIN, led_state); while(gpio_get_level(Input_PIN) == 0){ //Evita continuar hasta que el boton deje de estar presionado. vTaskDelay(10/ portTICK_PERIOD_MS); } } else{} } }

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads