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();
}