5 leds High Power con sensor ultra sonico y sensor pir

Buenas tardes

Tengo la siguiente consulta, es posible que haya interferencias o valores erraticos si conecto un sensor ultrasonico y un sensor pir?

Estoy haciendo un circuito en el que tengo 5 leds de 3watts con un mosfet irzf44n cada uno con una fuente de pc y un stepdown para regular el voltaje, el circuito prende, funciona, los leds todo ok entiendo, eso ya esta resuelto, creo

Mi consulta es si de alguna forma ese circuito puede no llegar a funcionar con lo que deseo

La propuesta de mi proyecto es que a medida que vos te acerques, 4 de los leds aumenten su potencia luminica segun que tan cerca estas, y que cuando estes muy cerca apaguen el quinto led, pero los valores que me toman los sensores son erraticos

Otra consulta, yo necesito esconder los sensores para el proyecto, el sensor ultrasonico si esta tapado no funciona no?

// ================= PINES =================
const int warmLeds[] = {5, 6, 9, 10};
const int numWarmLeds = 4;

const int coldLedPin = 3;

const int trigPin = 2;
const int echoPin = 12;

const int pirPin = 7;

// ============== PARÁMETROS ===============
const int pwmMinBase = 13;          // ~5%
const int pwmMaxNoPresence = 25;    // ~10%
const int pwmMaxPresence = 204;     // ~80%

const int breathAmplitude = 12;     // ±5% PWM
const unsigned long breathPeriod = 4000; // ms

const int distFar = 200;            // cm
const int distNear = 40;            // cm
const int coldLedOffDist = 100;     // cm (umbral apagado LED frío)

// =========================================

void setup() {
  for (int i = 0; i < numWarmLeds; i++) {
    pinMode(warmLeds[i], OUTPUT);
  }

  pinMode(coldLedPin, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(pirPin, INPUT);

  digitalWrite(trigPin, LOW);

  Serial.begin(9600);
  Serial.println("Sistema iniciado");
}

// =========================================

void loop() {
  bool presence = digitalRead(pirPin);
  long distance = measureDistance();

  // Filtro básico para lecturas erráticas
  if (distance < 20 || distance > 300) {
    distance = distFar;
  }

  // -------- PWM BASE --------
  int pwmBase;

  if (!presence) {
    pwmBase = pwmMinBase;
    analogWrite(coldLedPin, 255); // LED frío ON
  } else {
    pwmBase = map(distance, distFar, distNear,
                  pwmMaxNoPresence, pwmMaxPresence);
    pwmBase = constrain(pwmBase, pwmMaxNoPresence, pwmMaxPresence);

    if (distance < coldLedOffDist) {
      analogWrite(coldLedPin, 0);   // LED frío OFF
    } else {
      analogWrite(coldLedPin, 255); // LED frío ON
    }
  }

  // -------- RESPIRACIÓN --------
  float phase = (millis() % breathPeriod) / (float)breathPeriod;
  float breath = sin(phase * TWO_PI);

  int pwmFinal = pwmBase + breath * breathAmplitude;
  pwmFinal = constrain(pwmFinal, 0, 255);

  // -------- SALIDA LEDs CÁLIDOS --------
  for (int i = 0; i < numWarmLeds; i++) {
    analogWrite(warmLeds[i], pwmFinal);
  }

  // -------- DEBUG --------
  Serial.print("PIR: ");
  Serial.print(presence);
  Serial.print(" | Distancia: ");
  Serial.print(distance);
  Serial.print(" cm | PWM calidos: ");
  Serial.println(pwmFinal);

  delay(50); // solo para estabilizar el monitor serie
}

// =========================================

long measureDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH, 25000); // timeout ~4m

  if (duration == 0) return distFar;

  return duration / 58;
}

La frecuencia ultrasónica transmite una señal de 40kHz. El PIR (infrarrojo pasivo) no transmite. El PIR solo recibe IR de la fuente de IR (calor).

Si está cubierto, no funciona, ¿verdad?

Correcto. Si la señal no escapa, no tiene retorno.

¿cómo es tu circuito?

¿Por qué usas un pin para cada LED si a todos aplicas el mismo tratamiento?

¿Has probado con un solo LED?

Conforme a la documentación, usar analogWrite con más de 4 pines puede causar problemas.

https://docs.arduino.cc/language-reference/en/functions/analog-io/analogWrite/

¿Qué tipo de Arduino estás utilizando?


¿Has probado escribir esos valores en el monitor? ¿Puedes compartir una muestra de esos valores?