Medidor de nivel con mega2560 y pantalla 20x4

Tu código se bloquea porque hace una llamada recursiva infinita de la que nunca sale dejando al micro sin memoria.

En la declaración de Sensor1 al final del código, la vuelves a llamar.

#include <LiquidCrystal_I2C.h>
#include "LedControl.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);

LedControl lc = LedControl(12, 11, 10, 1);

int num = 0;
int Uni = 0;
int Dec = 0;
int Cen = 0;

int lectura = 0;
float tempC = 0.0;

int latch = 2; //indica pin de salida en el chip
int clockpin = 4; //Cuando ay que leer los bit
int data = 3; //Envio datos

int duty; //Ciclo Util de PWM

byte Displays[10] = {
  // gfedcba
  0b0111111, // 0
  0b0000110, // 1
  0b1011011, // 2
  0b1001111, // 3
  0b1100110, // 4
  0b1101101, // 5
  0b1111101, // 6
  0b0000111, // 7
  0b1111111, // 8
  0b1101111 // 9
};

void setup() {
  pinMode(22, INPUT);
  pinMode(23, INPUT);
  pinMode(24, INPUT);
  pinMode(25, INPUT);
  pinMode(26, INPUT);
  pinMode(27, INPUT);
  pinMode(28, INPUT);
  pinMode(29, INPUT);
  pinMode(30, INPUT);
  pinMode(31, INPUT);
  pinMode(32, INPUT);
  pinMode(33, INPUT);
  pinMode(34, INPUT);
  pinMode(35, INPUT);
  pinMode(36, INPUT);
  pinMode(37, INPUT);
  pinMode(38, INPUT);
  pinMode(39, INPUT);
  pinMode(40, INPUT);
  pinMode(41, INPUT);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("BIENVENIDOS");
  pinMode(latch, OUTPUT);
  pinMode(clockpin, OUTPUT);
  pinMode(data, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
  Sensor1();
}
////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Tanque Vacio ///////////////////////////////////////////////////
void Sensor1() {
  if (digitalRead(22) == 0) {
    duty = 0;
    num = 0;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 5% /////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 0) {
    duty = 12;
    num = 5;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 10% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 0) {
    duty = 24;
    num = 10;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 15% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 0) {
    duty = 36;
    num = 15;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 20% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 0) {
    duty = 48;
    num = 20;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 25% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 0) {
    duty = 60;
    num = 25;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 30% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 0) {
    duty = 72;
    num = 30;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 35% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 0) {
    duty = 84;
    num = 35;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 40% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 0) {
    duty = 96;
    num = 40;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 45% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 0) {
    duty = 108;
    num = 45;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 50% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 0) {
    duty = 120;
    num = 50;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 55% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 0) {
    duty = 132;
    num = 55;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 60% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 0) {
    duty = 144;
    num = 60;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 65% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 0) {
    duty = 156;
    num = 65;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 70% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 0) {
    duty = 168;
    num = 70;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 75% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 1 && digitalRead(37) == 0) {
    duty = 180;
    num = 75;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 80% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 1 && digitalRead(37) == 1
      && digitalRead(38) == 0) {
    duty = 192;
    num = 80;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 85% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 1 && digitalRead(37) == 1
      && digitalRead(38) == 1 && digitalRead(39) == 0) {
    duty = 204;
    num = 85;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 90% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 1 && digitalRead(37) == 1
      && digitalRead(38) == 1 && digitalRead(39) == 1 && digitalRead(40) == 0) {
    duty = 216;
    num = 90;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 95% ////////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 1 && digitalRead(37) == 1
      && digitalRead(38) == 1 && digitalRead(39) == 1 && digitalRead(40) == 1 && digitalRead(41) == 0) {
    duty = 228;
    num = 95;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////// Sensor1 100% ///////////////////////////////////////////////////
  if (digitalRead(22) == 1 && digitalRead(23) == 1 && digitalRead(24) == 1 && digitalRead(25) == 1
      && digitalRead(26) == 1 && digitalRead(27) == 1 && digitalRead(28) == 1 && digitalRead(29) == 1
      && digitalRead(30) == 1 && digitalRead(31) == 1 && digitalRead(32) == 1 && digitalRead(33) == 1
      && digitalRead(34) == 1 && digitalRead(35) == 1 && digitalRead(36) == 1 && digitalRead(37) == 1
      && digitalRead(38) == 1 && digitalRead(39) == 1 && digitalRead(40) == 1 && digitalRead(41) == 1) {
    duty = 255;
    num = 100;
    delay(200);
    Muestra();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
  Sensor1(); // <-- POR QUE ESTÁ AQUI????
}
////////////////////////////////////////////////////////////////////////////////////////////
void Muestra() {
  if (num == 0) {
    lcd.setCursor(0, 1);
    lcd.print("Tanque Vacio");
    lectura = analogRead(0);
    tempC = (lectura * (500.0 / 1023.0));
    lcd.setCursor(0, 3);
    lcd.print(tempC);
    lcd.print(" Grados");
    Cen = num / 100;
    Dec = num / 10;
    Uni = num % 10;
    digitalWrite(latch, LOW);
    shiftOut(data, clockpin, MSBFIRST, Displays[Uni]);
    shiftOut(data, clockpin, MSBFIRST, Displays[Dec]);
    shiftOut(data, clockpin, MSBFIRST, Displays[Cen]);
    digitalWrite(latch, HIGH);
    analogWrite( 6, duty ); // actualizar ciclo de trabajo
    analogWrite( 7, duty ); // actualizar ciclo de trabajo
    Sensor1();
  }
  lcd.setCursor(0, 1);
  lcd.print("Nivel");
  lcd.print(" ");
  lcd.print(num);
  lcd.print(" ");
  lectura = analogRead(0);
  tempC = (lectura * (500.0 / 1023.0));
  lcd.setCursor(0, 3);
  lcd.print(tempC);
  lcd.print(" Grados");
  Cen = num / 100;
  Dec = num / 10;
  Uni = num % 10;
  digitalWrite(latch, LOW);
  shiftOut(data, clockpin, MSBFIRST, Displays[Uni]);
  shiftOut(data, clockpin, MSBFIRST, Displays[Dec]);
  shiftOut(data, clockpin, MSBFIRST, Displays[Cen]);
  digitalWrite(latch, HIGH);
  analogWrite( 6, duty ); // actualizar ciclo de trabajo
  analogWrite( 7, duty ); // actualizar ciclo de trabajo
  Sensor1();
}