Ventana inteligente.

Hola, inicié un nuevo proyecto de una ventana inteligente, he tenido problemas con el código puesto que no sé bien cómo programar. Hice éste código pero sé que está con errores. Quisiera pedirles su ayuda para que mi código esté bien, y si pueden explicarme un poco el código. Gracias.

#include <SoftwareSerial.h> // TX RX software library for bluetooth
#include <Servo.h> // servo library 
#include <LiquidCrystal.h>

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Servo myservo;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

int rs = 12; 
int en = 11;
int d4 = 5;
int d5 = 4;
int d6 = 3;
int d7 = 2;
int ang1 = 0;
int ang2 = 90; 
int ang3 = 180;
int bluetoothTx = 10; // bluetooth tx al 10 pin
int bluetoothRx = 11; // bluetooth rx al 11 pin
int sensorMin=0;
int sensorMax=1024;

void setup() 
{
  lcd.begin(16, 2);
  myservo.attach(9); // attach servo signal wire to pin 9
  //Setup Bluetooth serial connection to android
  bluetooth.begin(9600);
  Serial.begin(9600);
 
}

void loop() {
  int sensorReading = analogRead(A0);
  int range = map(sensorReading,sensorMin,sensorMax,0,3);
  switch(range){
      case 0: 
        Serial.println("Mojado");
        else {
        lcd.setCursor (0,0);
        lcd.print ("Estado: ");
        lcd.setCursor (0,1);
        lcd.print ("Mojado");
        }
        myservo.write(ang3);
        break;
        
      case 1:
        Serial.println("Humedo");
         else {
        lcd.setCursor (0,0);
        lcd.print ("Estado: ");
        lcd.setCursor (0,1);
        lcd.print ("Humedo");
        }
        myservo.write(ang2);
        break;
        
      case 2:
        Serial.println("Seco");
         else {
        lcd.setCursor (0,0);
        lcd.print ("Estado: ");
        lcd.setCursor (0,1);
        lcd.print ("Seco");
        }
        myservo.write(ang1);
        break;  
    }
    delay(1);

      //Read from bluetooth and write to usb serial
  if(bluetooth.available()> 0 ) // receive number from bluetooth
  {
    int servopos = bluetooth.read(); // save the received number to servopos
    Serial.println(servopos); // serial print servopos current number received from bluetooth
    myservo.write(servopos); // roate the servo the angle received from the android app
  }


}

Cuando mapeas usas 0 a 3 de modo que deberias tener 4 case y tienes 0,1 y 2 te falta 3.

Los else { no tienen nada que hacer ahi a menos que exista un if() algo antes y luego entonces el else

Asi debería funcionar pero te falta el case 3: o corrige tu map para ir de 0 a 2 en los parámetros finales.

int range = map(sensorReading,sensorMin,sensorMax,0,3);
[ Deviot 2.2.1 ] Iniciando...

The current working directory C:\Users\Ricardo\AppData\Local\Temp\Deviot\Borrar will be used for the project.


The next files/directories have been created in C:\Users\Ricardo\AppData\Local\Temp\Deviot\Borrar
include - Put project header files here
lib - Put here project specific (private) libraries
src - Put project source files here
platformio.ini - Project Configuration File

Project has been successfully initialized! Useful commands:
`pio run` - process/build project from the current directory
`pio run --target upload` or `pio run -t upload` - upload firmware to a target
`pio run --target clean` - clean project (remove compiled files)
`pio run --help` - additional information