// Definición de Pines físicos del ESP32 clásico / NodeMCU-32S
const int LED_PIN = 2; // LED azul integrado en la placa
const int POTENCIOMETRO_PIN = 34; // Pin analógico seguro de entrada (ADC1_CH6)
unsigned long tiempoPrevio = 0;
const long intervaloEnvio = 100; // Enviar datos a NetLogo cada 100 milisegundos
void setup() {
// Configuración de los modos de los pines
pinMode(LED_PIN, OUTPUT);
pinMode(POTENCIOMETRO_PIN, INPUT);
// Inicialización del puerto USB Serial a 57600 baudios (estándar de NetLogo)
Serial.begin(57600);
}
void loop() {
// ---- 1. RECIBIR ACCIONES DESDE NETLOGO ----
if (Serial.available() > 0) {
char comando = Serial.read(); // Lee el byte entrante
if (comando == '1') {
digitalWrite(LED_PIN, HIGH); // Enciende el LED físico
}
else if (comando == '0') {
digitalWrite(LED_PIN, LOW); // Apaga el LED físico
}
}
// ---- 2. ENVIAR DATOS DE SENSOR A NETLOGO ----
unsigned long tiempoActual = millis();
if (tiempoActual - tiempoPrevio >= intervaloEnvio) {
tiempoPrevio = tiempoActual;
// Lee el potenciómetro (devuelve un entero entre 0 y 4095 gracias a los 12 bits del ESP32)
int valorAnalogico = analogRead(POTENCIOMETRO_PIN);
// Envía el valor seguido de un salto de línea (\n), indispensable para 'serial:read-line'
Serial.println(valorAnalogico);
}
}