[
  {
    "title": "Cursocoche3Distancia",
    "folderName": "CursoCoche3Distancia",
    "tags": [
      "Ping ultrasonic sensor"
    ],
    "libraries": [
      {
        "name": "Ping",
        "version": "unknown"
      }
    ],
    "description": "Distance sensor example using Ping ultrasonic sensor. Measures distance and outputs results in microseconds and centimeters to serial monitor. Part of a car course tutorial.",
    "files": [
      {
        "name": "CursoCoche3Distancia.ino",
        "path": "./CursoCoche3Distancia/CursoCoche3Distancia.ino"
      }
    ]
  },
  {
    "title": "Demomax7219 Manualruso",
    "folderName": "demoMAX7219_manualRuso",
    "tags": [
      "MAX7219 LED matrix"
    ],
    "libraries": [
      {
        "name": "GyverMAX7219",
        "version": "unknown"
      }
    ],
    "description": "Demonstration of GyverMAX7219 library for controlling LED matrix displays. Displays various graphics including pixels, lines, circles (filled and stroked), and animated patterns.",
    "files": [
      {
        "name": "demoMAX7219_manualRuso.ino",
        "path": "./demoMAX7219_manualRuso/demoMAX7219_manualRuso.ino"
      }
    ]
  },
  {
    "title": "Deviceexamplegps",
    "folderName": "DeviceExampleGPS",
    "tags": [
      "GPS module"
    ],
    "libraries": [
      {
        "name": "TinyGPS++",
        "version": "unknown"
      },
      {
        "name": "SoftwareSerial",
        "version": "unknown"
      }
    ],
    "description": "GPS device example using TinyGPS++ library. Reads NMEA data from GPS module via SoftwareSerial and displays location coordinates (latitude/longitude) and datetime information.",
    "files": [
      {
        "name": "DeviceExampleGPS.ino",
        "path": "./DeviceExampleGPS/DeviceExampleGPS.ino"
      }
    ]
  },
  {
    "title": "Digitled72Xxtest",
    "folderName": "DigitLed72xxTest",
    "tags": [
      "MAX7219/MAX7221"
    ],
    "libraries": [
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "DigitLed72xx",
        "version": "unknown"
      }
    ],
    "description": "Basic test code for DigitLed72xx library to control MAX7219/MAX7221 LED display drivers. Uses SPI interface. Note: code appears incomplete with syntax errors.",
    "files": [
      {
        "name": "DigitLed72xxTest.ino",
        "path": "./DigitLed72xxTest/DigitLed72xxTest.ino"
      }
    ]
  },
  {
    "title": "Distanceshutterpentax",
    "folderName": "DistanceShutterPentax",
    "tags": [
      "HC-SR04 ultrasonic sensor",
      "IR LED"
    ],
    "libraries": [],
    "description": "Camera remote trigger using HC-SR04 ultrasonic sensor. Triggers Pentax camera shutter via IR signal when objects come within trigger distance (60cm). Emits 38kHz IR carrier frequency.",
    "files": [
      {
        "name": "DistanceShutterPentax.ino",
        "path": "./DistanceShutterPentax/DistanceShutterPentax.ino"
      }
    ]
  },
  {
    "title": "Distancialcd",
    "folderName": "DistanciaLCD",
    "tags": [
      "Ethernet Shield",
      "HC-SR04",
      "DHT11"
    ],
    "libraries": [
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "Ethernet",
        "version": "unknown"
      }
    ],
    "description": "Ethernet web server displaying distance (HC-SR04) and temperature/humidity (DHT11) readings. Uses Arduino Ethernet Shield with DHCP IP assignment. Web page auto-refreshes every 2 seconds.",
    "files": [
      {
        "name": "DistanciaLCD.ino",
        "path": "./DistanciaLCD/DistanciaLCD.ino"
      }
    ]
  },
  {
    "title": "Ejemplo Brujula Hmc5883L",
    "folderName": "Ejemplo_Brujula_HMC5883L",
    "tags": [
      "HMC5883L magnetometer",
      "SSD1306 OLED (U8glib)"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "unknown"
      },
      {
        "name": "compass.h",
        "version": "unknown"
      }
    ],
    "description": "Compass example using HMC5883L magnetometer sensor. Reads X, Y, Z magnetic field values and calculates heading angle in degrees. Outputs readings to serial monitor.",
    "files": [
      {
        "name": "Ejemplo_Brujula_HMC5883L.ino",
        "path": "./Ejemplo_Brujula_HMC5883L/Ejemplo_Brujula_HMC5883L.ino"
      }
    ]
  },
  {
    "title": "Esp-12 Testio",
    "folderName": "ESP-12_TESTIO",
    "tags": [
      "ESP8266 ESP-12"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 GPIO testing sketch. Reads and displays digital values from multiple GPIO pins (0, 2, 4, 5, 12, 13, 14, 15) and ADC value every 200ms. Useful for debugging IO pins.",
    "files": [
      {
        "name": "ESP-12_TESTIO.ino",
        "path": "./ESP-12_TESTIO/ESP-12_TESTIO.ino"
      }
    ]
  },
  {
    "title": "Esp32 Async Web Server",
    "folderName": "ESP32_Async_Web_Server",
    "tags": [
      "ESP32"
    ],
    "libraries": [
      {
        "name": "WiFi",
        "version": "unknown"
      },
      {
        "name": "ESPAsyncWebServer",
        "version": "unknown"
      },
      {
        "name": "SPIFFS",
        "version": "unknown"
      }
    ],
    "description": "ESP32 async web server with WebSocket support. Serves HTML pages from SPIFFS, provides LED control (on/off) endpoints, and includes WebSocket event handling for real-time communication.",
    "files": [
      {
        "name": "ESP32_Async_Web_Server.ino",
        "path": "./ESP32_Async_Web_Server/ESP32_Async_Web_Server.ino"
      }
    ]
  },
  {
    "title": "Esp32 Hardware Serial Test",
    "folderName": "ESP32_HARDWARE_SERIAL_TEST",
    "tags": [
      "ESP32"
    ],
    "libraries": [],
    "description": "ESP32 hardware serial (Serial2) test using GPIO pins 16 (RX) and 17 (TX). Reads data from Serial2 and outputs to main Serial monitor at 9600 baud.",
    "files": [
      {
        "name": "ESP32_HARDWARE_SERIAL_TEST.ino",
        "path": "./ESP32_HARDWARE_SERIAL_TEST/ESP32_HARDWARE_SERIAL_TEST.ino"
      }
    ]
  },
  {
    "title": "Esp8266 201 Mqtt Sleep Prueba",
    "folderName": "ESP8266_201_MQTT_SLEEP_PRUEBA",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT_Client",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 deep sleep MQTT test. Connects to WiFi, publishes counter value to MQTT broker, then enters deep sleep for 10 seconds. Uses Adafruit MQTT library with local broker.",
    "files": [
      {
        "name": "ESP8266_201_MQTT_SLEEP_PRUEBA.ino",
        "path": "./ESP8266_201_MQTT_SLEEP_PRUEBA/ESP8266_201_MQTT_SLEEP_PRUEBA.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Gps Follow Me",
    "folderName": "ESP8266_GPS_FOLLOW_ME",
    "tags": [
      "ESP32",
      "LIS3MDL magnetometer",
      "Nokia 5110 LCD",
      "GPS modules",
      "Motor drivers"
    ],
    "libraries": [
      {
        "name": "WiFi",
        "version": "unknown"
      },
      {
        "name": "ESPAsyncWebServer",
        "version": "unknown"
      },
      {
        "name": "SPIFFS",
        "version": "unknown"
      },
      {
        "name": "ArduinoJson",
        "version": "unknown"
      },
      {
        "name": "Wire",
        "version": "unknown"
      },
      {
        "name": "LIS3MDL",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "TinyGPS++",
        "version": "unknown"
      },
      {
        "name": "PCD8544",
        "version": "unknown"
      }
    ],
    "description": "GPS-following robot car. Receives GPS coordinates from Android phone via WiFi TCP server (port 2300), reads local GPS via Serial2, uses LIS3MDL magnetometer for orientation, and navigates toward target using Nokia 5110 LCD display and WebSocket status updates.",
    "files": [
      {
        "name": "ESP8266_GPS_FOLLOW_ME.ino",
        "path": "./ESP8266_GPS_FOLLOW_ME/ESP8266_GPS_FOLLOW_ME.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Lib Itead Pruebacliente",
    "folderName": "ESP8266_LIB_ITEAD_PruebaCliente",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266",
        "version": "unknown"
      },
      {
        "name": "SoftwareSerial",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 TCP client using ITEAD WeeESP8266 library. Connects to WiFi, creates TCP connection to ThingSpeak API, and sends HTTP POST request with weather data to update Thingspeak channels.",
    "files": [
      {
        "name": "ESP8266_LIB_ITEAD_PruebaCliente.ino",
        "path": "./ESP8266_LIB_ITEAD_PruebaCliente/ESP8266_LIB_ITEAD_PruebaCliente.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Lib Itead Server",
    "folderName": "ESP8266_LIB_ITEAD_Server",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266",
        "version": "unknown"
      },
      {
        "name": "SoftwareSerial",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 TCP server using ITEAD WeeESP8266 library. Creates TCP server on port 8090, handles multiple client connections, echoes received data back to clients. Supports WiFi network switching.",
    "files": [
      {
        "name": "ESP8266_LIB_ITEAD_Server.ino",
        "path": "./ESP8266_LIB_ITEAD_Server/ESP8266_LIB_ITEAD_Server.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Meteologger Thingspeak Mqttlocal",
    "folderName": "ESP8266_meteologger_thingspeak_mqttlocal",
    "tags": [
      "ESP8266",
      "MeteoLogger sensor"
    ],
    "libraries": [
      {
        "name": "RunningMedian",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "WifiUdp",
        "version": "unknown"
      },
      {
        "name": "TimeLib",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT_Client",
        "version": "unknown"
      },
      {
        "name": "MeteoLogger",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      }
    ],
    "description": "Weather station logger publishing to both ThingSpeak and local MQTT broker. Reads from MeteoLogger sensor, applies RunningMedian filtering, sends temperature, humidity, pressure data to MQTT topics and ThingSpeak fields.",
    "files": [
      {
        "name": "ESP8266_meteologger_thingspeak_mqttlocal.ino",
        "path": "./ESP8266_meteologger_thingspeak_mqttlocal/ESP8266_meteologger_thingspeak_mqttlocal.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Mqttlocal Prueba Voltaje",
    "folderName": "ESP8266_mqttlocal_prueba_voltaje",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 voltage reading and MQTT publishing. Reads ESP8266 VCC voltage using ADC mode, publishes to MQTT topic. Includes ArduinoOTA for over-the-air updates. Note: deepSleep commented out.",
    "files": [
      {
        "name": "ESP8266_mqttlocal_prueba_voltaje.ino",
        "path": "./ESP8266_mqttlocal_prueba_voltaje/ESP8266_mqttlocal_prueba_voltaje.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Mqtt Oled Meteo",
    "folderName": "ESP8266_MQTT_OLED_METEO",
    "tags": [
      "ESP8266",
      "SSD1306 OLED"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "U8g2lib",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "Wire",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 MQTT subscriber displaying weather data on SSD1306 OLED display. Subscribes to meteo topics (Temp1, Temp2, Humidity, Pressure) from MQTT broker and displays on 128x64 OLED via U8g2 library.",
    "files": [
      {
        "name": "ESP8266_MQTT_OLED_METEO.ino",
        "path": "./ESP8266_MQTT_OLED_METEO/ESP8266_MQTT_OLED_METEO.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Mqtt Oled Meteo Gran",
    "folderName": "ESP8266_MQTT_OLED_METEO_GRAN",
    "tags": [
      "ESP8266",
      "SSD1306 OLED"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "U8g2lib",
        "version": "unknown"
      },
      {
        "name": "WiFiUdp",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "Wire",
        "version": "unknown"
      }
    ],
    "description": "Enhanced OLED weather display subscribing to multiple ESP sensor nodes (esp02 and esp201). Rotates between location displays (Taller/Cocina). Includes NTP time sync and larger font display for temperature readings.",
    "files": [
      {
        "name": "ESP8266_MQTT_OLED_METEO_GRAN.ino",
        "path": "./ESP8266_MQTT_OLED_METEO_GRAN/ESP8266_MQTT_OLED_METEO_GRAN.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Mqtt Oled Meteo Multi",
    "folderName": "ESP8266_MQTT_OLED_METEO_multi",
    "tags": [
      "ESP8266",
      "SSD1306 OLED"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "U8g2lib",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "Wire",
        "version": "unknown"
      }
    ],
    "description": "Multi-sensor OLED weather display. Subscribes to two weather stations (esp02 and esp201) via MQTT and displays all 8 data points (temp1, temp2, humidity, pressure for each station) on OLED screen simultaneously.",
    "files": [
      {
        "name": "ESP8266_MQTT_OLED_METEO_multi.ino",
        "path": "./ESP8266_MQTT_OLED_METEO_multi/ESP8266_MQTT_OLED_METEO_multi.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Tft Mqtt St7735S",
    "folderName": "ESP8266_TFT_MQTT_ST7735S",
    "tags": [
      "ESP8266",
      "ST7735S TFT (declared but unused)"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 voltage monitoring with MQTT and TFT display. Reads VCC voltage, publishes to MQTT topic. Includes ArduinoOTA. Note: TFT library imported but not used in code.",
    "files": [
      {
        "name": "ESP8266_TFT_MQTT_ST7735S.ino",
        "path": "./ESP8266_TFT_MQTT_ST7735S/ESP8266_TFT_MQTT_ST7735S.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Thingspeak Mqttlocal Pruebalowpower",
    "folderName": "ESP8266_thingspeak_mqttlocal_pruebaLowPower",
    "tags": [
      "ESP8266",
      "DHT22",
      "BMP085"
    ],
    "libraries": [
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      },
      {
        "name": "DHT",
        "version": "unknown"
      }
    ],
    "description": "Low-power weather station using deep sleep. Reads DHT22 temperature/humidity, BMP085 pressure/temperature, publishes to MQTT and ThingSpeak, then enters deep sleep for 20 seconds.",
    "files": [
      {
        "name": "ESP8266_thingspeak_mqttlocal_pruebaLowPower.ino",
        "path": "./ESP8266_thingspeak_mqttlocal_pruebaLowPower/ESP8266_thingspeak_mqttlocal_pruebaLowPower.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Thingspeak Post",
    "folderName": "ESP8266_Thingspeak_POST",
    "tags": [
      "ESP8266",
      "MeteoLogger sensor"
    ],
    "libraries": [
      {
        "name": "RunningMedian",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "MeteoLogger",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      }
    ],
    "description": "Weather station posting data to ThingSpeak only (no MQTT). Uses MeteoLogger sensor, applies RunningMedian filtering, posts temperature, humidity, pressure to ThingSpeak channels. Does NOT use MQTT.",
    "files": [
      {
        "name": "ESP8266_Thingspeak_POST.ino",
        "path": "./ESP8266_Thingspeak_POST/ESP8266_Thingspeak_POST.ino"
      }
    ]
  },
  {
    "title": "Esp8266Wifi Prueba",
    "folderName": "ESP8266WIFI_PRUEBA",
    "tags": [
      "Arduino",
      "ESP8266 (via SoftwareSerial)",
      "LED"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial",
        "version": "unknown"
      }
    ],
    "description": "Bidirectional serial-to-WiFi bridge using SoftwareSerial. Passes data between Bluetooth serial (pins 2,3) and USB serial. Toggles LED on pin 13 on each received character. Simple WiFi serial passthrough.",
    "files": [
      {
        "name": "ESP8266WIFI_PRUEBA.ino",
        "path": "./ESP8266WIFI_PRUEBA/ESP8266WIFI_PRUEBA.ino"
      }
    ]
  },
  {
    "title": "Esp8266Wifi Prueba Comandos",
    "folderName": "ESP8266WIFI_PRUEBA_COMANDOS",
    "tags": [
      "Arduino",
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 AT command tester. Sends various AT commands via serial to configure ESP8266: reset, firmware version, WiFi mode, list APs, join network, create AP, TCP connections, CIPSTART/CIPSEND for data transfer.",
    "files": [
      {
        "name": "ESP8266WIFI_PRUEBA_COMANDOS.ino",
        "path": "./ESP8266WIFI_PRUEBA_COMANDOS/ESP8266WIFI_PRUEBA_COMANDOS.ino"
      }
    ]
  },
  {
    "title": "Esp8266 Wifi Test",
    "folderName": "ESP8266_WIFI_TEST",
    "tags": [
      "esp8266",
      "wifi"
    ],
    "libraries": [],
    "description": "ESP8266 WiFi test - folder exists but may have no .ino files",
    "files": []
  },
  {
    "title": "Esp Asyncfsbrowser",
    "folderName": "ESP_AsyncFSBrowser",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "FS",
        "version": "unknown"
      },
      {
        "name": "Hash",
        "version": "unknown"
      },
      {
        "name": "ESPAsyncTCP",
        "version": "unknown"
      },
      {
        "name": "ESPAsyncWebServer",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 async file system browser with SPIFFS editor, WebSocket support, and Server-Sent Events. Provides web interface for SPIFFS file management with authentication. Includes ArduinoOTA for firmware updates.",
    "files": [
      {
        "name": "ESP_AsyncFSBrowser.ino",
        "path": "./ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino"
      }
    ]
  },
  {
    "title": "Esp Asyncwebserver Dumpserial",
    "folderName": "ESP_AsyncWebServer_DumpSerial",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "FS",
        "version": "unknown"
      },
      {
        "name": "Hash",
        "version": "unknown"
      },
      {
        "name": "ESPAsyncTCP",
        "version": "unknown"
      },
      {
        "name": "ESPAsyncWebServer",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 async web server with serial dump capability. Similar to ESP_AsyncFSBrowser but adds /dump endpoint that streams serial output to browser. Built-in SPIFFS editor with gzip-compressed HTML. Supports OTA updates.",
    "files": [
      {
        "name": "ESP_AsyncWebServer_DumpSerial.ino",
        "path": "./ESP_AsyncWebServer_DumpSerial/ESP_AsyncWebServer_DumpSerial.ino"
      }
    ]
  },
  {
    "title": "Esp Meteo Thingspeak Mqttlocal Lowpower Ota",
    "folderName": "ESP_meteo_thingspeak_mqttlocal_lowpower_ota",
    "tags": [
      "ESP8266",
      "DHT22",
      "BMP085"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "WiFiUdp",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      },
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085",
        "version": "unknown"
      },
      {
        "name": "DHT",
        "version": "unknown"
      }
    ],
    "description": "Low-power weather station with ArduinoOTA, MQTT, and ThingSpeak integration. Reads DHT22 temperature/humidity and BMP085 pressure/temperature. Publishes to local MQTT broker and ThingSpeak, then enters deep sleep for 60 seconds.",
    "files": [
      {
        "name": "ESP_meteo_thingspeak_mqttlocal_lowpower_ota.ino",
        "path": "./ESP_meteo_thingspeak_mqttlocal_lowpower_ota/ESP_meteo_thingspeak_mqttlocal_lowpower_ota.ino"
      }
    ]
  },
  {
    "title": "Esp Meteo Thingspeak Mqttlocal Lowpower Ota Dht11Solo",
    "folderName": "ESP_meteo_thingspeak_mqttlocal_lowpower_ota_DHT11SOLO",
    "tags": [
      "ESP8266",
      "DHT11",
      "BMP085"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "WiFiUdp",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      },
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "DHT",
        "version": "unknown"
      }
    ],
    "description": "Low-power weather station variant using DHT11 sensor instead of DHT22. Includes ArduinoOTA, MQTT, and ThingSpeak integration. Reads DHT11 temperature/humidity and BMP085 pressure/temperature. Deep sleep for 60 seconds between readings.",
    "files": [
      {
        "name": "ESP_meteo_thingspeak_mqttlocal_lowpower_ota_DHT11SOLO.ino",
        "path": "./ESP_meteo_thingspeak_mqttlocal_lowpower_ota_DHT11SOLO/ESP_meteo_thingspeak_mqttlocal_lowpower_ota_DHT11SOLO.ino"
      }
    ]
  },
  {
    "title": "Esp Meteo Thingspeak Mqttlocal Lowpower Ota V2 Fix",
    "folderName": "ESP_meteo_thingspeak_mqttlocal_lowpower_ota_V2_FIX",
    "tags": [
      "ESP8266",
      "DHT22",
      "BMP085"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "WiFiUdp",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      },
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085_U",
        "version": "unknown"
      },
      {
        "name": "DHT",
        "version": "unknown"
      }
    ],
    "description": "Weather station V2 with fixed BMP085 library usage (Adafruit_BMP085_Unified). Includes ArduinoOTA, MQTT, and ThingSpeak. Reads DHT22 and BMP085, publishes to MQTT and ThingSpeak, deep sleeps for 60 seconds.",
    "files": [
      {
        "name": "ESP_meteo_thingspeak_mqttlocal_lowpower_ota_V2_FIX.ino",
        "path": "./ESP_meteo_thingspeak_mqttlocal_lowpower_ota_V2_FIX/ESP_meteo_thingspeak_mqttlocal_lowpower_ota_V2_FIX.ino"
      }
    ]
  },
  {
    "title": "Esp Meteo Thingspeak No Mqttlocal Lowpower Ota V2 Fix",
    "folderName": "ESP_meteo_thingspeak_NO_mqttlocal_lowpower_ota_V2_FIX",
    "tags": [
      "ESP8266",
      "DHT22",
      "BMP085"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "WiFiUdp",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "ThingSpeak",
        "version": "unknown"
      },
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085_U",
        "version": "unknown"
      },
      {
        "name": "DHT",
        "version": "unknown"
      }
    ],
    "description": "Weather station V2 WITHOUT MQTT - ThingSpeak only. Uses delay loop (150 seconds) instead of deep sleep for continuous operation. Reads DHT22 and BMP085, posts to ThingSpeak only. Includes ArduinoOTA support.",
    "files": [
      {
        "name": "ESP_meteo_thingspeak_NO_mqttlocal_lowpower_ota_V2_FIX.ino",
        "path": "./ESP_meteo_thingspeak_NO_mqttlocal_lowpower_ota_V2_FIX/ESP_meteo_thingspeak_NO_mqttlocal_lowpower_ota_V2_FIX.ino"
      }
    ]
  },
  {
    "title": "Esp Webserver Flashdump",
    "folderName": "ESP_WebServer_FlashDump",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "WiFiClient",
        "version": "unknown"
      },
      {
        "name": "ESP8266WebServer",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 web server with LED control, serial dump endpoint, and MDNS support. Provides /on, /off endpoints for LED control, /dump for serial streaming, /inline for serial input display. Includes blink function on startup.",
    "files": [
      {
        "name": "ESP_WebServer_FlashDump.ino",
        "path": "./ESP_WebServer_FlashDump/ESP_WebServer_FlashDump.ino"
      }
    ]
  },
  {
    "title": "Esp Webserver Solo",
    "folderName": "ESP_WebServer_Solo",
    "tags": [
      "ESP8266"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "WiFiClient",
        "version": "unknown"
      },
      {
        "name": "ESP8266WebServer",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      }
    ],
    "description": "Simple ESP8266 web server with MDNS support. Serves 'hello from esp8266!' on root, /inline endpoint returns serial input, includes 404 handling. Uses ESP8266WebServer and MDNS libraries.",
    "files": [
      {
        "name": "ESP_WebServer_Solo.ino",
        "path": "./ESP_WebServer_Solo/ESP_WebServer_Solo.ino"
      }
    ]
  },
  {
    "title": "Ethernetshield Internettime Udp Ntp",
    "folderName": "EthernetShield_InternetTime_UDP_NTP",
    "tags": [
      "Arduino",
      "Ethernet Shield"
    ],
    "libraries": [
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "Ethernet",
        "version": "unknown"
      },
      {
        "name": "EthernetUdp",
        "version": "unknown"
      }
    ],
    "description": "NTP time client using Arduino Ethernet Shield. Queries time.nist.gov via UDP to get current Unix timestamp, converts to UTC time, displays hours/minutes/seconds. Uses Ethernet UDP with DHCP.",
    "files": [
      {
        "name": "EthernetShield_InternetTime_UDP_NTP.ino",
        "path": "./EthernetShield_InternetTime_UDP_NTP/EthernetShield_InternetTime_UDP_NTP.ino"
      }
    ]
  },
  {
    "title": "Rgb Led Lightpainting",
    "folderName": "RGB_LED_LIGHTPAINTING",
    "tags": [
      "Arduino Uno"
    ],
    "libraries": [],
    "description": "RGB LED light painting controller with color cycling and rainbow effects",
    "files": []
  },
  {
    "title": "Rotary 7 Segment",
    "folderName": "Rotary_7_Segment",
    "tags": [
      "Arduino Leonardo"
    ],
    "libraries": [],
    "description": "7-segment display driven by rotary encoder using CD4511BE IC with interrupts",
    "files": []
  },
  {
    "title": "Rotary Encoder Leddimer Bo",
    "folderName": "Rotary_Encoder_LedDIMER_BO",
    "tags": [
      "ATtiny85"
    ],
    "libraries": [],
    "description": "LED dimmer using rotary encoder for ATtiny85",
    "files": []
  },
  {
    "title": "Rotary Encoder Nointerrupts",
    "folderName": "Rotary_Encoder_NoInterrupts",
    "tags": [
      "Arduino (pins 14,15)"
    ],
    "libraries": [],
    "description": "Rotary encoder reading without interrupts using state machine",
    "files": []
  },
  {
    "title": "Rotary Encoder Nointerrupts Bo",
    "folderName": "Rotary_Encoder_NoInterrupts_BO",
    "tags": [
      "Arduino (pins 2,3)"
    ],
    "libraries": [],
    "description": "LED dimmer with rotary encoder, board version",
    "files": []
  },
  {
    "title": "Rp2040 Scannetworks Test",
    "folderName": "RP2040_ScanNetworks_TEST",
    "tags": [
      "Raspberry Pi Pico (RP2040)"
    ],
    "libraries": [
      {
        "name": "WiFi.h",
        "version": "unknown"
      }
    ],
    "description": "WiFi network scanner for Raspberry Pi Pico/RP2040",
    "files": []
  },
  {
    "title": "Rp2040 Tests",
    "folderName": "RP2040_TESTS",
    "tags": [
      "Raspberry Pi Pico"
    ],
    "libraries": [],
    "description": "RP2040 GPIO test - sequential LED blinking through multiple pins",
    "files": []
  },
  {
    "title": "Rp2040 Wificlient",
    "folderName": "RP2040_WiFiClient",
    "tags": [
      "Raspberry Pi Pico"
    ],
    "libraries": [
      {
        "name": "WiFi.h",
        "version": "unknown"
      },
      {
        "name": "WifiConfig.h",
        "version": "unknown"
      }
    ],
    "description": "TCP WiFi client for RP2040 connecting to custom server",
    "files": []
  },
  {
    "title": "Rtc Ds3231",
    "folderName": "RTC_DS3231",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "LowPower.h",
        "version": "unknown"
      },
      {
        "name": "RTC_DS3231.h",
        "version": "unknown"
      },
      {
        "name": "Wire.h",
        "version": "unknown"
      }
    ],
    "description": "DS3231 RTC with temperature reading and low power sleep",
    "files": []
  },
  {
    "title": "Rtc Eeprom 24C32N",
    "folderName": "RTC_EEPROM_24C32N",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "Wire.h",
        "version": "unknown"
      }
    ],
    "description": "Basic 24C32N EEPROM read/write via I2C",
    "files": []
  },
  {
    "title": "Rtc Eeprom 24C32N Pagewrite",
    "folderName": "RTC_EEPROM_24C32N_pageWrite",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "Wire.h",
        "version": "unknown"
      }
    ],
    "description": "24Cxx EEPROM page write with boundary handling",
    "files": []
  },
  {
    "title": "Rtc Eeprom 24C32N Readall",
    "folderName": "RTC_EEPROM_24C32N_readALL",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "Wire.h",
        "version": "unknown"
      }
    ],
    "description": "Full dump of 24C32N EEPROM contents",
    "files": []
  },
  {
    "title": "Sdcard",
    "folderName": "SDCARD",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SD.h",
        "version": "unknown"
      }
    ],
    "description": "Datalogger with DHT11, ultrasonic sensor, SD card storage",
    "files": []
  },
  {
    "title": "Sendervirtualwire",
    "folderName": "SENDERVIRTUALWIRE",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "VirtualWire.h",
        "version": "unknown"
      }
    ],
    "description": "RF transmitter using VirtualWire library",
    "files": []
  },
  {
    "title": "Sensor Gas",
    "folderName": "SENSOR_GAS",
    "tags": [
      "Arduino"
    ],
    "libraries": [],
    "description": "Gas sensor alarm with buzzer for CO2 and CH4",
    "files": []
  },
  {
    "title": "Serialpassthrough",
    "folderName": "serialPassThrough",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial.h",
        "version": "unknown"
      }
    ],
    "description": "Serial relay between PC and SIM800L via SoftwareSerial",
    "files": []
  },
  {
    "title": "Serialpc",
    "folderName": "SerialPc",
    "tags": [
      "Arduino"
    ],
    "libraries": [],
    "description": "Simple millis output to serial",
    "files": []
  },
  {
    "title": "Serialtest",
    "folderName": "serialtest",
    "tags": [
      "Arduino"
    ],
    "libraries": [],
    "description": "AT command test for SIM800 GSM modem",
    "files": []
  },
  {
    "title": "Siervo",
    "folderName": "Siervo",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "Ping.h",
        "version": "unknown"
      },
      {
        "name": "Servo.h",
        "version": "unknown"
      },
      {
        "name": "SimpleTimer.h",
        "version": "unknown"
      }
    ],
    "description": "Obstacle-avoiding robot with servo, ping sensor, and motors",
    "files": []
  },
  {
    "title": "Sim800 Httpexample Post",
    "folderName": "Sim800_HttpExample_post",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "Http.h",
        "version": "unknown"
      }
    ],
    "description": "SIM800 HTTP client for GET and POST requests",
    "files": []
  },
  {
    "title": "Sim800L Boya",
    "folderName": "SIM800L_BOYA",
    "tags": [
      "Arduino"
    ],
    "libraries": [],
    "description": "SIM800L weather station with HTTP push, battery monitoring",
    "files": []
  },
  {
    "title": "Sim800Libexample",
    "folderName": "sim800LibExample",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial.h",
        "version": "unknown"
      },
      {
        "name": "SIM800.h",
        "version": "unknown"
      }
    ],
    "description": "SIM800 library test with HTTP requests and location",
    "files": []
  },
  {
    "title": "Sim800L Meteopush",
    "folderName": "SIM800L_MeteoPush",
    "tags": [
      "Arduino ATmega"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial.h",
        "version": "unknown"
      },
      {
        "name": "LowPower.h",
        "version": "unknown"
      },
      {
        "name": "DHT.h",
        "version": "unknown"
      }
    ],
    "description": "Meteo station with DHT11, SIM800L HTTP push, low power",
    "files": []
  },
  {
    "title": "Sim800L Meteopush Thingspeak",
    "folderName": "SIM800L_MeteoPush_thingspeak",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial.h",
        "version": "unknown"
      },
      {
        "name": "LowPower.h",
        "version": "unknown"
      },
      {
        "name": "DHT.h",
        "version": "unknown"
      }
    ],
    "description": "Weather station pushing to ThingSpeak with battery monitoring",
    "files": []
  },
  {
    "title": "Sim800 Probar At",
    "folderName": "SIM800_PROBAR_AT",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial.h",
        "version": "unknown"
      }
    ],
    "description": "SIM800L AT command tester - passthrough serial",
    "files": []
  },
  {
    "title": "Sintentizadorgranular",
    "folderName": "SintentizadorGranular",
    "tags": [
      "Arduino (ATmega168/328/1280)"
    ],
    "libraries": [
      {
        "name": "avr/io.h",
        "version": "unknown"
      },
      {
        "name": "avr/interrupt.h",
        "version": "unknown"
      }
    ],
    "description": "Auduino - Lo-Fi granular synthesizer with multiple scale modes",
    "files": []
  },
  {
    "title": "Softwareserialtest",
    "folderName": "SoftwareSErialTEST",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial.h",
        "version": "unknown"
      }
    ],
    "description": "SoftwareSerial basic bidirectional communication",
    "files": []
  },
  {
    "title": "Sparkfun Mag3110 Magnitude2",
    "folderName": "SparkFun_MAG3110_Magnitude2",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "Wire.h",
        "version": "unknown"
      },
      {
        "name": "math.h",
        "version": "unknown"
      }
    ],
    "description": "MAG3110 magnetometer I2C reading for X axis",
    "files": []
  },
  {
    "title": "Spi Flash Dump",
    "folderName": "SPI_FLASH_DUMP",
    "tags": [
      "Arduino standalone"
    ],
    "libraries": [
      {
        "name": "SPIFlash.h",
        "version": "unknown"
      },
      {
        "name": "SPI.h",
        "version": "unknown"
      }
    ],
    "description": "SPI Flash memory dump for data extraction",
    "files": []
  },
  {
    "title": "Spiflashrradwritestring",
    "folderName": "SPIFlashrRadWriteString",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SPIFlash.h",
        "version": "unknown"
      },
      {
        "name": "SPI.h",
        "version": "unknown"
      }
    ],
    "description": "SPI Flash string read/write example",
    "files": []
  },
  {
    "title": "Spiflashtest Example",
    "folderName": "SPIFlashTest_example",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SPIFlash.h",
        "version": "unknown"
      },
      {
        "name": "SPI.h",
        "version": "unknown"
      }
    ],
    "description": "Comprehensive SPIFlash library test with all operations",
    "files": []
  },
  {
    "title": "Stepermotor 28Byj-48 Test Cheapstepper Move",
    "folderName": "STEPERMOTOR_28byj-48_TEST_cheapStepper_move",
    "tags": [
      "Arduino (pins 8-11)"
    ],
    "libraries": [
      {
        "name": "CheapStepper.h",
        "version": "unknown"
      }
    ],
    "description": "28BYJ-48 stepper motor control with CheapStepper library",
    "files": []
  },
  {
    "title": "Steppermotorastroduino",
    "folderName": "StepperMotorAstroduino",
    "tags": [
      "Arduino (pins 8-11)"
    ],
    "libraries": [
      {
        "name": "CheapStepper.h",
        "version": "unknown"
      }
    ],
    "description": "Simple 28BYJ-48 stepper test with CheapStepper",
    "files": []
  },
  {
    "title": "Steppermotorastroduinoattiny2313",
    "folderName": "StepperMotorAstroduinoAttiny2313",
    "tags": [
      "ATtiny2313 (pins 13,14,15,16)"
    ],
    "libraries": [
      {
        "name": "CheapStepper.h",
        "version": "unknown"
      }
    ],
    "description": "Stepper motor test for ATtiny2313 (incomplete)",
    "files": []
  },
  {
    "title": "Symax Rx2",
    "folderName": "symax_rx2",
    "tags": [
      "Arduino"
    ],
    "libraries": [
      {
        "name": "SPI.h",
        "version": "unknown"
      },
      {
        "name": "symax_protocol.h",
        "version": "unknown"
      },
      {
        "name": "Servo.h",
        "version": "unknown"
      }
    ],
    "description": "Syma X2/X4 RC toy receiver with nRF24L01+ and servo control",
    "files": []
  },
  {
    "title": "7 Segment Display",
    "folderName": "_7SegmentDisplay",
    "tags": [
      "display",
      "led",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Basic 7-segment display using CD4511BE BCD to 7-segment decoder IC. Displays numbers 0-99 with multiplexing for 2 digits. Uses direct GPIO pins for binary data to the CD4511BE and common ground switching for digit selection. Primarily educational demo of 7-segment displays.",
    "files": [
      {
        "name": "_7SegmentDisplay.ino",
        "path": "./_7SegmentDisplay/_7SegmentDisplay.ino"
      }
    ]
  },
  {
    "title": "7 Segment Rotary DIMER",
    "folderName": "_7SegmentRotaryDIMER",
    "tags": [
      "display",
      "led",
      "rotary-encoder",
      "spi",
      "arduino-uno"
    ],
    "libraries": [],
    "description": " rotary encoder controls LED brightness with value displayed on 7-segment display via 74HC595 shift register. Uses polling at 200Hz to read encoder and PWM to control LED brightness. Shows brightness value (0-255) on dual digit multiplexed display. Includes serial debug output.",
    "files": [
      {
        "name": "_7SegmentRotaryDIMER.ino",
        "path": "./_7SegmentRotaryDIMER/_7SegmentRotaryDIMER.ino"
      }
    ]
  },
  {
    "title": "7 Segment Rotary DIMER ATtiny",
    "folderName": "_7SegmentRotaryDIMER_attiny",
    "tags": [
      "attiny",
      "display",
      "led",
      "rotary-encoder",
      "spi"
    ],
    "libraries": [],
    "description": "ATtiny85 version of rotary encoder brightness control with 7-segment display. Uses 74HC595 shift register to drive 7-segment display. Reads rotary encoder at 200Hz and outputs PWM brightness on pin 7. Compact implementation for ATtiny85 with limited pins.",
    "files": [
      {
        "name": "_7SegmentRotaryDIMER_attiny.ino",
        "path": "./_7SegmentRotaryDIMER_attiny/_7SegmentRotaryDIMER_attiny.ino"
      }
    ]
  },
  {
    "title": "7 Segment Shift Register",
    "folderName": "_7segmentShiftRegister",
    "tags": [
      "display",
      "led",
      "spi",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "7-segment display driven by 74HC595 shift register. Counts from 0 to 99 continuously with 50ms delay between counts. Uses two shift register chips - one for digit segments and one for digit selection (units/tens). Simple demonstration of SPI-like shiftOut for driving multiplexed displays.",
    "files": [
      {
        "name": "_7segmentShiftRegister.ino",
        "path": "./_7segmentShiftRegister/_7segmentShiftRegister.ino"
      }
    ]
  },
  {
    "title": "7 Segment Shift Register BLINK Weird",
    "folderName": "_7segmentShiftRegisterBLINKweird",
    "tags": [
      "display",
      "led",
      "spi",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Alternative implementation of 7-segment display with 74HC595 shift register. Uses tight loop (500 iterations) to achieve persistence of vision instead of delay. Demonstrates rapid refresh multiplexing technique for controlling multiple digits.",
    "files": [
      {
        "name": "_7segmentShiftRegisterBLINKweird.ino",
        "path": "./_7segmentShiftRegisterBLINKweird/_7segmentShiftRegisterBLINKweird.ino"
      }
    ]
  },
  {
    "title": "7 Segment Temperature DHT11",
    "folderName": "_7_Segment_TemperatureDHT11_LIB",
    "tags": [
      "temperature",
      "humidity",
      "display",
      "arduino-uno"
    ],
    "libraries": [
      {
        "name": "dht11",
        "version": "unknown"
      }
    ],
    "description": "Reads temperature and humidity from DHT11 sensor and displays values on 7-segment display with CD4511BE IC. Alternates between temperature (5 seconds) and humidity (1 second) displays. Uses same multiplexing technique as base 7-segment display project. Reports sensor read status via serial.",
    "files": [
      {
        "name": "_7_Segment_TemperatureDHT11_LIB.ino",
        "path": "./_7_Segment_TemperatureDHT11_LIB/_7_Segment_TemperatureDHT11_LIB.ino"
      }
    ]
  },
  {
    "title": "Analog Read ATtiny",
    "folderName": "AnalogReadAttiny",
    "tags": [
      "attiny",
      "analog",
      "serial"
    ],
    "libraries": [
      {
        "name": "SoftwareSerial",
        "version": "builtin"
      }
    ],
    "description": "Reads analog input from ATtiny85 pin A1 and outputs values via SoftwareSerial. UsesSoftwareSerial library on pins 3 (RX) and 4 (TX) at 4800 baud. Simple analog sensor reading demonstration for ATtiny with serial output.",
    "files": [
      {
        "name": "AnalogReadAttiny.ino",
        "path": "./AnalogReadAttiny/AnalogReadAttiny.ino"
      }
    ]
  },
  {
    "title": "Arduino ISP V2",
    "folderName": "ArduinoISP2",
    "tags": [
      "arduino-uno",
      "spi",
      "serial",
      "isp"
    ],
    "libraries": [],
    "description": "Turns Arduino into an AVR ISP programmer using STK500 protocol. Uses SPI pins (11-MOSI, 12-MISO, 13-SCK) with reset pin 10 for slave control. Supports reading/writing flash and EEPROM, reading device signature. Includes status LEDs (pin 8 error, A0 programming) and optional piezo on A3.",
    "files": [
      {
        "name": "ArduinoISP2.ino",
        "path": "./ArduinoISP2/ArduinoISP2.ino"
      }
    ]
  },
  {
    "title": "Audio Relay Control",
    "folderName": "audio",
    "tags": [
      "analog",
      "relay",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Monitors analog input (possibly from sound sensor or hydrophone) to control a relay. Monitors two analog channels - inputPin (pin 3) and inputPin2 (pin 5). When reading2 exceeds threshold (900), waits 300ms then checks for sustained signal to toggle relay on pin 4. Used for sound-activated or water-activated relay control.",
    "files": [
      {
        "name": "audio.ino",
        "path": "./audio/audio.ino"
      }
    ]
  },
  {
    "title": "Audio Clap Detection",
    "folderName": "audioClap",
    "tags": [
      "analog",
      "relay",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Double-clap detection to toggle relay. Listens for first clap (analog reading > 900), then waits 250ms and listens for second clap within 1.2 seconds (240 x 5ms = 1200ms). On double clap detected, toggles relay state. Demonstrates simple clap-activated switch for relay control.",
    "files": [
      {
        "name": "audioClap.ino",
        "path": "./audioClap/audioClap.ino"
      }
    ]
  },
  {
    "title": "Barometer Adafruit BMP085",
    "folderName": "BarometroAdafruit",
    "tags": [
      "pressure",
      "temperature",
      "i2c",
      "arduino-uno"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "builtin"
      },
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085",
        "version": "unknown"
      }
    ],
    "description": "Reads BMP085/180 barometric pressure sensor using Adafruit library. Displays pressure in hPa, temperature in Celsius, and calculates altitude using sea level pressure. LED on pin 13 blinks each reading. Uses I2C communication. Educational example for BMP085 sensor.",
    "files": [
      {
        "name": "BarometroAdafruit.ino",
        "path": "./BarometroAdafruit/BarometroAdafruit.ino"
      }
    ]
  },
  {
    "title": "Basic OTA with MQTT",
    "folderName": "BasicOTA_MEU",
    "tags": [
      "esp8266",
      "wifi",
      "mqtt",
      "ota",
      "network"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266mDNS",
        "version": "unknown"
      },
      {
        "name": "WiFiUdp",
        "version": "unknown"
      },
      {
        "name": "ArduinoOTA",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "WifiConfig",
        "version": "unknown"
      },
      {
        "name": "PubSubClient",
        "version": "unknown"
      }
    ],
    "description": "ESP8266 sketch with Over-The-Air (OTA) update capability and MQTT publishing. Connects to WiFi using multiple AP credentials, enables OTA for wireless programming. Reads VCC voltage and publishes to MQTT broker. Uses custom WifiConfig library for credentials. hostname: ESP8266JOTA.",
    "files": [
      {
        "name": "BasicOTA_MEU.ino",
        "path": "./BasicOTA_MEU/BasicOTA_MEU.ino"
      }
    ]
  },
  {
    "title": "Blink LED",
    "folderName": "Blink",
    "tags": [
      "esp8266",
      "led"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      }
    ],
    "description": "Basic LED blink sketch. Uses pin 2 (GPIO2) for on-board LED control. Delays 150ms ON, 500ms OFF. Includes serial output at 78000 baud. Note: Uses ESP8266 libraries but doesn't utilize network features - likely a minimal ESP8266 test sketch.",
    "files": [
      {
        "name": "Blink.ino",
        "path": "./Blink/Blink.ino"
      }
    ]
  },
  {
    "title": "Blink ATtiny",
    "folderName": "BlinkTiny",
    "tags": [
      "attiny",
      "led"
    ],
    "libraries": [],
    "description": "Simple LED blink for ATtiny85. Uses pin 0 (physical pin 5) for LED. Standard 1000ms on, 1000ms off blink pattern. Minimal sketch demonstrating basic ATtiny85 operation. Uses internal oscillator (default 1MHz).",
    "files": [
      {
        "name": "BlinkTiny.ino",
        "path": "./BlinkTiny/BlinkTiny.ino"
      }
    ]
  },
  {
    "title": "Bluetooth Serial Simple Test",
    "folderName": "BluetoothSerialSimpleTest",
    "tags": [
      "bluetooth",
      "serial",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Basic Bluetooth serial communication test. Receives data via serial port (likely from BT module like HC-05/HC-06) and toggles LED on pin 8. When 'H' received, turns LED on. Also toggles pin 7 on each data reception. Uses 9600 baud. Simple test for Bluetooth serial communication.",
    "files": [
      {
        "name": "bluetoothSerialSimpleTest.ino",
        "path": "./BluetoothSerialSimpleTest/bluetoothSerialSimpleTest.ino"
      }
    ]
  },
  {
    "title": "Bluetooth Servo Control",
    "folderName": "BluetoothServo",
    "tags": [
      "bluetooth",
      "servo",
      "motor",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Bluetooth-controlled servo for RC car steering. Receives commands via serial (Bluetooth module): 'R' (right), 'L' (left), 'S' (center stop), 'F' (forward accelerate), 'B' (backward). Uses analog read on pin 0 for feedback (steering position pot). Implements H-bridge motor control with speed ramping (16-step increments).",
    "files": [
      {
        "name": "BluetoothServo.ino",
        "path": "./BluetoothServo/BluetoothServo.ino"
      }
    ]
  },
  {
    "title": "Bluetooth Servo Directo",
    "folderName": "BluetoothServoDirecto",
    "tags": [
      "bluetooth",
      "servo",
      "motor",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Enhanced Bluetooth servo control with filtering and direct position targeting. Receives 8-byte data packets with direction and speed values. Applies moving average filter (5-sample) to smooth noisy input from Bluetooth joystick app. Uses timer1 interrupt for periodic speed reduction (safety). Implements quickselect algorithm for median filtering. More sophisticated than BluetoothServo.",
    "files": [
      {
        "name": "BluetoothServoDirecto.ino",
        "path": "./BluetoothServoDirecto/BluetoothServoDirecto.ino"
      }
    ]
  },
  {
    "title": "BMP180 Oversampling Example",
    "folderName": "bmp180_oversampling_example",
    "tags": [
      "pressure",
      "temperature",
      "i2c",
      "arduino-uno"
    ],
    "libraries": [
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085",
        "version": "unknown"
      },
      {
        "name": "Wire",
        "version": "builtin"
      }
    ],
    "description": "BMP180 barometric pressure sensor example using Adafruit library with custom I2C pins (SDA=2, SCL=14 - non-standard for board). Reads pressure and temperature, outputs via serial. Allows custom oversampling settings via library. More advanced BMP085/180 usage example.",
    "files": [
      {
        "name": "bmp180_oversampling_example.ino",
        "path": "./bmp180_oversampling_example/bmp180_oversampling_example.ino"
      }
    ]
  },
  {
    "title": "Compass LIS3MDL Nokia LCD",
    "folderName": "Brujula_LIS3MDL_LCDNOKIA",
    "tags": [
      "motion",
      "magnetometer",
      "i2c",
      "display",
      "arduino-uno"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "builtin"
      },
      {
        "name": "LIS3MDL",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "builtin"
      },
      {
        "name": "Adafruit_GFX",
        "version": "unknown"
      },
      {
        "name": "Adafruit_PCD8544",
        "version": "unknown"
      }
    ],
    "description": "Digital compass using LIS3MDL magnetometer with Nokia 5110 PCD8544 LCD display. Performs automatic hard/soft iron calibration via min/max tracking. Calculates heading from magnetometer X/Y values using atan2. Displays heading in degrees (0-360) on Nokia LCD with graphical direction indicator. I2C magnetometer, SPI LCD.",
    "files": [
      {
        "name": "Brujula_LIS3MDL_LCDNOKIA.ino",
        "path": "./Brujula_LIS3MDL_LCDNOKIA/Brujula_LIS3MDL_LCDNOKIA.ino"
      }
    ]
  },
  {
    "title": "Bluetooth RC Car",
    "folderName": "cochebluetooth",
    "tags": [
      "bluetooth",
      "motor",
      "arduino-uno"
    ],
    "libraries": [],
    "description": "Basic Bluetooth-controlled RC car/robot. Receives commands via serial (Bluetooth): 'F' (forward), 'B' (backward), 'S' (stop), 'L' (turn left), 'R' (turn right). Uses two independent H-bridge motor controls for differential steering (left/right wheels). Implements safety timeout - stops if no command received for 3 seconds. Simple RC car controller.",
    "files": [
      {
        "name": "cochebluetooth.ino",
        "path": "./cochebluetooth/cochebluetooth.ino"
      }
    ]
  },
  {
    "title": "Meteologger Esp8266 Esp01  Ats ",
    "folderName": "MeteoLogger_ESP8266_ESP01__ATs_",
    "tags": "Arduino (ATMega328 with ESP8266 ESP-01)",
    "libraries": [
      {
        "name": "DHT",
        "version": "unknown"
      },
      {
        "name": "Adafruit_Sensor",
        "version": "unknown"
      },
      {
        "name": "Adafruit_BMP085",
        "version": "unknown"
      },
      {
        "name": "SoftwareSerial",
        "version": "unknown"
      },
      {
        "name": "Wire",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "unknown"
      },
      {
        "name": "Adafruit_GFX",
        "version": "unknown"
      },
      {
        "name": "Adafruit_PCD8544",
        "version": "unknown"
      }
    ],
    "description": "Weather station logger: DHT22 humidity/temperature, BMP085 pressure, Nokia PCD8544 LCD, ESP8266 soft serial communication, button-triggered LCD, power gating",
    "files": [
      {
        "name": "MeteoLogger_ESP8266_ESP01__ATs_.ino",
        "path": "./MeteoLogger_ESP8266_ESP01__ATs_/MeteoLogger_ESP8266_ESP01__ATs_.ino"
      }
    ]
  },
  {
    "title": "Max7219 Parola Arduino Tests",
    "folderName": "MAX7219_Parola_Arduino_TESTS",
    "tags": "Arduino (with MAX7219 FC16_HW)",
    "libraries": [
      {
        "name": "MD_Parola",
        "version": "unknown"
      },
      {
        "name": "MD_MAX72xx",
        "version": "unknown"
      },
      {
        "name": "SPI",
        "version": "unknown"
      }
    ],
    "description": "MAX7219 LED matrix display with Parola library - scrolling text from serial input",
    "files": [
      {
        "name": "MAX7219_Parola_Arduino_TESTS.ino",
        "path": "./MAX7219_Parola_Arduino_TESTS/MAX7219_Parola_Arduino_TESTS.ino"
      }
    ]
  },
  {
    "title": "Cochebluetoothv2",
    "folderName": "CocheBluetoothV2",
    "tags": [
      "arduino-uno",
      "bluetooth",
      "motors",
      "serial"
    ],
    "libraries": [],
    "description": "Bluetooth car V2 - basic motor control via serial/Bluetooth",
    "files": [
      {
        "name": "CocheBluetoothV2.ino",
        "path": "./CocheBluetoothV2/CocheBluetoothV2.ino"
      }
    ]
  },
  {
    "title": "Cochebluetoothv3",
    "folderName": "CocheBluetoothV3",
    "tags": [
      "arduino-uno",
      "bluetooth",
      "motors",
      "serial"
    ],
    "libraries": [],
    "description": "Bluetooth car V3 - motor control via serial/Bluetooth",
    "files": [
      {
        "name": "CocheBluetoothV3.ino",
        "path": "./CocheBluetoothV3/CocheBluetoothV3.ino"
      }
    ]
  },
  {
    "title": "Cochebluetoothv4",
    "folderName": "CocheBluetoothV4",
    "tags": [
      "arduino-uno",
      "bluetooth",
      "motors",
      "serial"
    ],
    "libraries": [],
    "description": "Bluetooth car V4 - motor control via serial/Bluetooth",
    "files": [
      {
        "name": "CocheBluetoothV4.ino",
        "path": "./CocheBluetoothV4/CocheBluetoothV4.ino"
      }
    ]
  },
  {
    "title": "Cochebluetoothv5",
    "folderName": "CocheBluetoothV5",
    "tags": [
      "arduino-uno",
      "bluetooth",
      "motors",
      "serial"
    ],
    "libraries": [],
    "description": "Bluetooth car V5 - motor control via serial/Bluetooth",
    "files": [
      {
        "name": "CocheBluetoothV5.ino",
        "path": "./CocheBluetoothV5/CocheBluetoothV5.ino"
      }
    ]
  },
  {
    "title": "Cochebluetoothv6",
    "folderName": "CocheBluetoothV6",
    "tags": [
      "arduino-uno",
      "bluetooth",
      "motors",
      "serial"
    ],
    "libraries": [],
    "description": "Bluetooth car V6 - motor control via serial/Bluetooth",
    "files": [
      {
        "name": "CocheBluetoothV6.ino",
        "path": "./CocheBluetoothV6/CocheBluetoothV6.ino"
      }
    ]
  },
  {
    "title": "Cochecurso1 1Comunicacionsimple",
    "folderName": "CocheCurso1_1ComunicacionSimple",
    "tags": [
      "arduino-uno",
      "serial"
    ],
    "libraries": [],
    "description": "Simple car communication course - basic serial read/write example",
    "files": [
      {
        "name": "CocheCurso1_1ComunicacionSimple.ino",
        "path": "./CocheCurso1_1ComunicacionSimple/CocheCurso1_1ComunicacionSimple.ino"
      }
    ]
  },
  {
    "title": "Cochecurso1Comunicacion",
    "folderName": "CocheCurso1Comunicacion",
    "tags": [
      "arduino-uno",
      "serial"
    ],
    "libraries": [],
    "description": "Car communication course V1 - serial communication example",
    "files": [
      {
        "name": "CocheCurso1Comunicacion.ino",
        "path": "./CocheCurso1Comunicacion/CocheCurso1Comunicacion.ino"
      }
    ]
  },
  {
    "title": "Cochecurso2Motorsolo",
    "folderName": "CocheCurso2MotorSolo",
    "tags": [
      "arduino-uno",
      "motors"
    ],
    "libraries": [],
    "description": "Car motor control course - basic motor control",
    "files": [
      {
        "name": "CocheCurso2MotorSolo.ino",
        "path": "./CocheCurso2MotorSolo/CocheCurso2MotorSolo.ino"
      }
    ]
  },
  {
    "title": "Cochef1Digispark",
    "folderName": "cocheF1DigiSpark",
    "tags": [
      "digispark",
      "attiny",
      "motors"
    ],
    "libraries": [],
    "description": "F1 car with DigiSpark - toy car controlled by ATtiny",
    "files": [
      {
        "name": "cocheF1DigiSpark.ino",
        "path": "./cocheF1DigiSpark/cocheF1DigiSpark.ino"
      }
    ]
  },
  {
    "title": "Cocherosamattel",
    "folderName": "cocheRosaMattel",
    "tags": [
      "arduino-uno",
      "motors",
      "bluetooth"
    ],
    "libraries": [],
    "description": "Mattel pink car project - RC car toy conversion",
    "files": [
      {
        "name": "cocheRosaMattel.ino",
        "path": "./cocheRosaMattel/cocheRosaMattel.ino"
      }
    ]
  },
  {
    "title": "Cocherosamatteldigispark",
    "folderName": "cocheRosaMattelDigiSpark",
    "tags": [
      "digispark",
      "attiny",
      "motors"
    ],
    "libraries": [],
    "description": "Mattel car with DigiSpark - ATtiny based toy car",
    "files": [
      {
        "name": "cocheRosaMattelDigiSpark.ino",
        "path": "./cocheRosaMattelDigiSpark/cocheRosaMattelDigiSpark.ino"
      }
    ]
  },
  {
    "title": "Color",
    "folderName": "color",
    "tags": [
      "arduino-uno",
      "rgb",
      "led",
      "analog"
    ],
    "libraries": [],
    "description": "RGB LED color control project using PWM to mix colors",
    "files": [
      {
        "name": "color.ino",
        "path": "./color/color.ino"
      }
    ]
  },
  {
    "title": "Controlservomanualhbridge",
    "folderName": "controlServoManualHBridge",
    "tags": [
      "arduino-uno",
      "servo",
      "motors"
    ],
    "libraries": [],
    "description": "Servo control with H-bridge for motor direction control",
    "files": [
      {
        "name": "controlServoManualHBridge.ino",
        "path": "./controlServoManualHBridge/controlServoManualHBridge.ino"
      }
    ]
  },
  {
    "title": "Cursocoche1Comunicacion",
    "folderName": "CursoCoche1Comunicacion",
    "tags": [
      "arduino-uno",
      "serial"
    ],
    "libraries": [],
    "description": "Car course communication V1 - serial communication tutorial",
    "files": [
      {
        "name": "CursoCoche1Comunicacion.ino",
        "path": "./CursoCoche1Comunicacion/CursoCoche1Comunicacion.ino"
      }
    ]
  },
  {
    "title": "Cursocoche2Motorsolo",
    "folderName": "CursoCoche2MotorSolo",
    "tags": [
      "arduino-uno",
      "motors"
    ],
    "libraries": [],
    "description": "Car course motor control - DC motor control tutorial",
    "files": [
      {
        "name": "CursoCoche2MotorSolo.ino",
        "path": "./CursoCoche2MotorSolo/CursoCoche2MotorSolo.ino"
      }
    ]
  },
  {
    "title": "Gas Sensor Mq-2 Ppm",
    "folderName": "GAS_SENSOR_MQ-2_ppm",
    "tags": [
      "arduino-uno",
      "gas",
      "mq-2",
      "analog"
    ],
    "libraries": [],
    "description": "MQ-2 gas sensor PPM calculation for LPG, CO, and Smoke detection",
    "files": [
      {
        "name": "GAS_SENSOR_MQ-2_ppm.ino",
        "path": "./GAS_SENSOR_MQ-2_ppm/GAS_SENSOR_MQ-2_ppm.ino"
      }
    ]
  },
  {
    "title": "Gas Sensor Mq-2 R0 True",
    "folderName": "GAS_SENSOR_MQ-2_R0_true",
    "tags": [
      "arduino-uno",
      "gas",
      "mq-2",
      "analog"
    ],
    "libraries": [],
    "description": "MQ-2 R0 calibration for gas sensor resistance measurement",
    "files": [
      {
        "name": "GAS_SENSOR_MQ-2_R0_true.ino",
        "path": "./GAS_SENSOR_MQ-2_R0_true/GAS_SENSOR_MQ-2_R0_true.ino"
      }
    ]
  },
  {
    "title": "Gas Sensor Mq-2 Rs-R0",
    "folderName": "GAS_SENSOR_MQ-2_RS-R0",
    "tags": [
      "arduino-uno",
      "gas",
      "mq-2",
      "analog"
    ],
    "libraries": [],
    "description": "MQ-2 RS/R0 ratio test for gas concentration measurement",
    "files": [
      {
        "name": "GAS_SENSOR_MQ-2_RS-R0.ino",
        "path": "./GAS_SENSOR_MQ-2_RS-R0/GAS_SENSOR_MQ-2_RS-R0.ino"
      }
    ]
  },
  {
    "title": "Gas Sensor Mq-7 Mqtt Thingspeak",
    "folderName": "GAS_SENSOR_MQ-7_MQTT_THINGSPEAK",
    "tags": [
      "esp8266",
      "mqtt",
      "thingspeak",
      "wifi",
      "gas",
      "mq-7"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT_Client",
        "version": "unknown"
      },
      {
        "name": "WifiConfig",
        "version": "unknown"
      }
    ],
    "description": "MQ-7 gas sensor reading published to MQTT broker and ThingSpeak",
    "files": [
      {
        "name": "GAS_SENSOR_MQ-7_MQTT_THINGSPEAK.ino",
        "path": "./GAS_SENSOR_MQ-7_MQTT_THINGSPEAK/GAS_SENSOR_MQ-7_MQTT_THINGSPEAK.ino"
      }
    ]
  },
  {
    "title": "Gsm Sim800L Pruebas",
    "folderName": "GSM_SIM800L_Pruebas",
    "tags": [
      "arduino-uno",
      "gsm",
      "sim800l",
      "serial"
    ],
    "libraries": [],
    "description": "SIM800L GSM module tests - AT commands and basic functionality",
    "files": [
      {
        "name": "GSM_SIM800L_Pruebas.ino",
        "path": "./GSM_SIM800L_Pruebas/GSM_SIM800L_Pruebas.ino"
      }
    ]
  },
  {
    "title": "Gsm Sim800L Pruebas2",
    "folderName": "GSM_SIM800L_Pruebas2",
    "tags": [
      "arduino-uno",
      "gsm",
      "sim800l",
      "serial"
    ],
    "libraries": [],
    "description": "SIM800L GSM module tests V2 - extended functionality tests",
    "files": [
      {
        "name": "GSM_SIM800L_Pruebas2.ino",
        "path": "./GSM_SIM800L_Pruebas2/GSM_SIM800L_Pruebas2.ino"
      }
    ]
  },
  {
    "title": "Heading Example Proba",
    "folderName": "Heading_example_proba",
    "tags": [
      "arduino-uno",
      "magnetometer",
      "i2c"
    ],
    "libraries": [],
    "description": "Heading calculation example for magnetometer sensor",
    "files": [
      {
        "name": "Heading_example_proba.ino",
        "path": "./Heading_example_proba/Heading_example_proba.ino"
      }
    ]
  },
  {
    "title": "Heading Lis3Mdl",
    "folderName": "Heading_LIS3MDL",
    "tags": [
      "arduino-uno",
      "magnetometer",
      "lis3mdl",
      "i2c"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "builtin"
      }
    ],
    "description": "LIS3MDL magnetometer heading calculation",
    "files": [
      {
        "name": "Heading_LIS3MDL.ino",
        "path": "./Heading_LIS3MDL/Heading_LIS3MDL.ino"
      }
    ]
  },
  {
    "title": "Humedad Suelo",
    "folderName": "humedad_suelo",
    "tags": [
      "arduino-uno",
      "humidity",
      "soil",
      "low-power"
    ],
    "libraries": [
      {
        "name": "LowPower",
        "version": "unknown"
      }
    ],
    "description": "Soil moisture sensor",
    "files": [
      {
        "name": "humedad_suelo.ino",
        "path": "./humedad_suelo/humedad_suelo.ino"
      }
    ]
  },
  {
    "title": "Humedad Suelo Attiny",
    "folderName": "humedad_suelo_attiny",
    "tags": [
      "attiny",
      "humidity",
      "soil",
      "low-power"
    ],
    "libraries": [
      {
        "name": "LowPower",
        "version": "unknown"
      }
    ],
    "description": "Soil moisture on ATtiny - low power soil humidity sensor",
    "files": [
      {
        "name": "humedad_suelo_attiny.ino",
        "path": "./humedad_suelo_attiny/humedad_suelo_attiny.ino"
      }
    ]
  },
  {
    "title": "I2C Scanner",
    "folderName": "I2C_Scanner",
    "tags": [
      "arduino-uno",
      "i2c",
      "utility"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "builtin"
      }
    ],
    "description": "I2C bus scanner - scans for I2C devices on the bus",
    "files": [
      {
        "name": "I2C_Scanner.ino",
        "path": "./I2C_Scanner/I2C_Scanner.ino"
      }
    ]
  },
  {
    "title": "Inductancemeter",
    "folderName": "InductanceMeter",
    "tags": [
      "arduino-uno",
      "analog",
      "measurement"
    ],
    "libraries": [],
    "description": "Inductance meter - measures inductance using LC circuit",
    "files": [
      {
        "name": "InductanceMeter.ino",
        "path": "./InductanceMeter/InductanceMeter.ino"
      }
    ]
  },
  {
    "title": "Inductancemeter339",
    "folderName": "InductanceMeter339",
    "tags": [
      "arduino-uno",
      "analog",
      "measurement"
    ],
    "libraries": [],
    "description": "Inductance meter variant using 555 timer/NE555",
    "files": [
      {
        "name": "InductanceMeter339.ino",
        "path": "./InductanceMeter339/InductanceMeter339.ino"
      }
    ]
  },
  {
    "title": "Inductancemeter393",
    "folderName": "InductanceMeter393",
    "tags": [
      "arduino-uno",
      "analog",
      "measurement"
    ],
    "libraries": [],
    "description": "Inductance meter version 393 using 555 timer",
    "files": [
      {
        "name": "InductanceMeter393.ino",
        "path": "./InductanceMeter393/InductanceMeter393.ino"
      }
    ]
  },
  {
    "title": "Inductancemeter Internalclock",
    "folderName": "InductanceMeter_InternalClock",
    "tags": [
      "arduino-uno",
      "analog",
      "measurement"
    ],
    "libraries": [],
    "description": "Inductance meter internal clock - uses Arduino internal clock",
    "files": [
      {
        "name": "InductanceMeter_InternalClock.ino",
        "path": "./InductanceMeter_InternalClock/InductanceMeter_InternalClock.ino"
      }
    ]
  },
  {
    "title": "Inductancemeterlcd",
    "folderName": "InductanceMeterLCD",
    "tags": [
      "arduino-uno",
      "analog",
      "measurement",
      "lcd"
    ],
    "libraries": [],
    "description": "Inductance meter with LCD - displays measurement on LCD",
    "files": [
      {
        "name": "InductanceMeterLCD.ino",
        "path": "./InductanceMeterLCD/InductanceMeterLCD.ino"
      }
    ]
  },
  {
    "title": "Ircochecito",
    "folderName": "IRCochecito",
    "tags": [
      "arduino-uno",
      "ir",
      "motors"
    ],
    "libraries": [],
    "description": "IR controlled little car - remote control car using IR signals",
    "files": [
      {
        "name": "IRCochecito.ino",
        "path": "./IRCochecito/IRCochecito.ino"
      }
    ]
  },
  {
    "title": "Ircommander",
    "folderName": "ircommander",
    "tags": [
      "arduino-uno",
      "ir"
    ],
    "libraries": [],
    "description": "IR remote commander - records and replays IR signals",
    "files": [
      {
        "name": "ircommander.ino",
        "path": "./ircommander/ircommander.ino"
      }
    ]
  },
  {
    "title": "Irrecvsenddemo",
    "folderName": "IRrecvSendDemo",
    "tags": [
      "arduino-uno",
      "ir"
    ],
    "libraries": [],
    "description": "IR receive and send demo - demonstrates IR receiving and transmitting",
    "files": [
      {
        "name": "IRrecvSendDemo.ino",
        "path": "./IRrecvSendDemo/IRrecvSendDemo.ino"
      }
    ]
  },
  {
    "title": "Irremotelibtest",
    "folderName": "IRremoteLibTest",
    "tags": [
      "arduino-uno",
      "ir"
    ],
    "libraries": [],
    "description": "IR remote library test - tests IRremote library functionality",
    "files": [
      {
        "name": "IRremoteLibTest.ino",
        "path": "./IRremoteLibTest/IRremoteLibTest.ino"
      }
    ]
  },
  {
    "title": "Irremoteshutterforpentaxkx",
    "folderName": "IRRemoteShutterforPentaxKX",
    "tags": [
      "arduino-uno",
      "ir",
      "camera"
    ],
    "libraries": [],
    "description": "IR shutter for Pentax camera - remote trigger using IR signals",
    "files": [
      {
        "name": "IRRemoteShutterforPentaxKX.ino",
        "path": "./IRRemoteShutterforPentaxKX/IRRemoteShutterforPentaxKX.ino"
      }
    ]
  },
  {
    "title": "Irsenddemo",
    "folderName": "IRSendDemo",
    "tags": [
      "arduino-uno",
      "ir"
    ],
    "libraries": [],
    "description": "IR send demo - demonstrates IR transmitting capabilities",
    "files": [
      {
        "name": "IRSendDemo.ino",
        "path": "./IRSendDemo/IRSendDemo.ino"
      }
    ]
  },
  {
    "title": "Lcd Example C",
    "folderName": "LCD_Example_c",
    "tags": [
      "arduino-uno",
      "lcd",
      "display"
    ],
    "libraries": [],
    "description": "LCD example in C - basic LCD 16x2 display demo",
    "files": [
      {
        "name": "LCD_Example_c.ino",
        "path": "./LCD_Example_c/LCD_Example_c.ino"
      }
    ]
  },
  {
    "title": "Lcd Example Protoboard",
    "folderName": "LCD_Example_Protoboard",
    "tags": [
      "arduino-uno",
      "lcd",
      "display"
    ],
    "libraries": [],
    "description": "LCD on protoboard - LCD 16x2 wired on breadboard",
    "files": [
      {
        "name": "LCD_Example_Protoboard.ino",
        "path": "./LCD_Example_Protoboard/LCD_Example_Protoboard.ino"
      }
    ]
  },
  {
    "title": "Lcd Nokia Esp32 Test",
    "folderName": "LCD_NOKIA_ESP32_TEST",
    "tags": [
      "esp32",
      "nokia-lcd",
      "display",
      "i2c"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "builtin"
      }
    ],
    "description": "Nokia LCD with ESP32 test - PCD8544 display driver test",
    "files": [
      {
        "name": "LCD_NOKIA_ESP32_TEST.ino",
        "path": "./LCD_NOKIA_ESP32_TEST/LCD_NOKIA_ESP32_TEST.ino"
      }
    ]
  },
  {
    "title": "Led Cube",
    "folderName": "Led_Cube",
    "tags": [
      "arduino-uno",
      "led",
      "display"
    ],
    "libraries": [],
    "description": "LED cube project - 3D LED matrix display",
    "files": [
      {
        "name": "Led_Cube.ino",
        "path": "./Led_Cube/Led_Cube.ino"
      }
    ]
  },
  {
    "title": "Led Rgb Resistencia",
    "folderName": "LED_RGB_Resistencia",
    "tags": [
      "arduino-uno",
      "rgb",
      "led"
    ],
    "libraries": [],
    "description": "RGB LED resistor test - testing current limiting resistors",
    "files": [
      {
        "name": "LED_RGB_Resistencia.ino",
        "path": "./LED_RGB_Resistencia/LED_RGB_Resistencia.ino"
      }
    ]
  },
  {
    "title": "Lifx Lan Client",
    "folderName": "LIFX_LAN_CLIENT",
    "tags": [
      "esp8266",
      "wifi",
      "network"
    ],
    "libraries": [],
    "description": "LIFX smart bulb LAN client - controls LIFX bulbs over local network",
    "files": [
      {
        "name": "LIFX_LAN_CLIENT.ino",
        "path": "./LIFX_LAN_CLIENT/LIFX_LAN_CLIENT.ino"
      }
    ]
  },
  {
    "title": "Luz",
    "folderName": "luz",
    "tags": [
      "arduino-uno",
      "light",
      "ldr"
    ],
    "libraries": [],
    "description": "Light control project - light sensing and control",
    "files": [
      {
        "name": "luz.ino",
        "path": "./luz/luz.ino"
      }
    ]
  },
  {
    "title": "Magnetometro Lis3Mdl Esp32 Test",
    "folderName": "MAGNETOMETRO_LIS3MDL_ESP32_TEST",
    "tags": [
      "esp32",
      "magnetometer",
      "lis3mdl",
      "i2c"
    ],
    "libraries": [
      {
        "name": "Wire",
        "version": "builtin"
      }
    ],
    "description": "LIS3MDL magnetometer ESP32 test - reads magnetic field values",
    "files": [
      {
        "name": "MAGNETOMETRO_LIS3MDL_ESP32_TEST.ino",
        "path": "./MAGNETOMETRO_LIS3MDL_ESP32_TEST/MAGNETOMETRO_LIS3MDL_ESP32_TEST.ino"
      }
    ]
  },
  {
    "title": "Mathtest",
    "folderName": "MathTest",
    "tags": [
      "arduino-uno",
      "utility"
    ],
    "libraries": [],
    "description": "Math functions test - tests Arduino math functions and calculations",
    "files": [
      {
        "name": "MathTest.ino",
        "path": "./MathTest/MathTest.ino"
      }
    ]
  },
  {
    "title": "Meteologgersd",
    "folderName": "MeteoLoggerSD",
    "tags": [
      "arduino-uno",
      "sdcard",
      "temperature",
      "humidity",
      "meteo"
    ],
    "libraries": [],
    "description": "Meteo logger with SD card - weather data logging to SD",
    "files": [
      {
        "name": "MeteoLoggerSD.ino",
        "path": "./MeteoLoggerSD/MeteoLoggerSD.ino"
      }
    ]
  },
  {
    "title": "Meteologgersd Eeprom",
    "folderName": "MeteoLoggerSD_EEPROM",
    "tags": [
      "arduino-uno",
      "sdcard",
      "eeprom",
      "temperature",
      "humidity"
    ],
    "libraries": [],
    "description": "Meteo logger SD with EEPROM - weather data logging with SD card and EEPROM storage",
    "files": [
      {
        "name": "MeteoLoggerSD_EEPROM.ino",
        "path": "./MeteoLoggerSD_EEPROM/MeteoLoggerSD_EEPROM.ino"
      }
    ]
  },
  {
    "title": "Meteologgersolo Eeprom",
    "folderName": "MeteoLoggerSolo_EEPROM",
    "tags": [
      "arduino-uno",
      "eeprom",
      "temperature",
      "humidity"
    ],
    "libraries": [],
    "description": "Meteo logger EEPROM only - simple weather data to EEPROM",
    "files": [
      {
        "name": "MeteoLoggerSolo_EEPROM.ino",
        "path": "./MeteoLoggerSolo_EEPROM/MeteoLoggerSolo_EEPROM.ino"
      }
    ]
  },
  {
    "title": "Meteologger Solospi Flash",
    "folderName": "Meteologger_soloSPI_FLASH",
    "tags": [
      "arduino-uno",
      "spi-flash",
      "temperature",
      "humidity"
    ],
    "libraries": [],
    "description": "Meteo logger SPI flash only - weather data to external SPI flash",
    "files": [
      {
        "name": "Meteologger_soloSPI_FLASH.ino",
        "path": "./Meteologger_soloSPI_FLASH/Meteologger_soloSPI_FLASH.ino"
      }
    ]
  },
  {
    "title": "Meteologgerspi Flash Dump Serial",
    "folderName": "MeteologgerSPI_FLASH_DUMP_SERIAL",
    "tags": [
      "arduino-uno",
      "spi-flash",
      "serial"
    ],
    "libraries": [],
    "description": "Meteo logger flash dump - reads SPI flash and outputs to serial",
    "files": [
      {
        "name": "MeteologgerSPI_FLASH_DUMP_SERIAL.ino",
        "path": "./MeteologgerSPI_FLASH_DUMP_SERIAL/MeteologgerSPI_FLASH_DUMP_SERIAL.ino"
      }
    ]
  },
  {
    "title": "Microfonoled",
    "folderName": "MicrofonoLed",
    "tags": [
      "arduino-uno",
      "analog",
      "led",
      "audio"
    ],
    "libraries": [],
    "description": "Microphone LED project - sound reactive LED",
    "files": [
      {
        "name": "MicrofonoLed.ino",
        "path": "./MicrofonoLed/MicrofonoLed.ino"
      }
    ]
  },
  {
    "title": "Mqtt Prueba",
    "folderName": "MQTT_prueba",
    "tags": [
      "esp8266",
      "mqtt",
      "wifi",
      "ldr"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT_Client",
        "version": "unknown"
      },
      {
        "name": "WifiConfig",
        "version": "unknown"
      }
    ],
    "description": "MQTT test with ESP8266 - subscribes to LED control and publishes LDR values",
    "files": [
      {
        "name": "MQTT_prueba.ino",
        "path": "./MQTT_prueba/MQTT_prueba.ino"
      }
    ]
  },
  {
    "title": "Mqtt Prueba Sleep",
    "folderName": "MQTT_prueba_sleep",
    "tags": [
      "esp8266",
      "mqtt",
      "wifi",
      "low-power"
    ],
    "libraries": [
      {
        "name": "ESP8266WiFi",
        "version": "unknown"
      },
      {
        "name": "ESP8266WiFiMulti",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT",
        "version": "unknown"
      },
      {
        "name": "Adafruit_MQTT_Client",
        "version": "unknown"
      }
    ],
    "description": "MQTT sleep test - deep sleep MQTT publishing with ESP8266",
    "files": [
      {
        "name": "MQTT_prueba_sleep.ino",
        "path": "./MQTT_prueba_sleep/MQTT_prueba_sleep.ino"
      }
    ]
  },
  {
    "title": "Mqtt Sensor Movimiento",
    "folderName": "MQTT_Sensor_Movimiento",
    "tags": [
      "esp8266",
      "mqtt",
      "wifi",
      "motion"
    ],
    "libraries": [],
    "description": "MQTT motion sensor - publishes motion detection via MQTT",
    "files": [
      {
        "name": "MQTT_Sensor_Movimiento.ino",
        "path": "./MQTT_Sensor_Movimiento/MQTT_Sensor_Movimiento.ino"
      }
    ]
  },
  {
    "title": "Multipro V2X2",
    "folderName": "Multipro_V2x2",
    "tags": [
      "arduino-uno",
      "rf",
      "nrf24",
      "rc"
    ],
    "libraries": [],
    "description": "Multipro protocol V2x2 - RC receiver using nRF24L01+ for multipro protocol",
    "files": [
      {
        "name": "Multipro_V2x2.ino",
        "path": "./Multipro_V2x2/Multipro_V2x2.ino"
      }
    ]
  },
  {
    "title": "Ninco V202 Rx",
    "folderName": "NINCO_v202_rx",
    "tags": [
      "arduino-uno",
      "rf",
      "nrf24",
      "rc"
    ],
    "libraries": [],
    "description": "NINCO v202 receiver - RC receiver for NINCO drone using nRF24L01+",
    "files": [
      {
        "name": "NINCO_v202_rx.ino",
        "path": "./NINCO_v202_rx/NINCO_v202_rx.ino"
      }
    ]
  },
  {
    "title": "Nokia Lcd Test",
    "folderName": "NOKIA_LCD_TEST",
    "tags": [
      "arduino-uno",
      "nokia-lcd",
      "display",
      "spi"
    ],
    "libraries": [],
    "description": "Nokia LCD test - PCD8544 display test",
    "files": [
      {
        "name": "NOKIA_LCD_TEST.ino",
        "path": "./NOKIA_LCD_TEST/NOKIA_LCD_TEST.ino"
      }
    ]
  },
  {
    "title": "Nrf24 Multipro",
    "folderName": "nRF24_multipro",
    "tags": [
      "arduino-uno",
      "rf",
      "nrf24",
      "rc"
    ],
    "libraries": [],
    "description": "nRF24 multipro RC receiver - RC receiver using nRF24L01+",
    "files": [
      {
        "name": "nRF24_multipro.ino",
        "path": "./nRF24_multipro/nRF24_multipro.ino"
      }
    ]
  },
  {
    "title": "Oscilante",
    "folderName": "Oscilante",
    "tags": [
      "arduino-uno",
      "pwm",
      "oscillator"
    ],
    "libraries": [],
    "description": "Oscillating project - generates oscillating signals",
    "files": [
      {
        "name": "Oscilante.ino",
        "path": "./Oscilante/Oscilante.ino"
      }
    ]
  },
  {
    "title": "Oscilanteshield",
    "folderName": "OscilanteShield",
    "tags": [
      "arduino-uno",
      "pwm",
      "oscillator"
    ],
    "libraries": [],
    "description": "Oscillating shield - waveform generation shield",
    "files": [
      {
        "name": "OscilanteShield.ino",
        "path": "./OscilanteShield/OscilanteShield.ino"
      }
    ]
  },
  {
    "title": "Ota-Mdns-Spiffs Meu",
    "folderName": "OTA-mDNS-SPIFFS_MEU",
    "tags": [
      "esp8266",
      "ota",
      "wifi",
      "spiffs"
    ],
    "libraries": [],
    "description": "OTA mDNS SPIFFS update - wireless firmware and file system updates",
    "files": [
      {
        "name": "OTA-mDNS-SPIFFS_MEU.ino",
        "path": "./OTA-mDNS-SPIFFS_MEU/OTA-mDNS-SPIFFS_MEU.ino"
      }
    ]
  },
  {
    "title": "Parola Scrolling Esp8266",
    "folderName": "Parola_Scrolling_ESP8266",
    "tags": [
      "esp8266",
      "led",
      "display",
      "spi"
    ],
    "libraries": [],
    "description": "Parola scrolling on ESP8266 - MD_Parola library text scrolling",
    "files": [
      {
        "name": "Parola_Scrolling_ESP8266.ino",
        "path": "./Parola_Scrolling_ESP8266/Parola_Scrolling_ESP8266.ino"
      }
    ]
  },
  {
    "title": "Printutf8 Oled Test",
    "folderName": "PrintUTF8_OLED_TEST",
    "tags": [
      "arduino-uno",
      "oled",
      "display",
      "i2c"
    ],
    "libraries": [],
    "description": "UTF8 printing on OLED - tests UTF8 character display on OLED",
    "files": [
      {
        "name": "PrintUTF8_OLED_TEST.ino",
        "path": "./PrintUTF8_OLED_TEST/PrintUTF8_OLED_TEST.ino"
      }
    ]
  },
  {
    "title": "Probatemp",
    "folderName": "probaTEMP",
    "tags": [
      "arduino-uno",
      "temperature"
    ],
    "libraries": [],
    "description": "Temperature probe test - DS18B20 or similar temperature sensor test",
    "files": [
      {
        "name": "probaTEMP.ino",
        "path": "./probaTEMP/probaTEMP.ino"
      }
    ]
  },
  {
    "title": "Provarattiny",
    "folderName": "provarATTINY",
    "tags": [
      "attiny"
    ],
    "libraries": [],
    "description": "ATtiny test - basic ATtiny85/ATtiny2313 test",
    "files": [
      {
        "name": "provarATTINY.ino",
        "path": "./provarATTINY/provarATTINY.ino"
      }
    ]
  },
  {
    "title": "Pruebahttps Put",
    "folderName": "PruebaHTTPS_PUT",
    "tags": [
      "esp8266",
      "wifi",
      "http",
      "network"
    ],
    "libraries": [],
    "description": "HTTPS PUT request test - tests secure HTTP PUT requests",
    "files": [
      {
        "name": "PruebaHTTPS_PUT.ino",
        "path": "./PruebaHTTPS_PUT/PruebaHTTPS_PUT.ino"
      }
    ]
  },
  {
    "title": "Prueba Lsm303 Sparkminimalistexample",
    "folderName": "PRUEBA_LSM303_SparkMinimalistExample",
    "tags": [
      "arduino-uno",
      "motion",
      "magnetometer",
      "i2c"
    ],
    "libraries": [],
    "description": "LSM303 Sparkfun minimal example - accelerometer and magnetometer",
    "files": [
      {
        "name": "PRUEBA_LSM303_SparkMinimalistExample.ino",
        "path": "./PRUEBA_LSM303_SparkMinimalistExample/PRUEBA_LSM303_SparkMinimalistExample.ino"
      }
    ]
  },
  {
    "title": "Pruebasmotor",
    "folderName": "pruebasmotor",
    "tags": [
      "arduino-uno",
      "motors"
    ],
    "libraries": [],
    "description": "Motor tests - various motor control tests",
    "files": [
      {
        "name": "pruebasmotor.ino",
        "path": "./pruebasmotor/pruebasmotor.ino"
      }
    ]
  },
  {
    "title": "Pwm Oscilloscopio Ejemplo",
    "folderName": "PWM_oscilloscopio_ejemplo",
    "tags": [
      "arduino-uno",
      "pwm",
      "analog"
    ],
    "libraries": [],
    "description": "PWM oscilloscope example - PWM signal generation example",
    "files": [
      {
        "name": "PWM_oscilloscopio_ejemplo.ino",
        "path": "./PWM_oscilloscopio_ejemplo/PWM_oscilloscopio_ejemplo.ino"
      }
    ]
  },
  {
    "title": "Rangefinder Testserial",
    "folderName": "RangeFinder_TESTSerial",
    "tags": [
      "arduino-uno",
      "ultrasonic",
      "serial"
    ],
    "libraries": [],
    "description": "Range finder serial test - ultrasonic sensor test",
    "files": [
      {
        "name": "RangeFinder_TESTSerial.ino",
        "path": "./RangeFinder_TESTSerial/RangeFinder_TESTSerial.ino"
      }
    ]
  },
  {
    "title": "Receiver Virtualwire",
    "folderName": "RECEIVER_VIRTUALWIRE",
    "tags": [
      "arduino-uno",
      "rf",
      "virtualwire",
      "433mhz"
    ],
    "libraries": [
      {
        "name": "VirtualWire",
        "version": "unknown"
      }
    ],
    "description": "VirtualWire receiver - receives data via 433MHz RF modules",
    "files": [
      {
        "name": "RECEIVER_VIRTUALWIRE.ino",
        "path": "./RECEIVER_VIRTUALWIRE/RECEIVER_VIRTUALWIRE.ino"
      }
    ]
  },
  {
    "title": "Recepcionvirtualwire",
    "folderName": "recepcionVirtualWire",
    "tags": [
      "arduino-uno",
      "rf",
      "virtualwire",
      "433mhz"
    ],
    "libraries": [
      {
        "name": "VirtualWire",
        "version": "unknown"
      }
    ],
    "description": "VirtualWire reception - alternative RF receiver sketch",
    "files": [
      {
        "name": "recepcionVirtualWire.ino",
        "path": "./recepcionVirtualWire/recepcionVirtualWire.ino"
      }
    ]
  },
  {
    "title": "Relaytimer",
    "folderName": "RelayTimer",
    "tags": [
      "arduino-uno",
      "relay",
      "timer"
    ],
    "libraries": [],
    "description": "Relay timer - timed relay control",
    "files": [
      {
        "name": "RelayTimer.ino",
        "path": "./RelayTimer/RelayTimer.ino"
      }
    ]
  },
  {
    "title": "Relaytimertinny",
    "folderName": "RelayTimerTinny",
    "tags": [
      "attiny",
      "relay",
      "timer"
    ],
    "libraries": [],
    "description": "Tiny relay timer - ATtiny based relay timer",
    "files": [
      {
        "name": "RelayTimerTinny.ino",
        "path": "./RelayTimerTinny/RelayTimerTinny.ino"
      }
    ]
  },
  {
    "title": "Rele2Mqtt Pubsub Imroy",
    "folderName": "RELE2MQTT_pubsub_Imroy",
    "tags": [
      "esp8266",
      "mqtt",
      "relay"
    ],
    "libraries": [],
    "description": "Relay MQTT with Imroy pubsub - MQTT controlled relay",
    "files": [
      {
        "name": "RELE2MQTT_pubsub_Imroy.ino",
        "path": "./RELE2MQTT_pubsub_Imroy/RELE2MQTT_pubsub_Imroy.ino"
      }
    ]
  },
  {
    "title": "Relemqtt",
    "folderName": "ReleMQTT",
    "tags": [
      "esp8266",
      "mqtt",
      "relay"
    ],
    "libraries": [],
    "description": "Relay MQTT control - controls relay via MQTT",
    "files": [
      {
        "name": "ReleMQTT.ino",
        "path": "./ReleMQTT/ReleMQTT.ino"
      }
    ]
  },
  {
    "title": "Relemqtt Pubsub",
    "folderName": "ReleMQTT_pubsub",
    "tags": [
      "esp8266",
      "mqtt",
      "relay"
    ],
    "libraries": [],
    "description": "Relay MQTT pubsub client - controls relay via PubSubClient",
    "files": [
      {
        "name": "ReleMQTT_pubsub.ino",
        "path": "./ReleMQTT_pubsub/ReleMQTT_pubsub.ino"
      }
    ]
  },
  {
    "title": "Relemqtt Pubsub Imroy",
    "folderName": "RELEMQTT_pubsub_Imroy",
    "tags": [
      "esp8266",
      "mqtt",
      "relay"
    ],
    "libraries": [],
    "description": "Relay MQTT Imroy version - alternative MQTT relay sketch",
    "files": [
      {
        "name": "RELEMQTT_pubsub_Imroy.ino",
        "path": "./RELEMQTT_pubsub_Imroy/RELEMQTT_pubsub_Imroy.ino"
      }
    ]
  },
  {
    "title": "Rf Transmitter",
    "folderName": "RF_TRANSMITTER",
    "tags": [
      "arduino-uno",
      "rf",
      "433mhz"
    ],
    "libraries": [],
    "description": "RF transmitter - transmits data via 433MHz RF module",
    "files": [
      {
        "name": "RF_TRANSMITTER.ino",
        "path": "./RF_TRANSMITTER/RF_TRANSMITTER.ino"
      }
    ]
  },
  {
    "title": "Temperatura Serial Y Lcd",
    "folderName": "Temperatura_Serial_y_LCD",
    "tags": [
      "arduino-uno",
      "temperature",
      "lcd",
      "display"
    ],
    "libraries": [],
    "description": "Temperature with LCD display - shows temperature on LCD",
    "files": [
      {
        "name": "Temperatura_Serial_y_LCD.ino",
        "path": "./Temperatura_Serial_y_LCD/Temperatura_Serial_y_LCD.ino"
      }
    ]
  },
  {
    "title": "Temperature Lib",
    "folderName": "temperature_LIB",
    "tags": [
      "arduino-uno",
      "temperature"
    ],
    "libraries": [],
    "description": "Temperature library test - tests temperature sensor libraries",
    "files": [
      {
        "name": "temperature_LIB.ino",
        "path": "./temperature_LIB/temperature_LIB.ino"
      }
    ]
  },
  {
    "title": "Temperatureraw",
    "folderName": "temperatureRAW",
    "tags": [
      "arduino-uno",
      "temperature",
      "analog"
    ],
    "libraries": [],
    "description": "Raw temperature reading - reads temperature sensor directly",
    "files": [
      {
        "name": "temperatureRAW.ino",
        "path": "./temperatureRAW/temperatureRAW.ino"
      }
    ]
  },
  {
    "title": "Test Basichttpclient",
    "folderName": "TEST_BasicHttpClient",
    "tags": [
      "esp8266",
      "wifi",
      "http"
    ],
    "libraries": [],
    "description": "Basic HTTP client test - tests HTTP client functionality",
    "files": [
      {
        "name": "TEST_BasicHttpClient.ino",
        "path": "./TEST_BasicHttpClient/TEST_BasicHttpClient.ino"
      }
    ]
  },
  {
    "title": "Test Bug Map Esp32",
    "folderName": "TEST_BUG_MAP_ESP32",
    "tags": [
      "esp32"
    ],
    "libraries": [],
    "description": "ESP32 bug map test - ESP32 debugging/testing sketch",
    "files": [
      {
        "name": "TEST_BUG_MAP_ESP32.ino",
        "path": "./TEST_BUG_MAP_ESP32/TEST_BUG_MAP_ESP32.ino"
      }
    ]
  },
  {
    "title": "Testesp32Time",
    "folderName": "TestESP32Time",
    "tags": [
      "esp32",
      "rtc"
    ],
    "libraries": [],
    "description": "ESP32 time test - tests internal RTC and time functions",
    "files": [
      {
        "name": "TestESP32Time.ino",
        "path": "./TestESP32Time/TestESP32Time.ino"
      }
    ]
  },
  {
    "title": "Test Esp8266 Input",
    "folderName": "TEST_ESP8266_INPUT",
    "tags": [
      "esp8266",
      "gpio"
    ],
    "libraries": [],
    "description": "ESP8266 input test - tests GPIO input functionality",
    "files": [
      {
        "name": "TEST_ESP8266_INPUT.ino",
        "path": "./TEST_ESP8266_INPUT/TEST_ESP8266_INPUT.ino"
      }
    ]
  },
  {
    "title": "Testgps",
    "folderName": "TestGPS",
    "tags": [
      "arduino-uno",
      "gps",
      "serial"
    ],
    "libraries": [],
    "description": "GPS test - tests GPS module connection",
    "files": [
      {
        "name": "TestGPS.ino",
        "path": "./TestGPS/TestGPS.ino"
      }
    ]
  },
  {
    "title": "Testled C",
    "folderName": "TestLed_c",
    "tags": [
      "arduino-uno",
      "led"
    ],
    "libraries": [],
    "description": "LED C test - basic LED test",
    "files": [
      {
        "name": "TestLed_c.ino",
        "path": "./TestLed_c/TestLed_c.ino"
      }
    ]
  },
  {
    "title": "Testmagnetometro",
    "folderName": "TestMagnetometro",
    "tags": [
      "arduino-uno",
      "magnetometer"
    ],
    "libraries": [],
    "description": "Magnetometer test - tests magnetometer sensor",
    "files": [
      {
        "name": "TestMagnetometro.ino",
        "path": "./TestMagnetometro/TestMagnetometro.ino"
      }
    ]
  },
  {
    "title": "Testmagnetometroalkass",
    "folderName": "TestMagnetometroAlkass",
    "tags": [
      "arduino-uno",
      "magnetometer"
    ],
    "libraries": [],
    "description": "Magnetometer Alkass test - variant magnetometer test",
    "files": [
      {
        "name": "TestMagnetometroAlkass.ino",
        "path": "./TestMagnetometroAlkass/TestMagnetometroAlkass.ino"
      }
    ]
  },
  {
    "title": "Tft Display St7735 Bitmap Test",
    "folderName": "TFT_DISPLAY_ST7735_BITMAP_TEST",
    "tags": [
      "esp8266",
      "tft",
      "display",
      "spi"
    ],
    "libraries": [],
    "description": "ST7735 bitmap test - tests bitmap display on TFT",
    "files": [
      {
        "name": "TFT_DISPLAY_ST7735_BITMAP_TEST.ino",
        "path": "./TFT_DISPLAY_ST7735_BITMAP_TEST/TFT_DISPLAY_ST7735_BITMAP_TEST.ino"
      }
    ]
  },
  {
    "title": "Tft Display St7735 Mqtt Info",
    "folderName": "TFT_DISPLAY_ST7735_MQTT_INFO",
    "tags": [
      "esp8266",
      "mqtt",
      "tft",
      "display"
    ],
    "libraries": [],
    "description": "ST7735 MQTT info display - shows MQTT data on TFT",
    "files": [
      {
        "name": "TFT_DISPLAY_ST7735_MQTT_INFO.ino",
        "path": "./TFT_DISPLAY_ST7735_MQTT_INFO/TFT_DISPLAY_ST7735_MQTT_INFO.ino"
      }
    ]
  },
  {
    "title": "Tft Display St7735 Mqtt Info Ledmatrix",
    "folderName": "TFT_DISPLAY_ST7735_MQTT_INFO_LEDMATRIX",
    "tags": [
      "esp8266",
      "mqtt",
      "tft",
      "led"
    ],
    "libraries": [],
    "description": "ST7735 MQTT with LED matrix - combined display project",
    "files": [
      {
        "name": "TFT_DISPLAY_ST7735_MQTT_INFO_LEDMATRIX.ino",
        "path": "./TFT_DISPLAY_ST7735_MQTT_INFO_LEDMATRIX/TFT_DISPLAY_ST7735_MQTT_INFO_LEDMATRIX.ino"
      }
    ]
  },
  {
    "title": "Tot",
    "folderName": "TOT",
    "tags": [
      "arduino-uno"
    ],
    "libraries": [],
    "description": "TOT project - Unknown project",
    "files": [
      {
        "name": "TOT.ino",
        "path": "./TOT/TOT.ino"
      }
    ]
  },
  {
    "title": "Tot Y Sd",
    "folderName": "TOT_y_sd",
    "tags": [
      "arduino-uno",
      "sdcard"
    ],
    "libraries": [],
    "description": "TOT with SD card - project with SD card logging",
    "files": [
      {
        "name": "TOT_y_sd.ino",
        "path": "./TOT_y_sd/TOT_y_sd.ino"
      }
    ]
  },
  {
    "title": "Trasmitter Virtualwire",
    "folderName": "trasmitter_Virtualwire",
    "tags": [
      "arduino-uno",
      "rf",
      "virtualwire",
      "433mhz"
    ],
    "libraries": [
      {
        "name": "VirtualWire",
        "version": "unknown"
      }
    ],
    "description": "VirtualWire transmitter - transmits data via 433MHz RF",
    "files": [
      {
        "name": "trasmitter_Virtualwire.ino",
        "path": "./trasmitter_Virtualwire/trasmitter_Virtualwire.ino"
      }
    ]
  },
  {
    "title": "U8G2Test Oled Helloworld",
    "folderName": "U8g2TEST_OLED_HelloWorld",
    "tags": [
      "arduino-uno",
      "oled",
      "display",
      "i2c"
    ],
    "libraries": [
      {
        "name": "U8g2lib",
        "version": "unknown"
      }
    ],
    "description": "U8g2 OLED Hello World - basic OLED display test",
    "files": [
      {
        "name": "U8g2TEST_OLED_HelloWorld.ino",
        "path": "./U8g2TEST_OLED_HelloWorld/U8g2TEST_OLED_HelloWorld.ino"
      }
    ]
  },
  {
    "title": "V2X2",
    "folderName": "V2X2",
    "tags": [
      "arduino-uno",
      "rf",
      "nrf24",
      "rc"
    ],
    "libraries": [],
    "description": "V2X2 protocol RC - RC receiver for V2X2 protocol",
    "files": [
      {
        "name": "V2X2.ino",
        "path": "./V2X2/V2X2.ino"
      }
    ]
  },
  {
    "title": "Webserver  Serial Analog  Example",
    "folderName": "WebServer__serial_analog__Example",
    "tags": [
      "esp8266",
      "wifi",
      "webserver"
    ],
    "libraries": [],
    "description": "Web server serial analog - web server with serial/analog monitoring",
    "files": [
      {
        "name": "WebServer__serial_analog__Example.ino",
        "path": "./WebServer__serial_analog__Example/WebServer__serial_analog__Example.ino"
      }
    ]
  },
  {
    "title": "Websocket Magnetometer Esp32 Lis3Mdl",
    "folderName": "Websocket_Magnetometer_esp32_LIS3MDL",
    "tags": [
      "esp32",
      "websocket",
      "magnetometer",
      "i2c"
    ],
    "libraries": [],
    "description": "Websocket magnetometer ESP32 - streams magnetometer data via WebSocket",
    "files": [
      {
        "name": "Websocket_Magnetometer_esp32_LIS3MDL.ino",
        "path": "./Websocket_Magnetometer_esp32_LIS3MDL/Websocket_Magnetometer_esp32_LIS3MDL.ino"
      }
    ]
  },
  {
    "title": "Wificlient Meu",
    "folderName": "WiFiClient_MEU",
    "tags": [
      "esp8266",
      "wifi",
      "network"
    ],
    "libraries": [],
    "description": "WiFi client MEU version - custom WiFi client implementation",
    "files": [
      {
        "name": "WiFiClient_MEU.ino",
        "path": "./WiFiClient_MEU/WiFiClient_MEU.ino"
      }
    ]
  },
  {
    "title": "Wifi Client Test",
    "folderName": "WIFI_CLIENT_TEST",
    "tags": [
      "esp8266",
      "wifi",
      "network"
    ],
    "libraries": [],
    "description": "WiFi client test - basic WiFi client functionality test",
    "files": [
      {
        "name": "WIFI_CLIENT_TEST.ino",
        "path": "./WIFI_CLIENT_TEST/WIFI_CLIENT_TEST.ino"
      }
    ]
  }
]