Ok, disculpas por el tirón de orejas.
Por cosas como esta es que se pide no abrir varios temas sobre un mismo problema, para saber que quieres que haga tu código tuve que buscar los temas anteriores. Le voy a pedir a @Surbyte que los una, aguántate el reto.
Vamos a hacer las cosas bien, vamos a ir resolviendo las cosas de a poco, ¿Ok?
Primero vamos por lo de los LED que cambian cada 1 minuto o 30 segundos (no queda clara tu explicación dices una cosa y en el código haces otra)
Vamos a encender los LED alternadamente cada 30 segundos (como dice tu código), los pulsadores los dejamos para después, LCD y SR04 quedan como están.
Como los LED tienen estados opuestos (si uno está encendido el otro está apagado) voy a agregar arbitrariamente una variable que refleja el estado del LED2 (pero podría ser el LED1, solo elegí el 2)
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long tiempo1 = 0;
unsigned long tiempo2 = 0;
unsigned long tiempoSegundos = 0;
const int Trigger = 7;
const int Echo = 6;
int led2 = 13;
int led = 10;
int p1 = 3;
int p2 = 2;
Servo myservo;
bool estadoLED2 = true; // determina el estado de LED2. true = encendido
void setup() {
myservo.attach(9);
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.print(" Tiempo ");
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(p1, INPUT);
pinMode(p2, INPUT);
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
tiempo1 = millis();
tiempo2 = millis();
digitalWrite(led2, estadoLED2); // LED2 encendido
digitalWrite(led, !estadoLED2); // LED apagado
}
void loop() {
// tiempo2 = millis();
if (millis() - tiempo1 >= 1000) { //Si ha pasado 1 segundo ejecuta el IF
tiempo1 = millis(); //Actualiza el tiempo actual
tiempoSegundos = tiempo1 / 1000; //conversion
Serial.print("Ha transcurrido: ");
Serial.print(tiempoSegundos);
Serial.println(" seg desde que se encendio el Arduino");
Serial.println(millis());
tiempoSegundos = tiempoSegundos / 60; //Configuracion de tiempo en minutos
lcd.setCursor(0, 1);
lcd.print(tiempoSegundos);
lcd.print(" minutos");
}
long t; //timepo que demora en llegar el eco
long d; //distancia en centimetros
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
t = 10000;
// t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
d = t / 59;
/*
if (tiempoSegundos == 60000) { //intento reiniciar en este punto; cuando llegue al minuto todas las variables se van a 0
tiempoSegundos = 0;
tiempo1 = 0;
tiempo2 = 0;
}
*/
if (millis() - tiempo2 >= 30000) { //si millis < 30000 enciende un led y el otro lo apaga
estadoLED2 = !estadoLED2; // invierte el estado de LED2
digitalWrite(led2, estadoLED2);
digitalWrite(led, !estadoLED2); // LED en estado contrario a LED2
myservo.write(55);
tiempo2 = millis(); // **** esto equivale a resetear tiempo2 ****
//delay(5000);
}
/*
if (digitalRead(p2) == HIGH || d <= 35) { //si se presiona el pulsador enciende el led contrario un segundo
Serial.println("bad"); //o si el sensor detecta algo <35 cm
myservo.write(15);
digitalWrite(led2, estadoLED2);
digitalWrite(led, !estadoLED2);
// delay(5000);
}
if (digitalRead(p1) == HIGH) { //si se presiona el pulsador enciende el led contrario un segundo
Serial.println("nice");
myservo.write(15);
digitalWrite(led2, estadoLED2);
digitalWrite(led, !estadoLED2);
// delay(5000);
}
*/
}
Fijate en el comentario con asteriscos, digo que equivale a resetear tiempo2 porque en el instante que se hace la igualdad, justo en ese momento, la diferencia entre tiempo2 y millis() es 0 (obvio, son iguales).
Como lo que controlamos es la diferencia de tiempos, cuando la diferencia sea 30000 mseg, cambia el estado de los LED y vuelve a fijar tiempo2 al nuevo millis() para volver a contar 30 seg desde ese momento.
O sea, tiempo2 solo cambia de valor cada 30 seg no en cada pasada del loop() como lo habías planteado.
Como ves no hace falta ponerlo en 0 porque lo que controlamos es la diferencia entre valores.
Ahora explica bien qué hacen los pulsadores