Problem with servo, rgb, photoresistor and HC-SR04

salve, sono un ragazzo di 16 anni e sto avendo problemi con il far fuzionare contemporaneamente un servo, un LED RGB, un fotoresistore ed un sensore HC-SR04.
vi sarei grato se poteste aiutarmi a correggere il codice.
il progetto dovrebbe consistere in una simil-barriera elettrica, controllata dal fotoresistore, che differenzia fra"giorno" e "notte".
Se giorno, il servo si dovrebbe muovere quando l'HC-SR04 capta qualcosa più vicino di 9cm, il tutto con la luce che cambia in base al movimento del servo.
Se notte invece, vi dovrebbe essere una costante luce blu e il servo non dovrebbe muoversi.
vi riporto il codice qui di sotto, e vi ringrazio in anticipo.

#include <Servo.h>
Servo servomotor;

int fotoresistor = A2;
int thr = 0;

int trig = A0;
int echo = A1;
long durata;
long distanza;

int red = 6;
int green = 5;
int blue = 3;

void setup() {
  
 Serial.begin(9600);

 servomotor.attach(9);
 
 pinMode(fotoresistor, INPUT);
 
 pinMode(trig, OUTPUT);
 pinMode(echo, INPUT);
 digitalWrite(echo, LOW);
 digitalWrite(trig, LOW);
 distanza = 0;
 durata = 0;

 pinMode(red, OUTPUT);
 pinMode(green, OUTPUT);
 pinMode(blue, OUTPUT);
 
}
void setColor( int red, int green, int blue){    //per controllare il LED RGB
  #ifdef COMMON_ANODE
   red = 255 - red;
   green = 255 - green;
   blue = 255- blue;
   #endif
   analogWrite(red, red);
   analogWrite(green, green);
   analogWrite(blue, blue);
}

void loop() {
  setColor(255, 0, 0);           //luce rossa costante
 digitalWrite(trig, HIGH);    // per controllare HC-SR04
 delay (1000);
 digitalWrite(trig, LOW);
 durata = pulseIn(echo, HIGH);
  distanza = durata / 29/ 2;
  int consent = distanza;
  Serial.print("Durata : ");
  Serial.print(durata);
  Serial.print(" - Distanza : ");
  Serial.println(distanza);
  delay(200);

  int lux = analogRead(A2);   //per controllare il fotoresistore
  Serial.println(lux);
  delay(200);
  thr = analogRead(fotoresistor);
  if (thr < 120){                 //per controllare il servo e la luce RGB
    setColor( 0, 0, 255);
    delay(3000);
    servomotor.write(90);
    delay(95);
    setColor( 255, 0, 0);
  }
  else{
if (consent < 9){
  setColor( 255, 255, 0);
  delay (3000);
  servomotor.write(0);
  setColor( 0, 255, 0);
  delay(95);
}
else {
  setColor( 255, 255, 0);
  delay(3000);
  servomotor.write(90);
  delay(95);
  setColor( 255, 0, 0);
}
}
}


Buongiorno,

prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di farla al più presto. :wink: