ayuda código para activar un relay durante cierto tiempo y que luego se apague

muy buenas mi consulta es necesito hacer que un capacitor se cargue a diferentes niveles un 10% un 20% etc entonces he pensado jugar con el tiempo de carga por medio de un relay donde este se active durante x cantidad de tiempo y pasado este interrumpa la conexión y no se vuelva a activar hasta que no pulse el botón de carga muchas gracias de antemano
Adjunto codigo:

int botonState = 0;
int pinBoton = 8;
int Rele = 2;
unsigned long tiempo;
bool activoRele = false;
void setup(){
pinMode(7, INPUT_PULLUP);
pinMode(pinBoton, INPUT);
pinMode(Rele, OUTPUT);
}
void loop(){
if (digitalRead(7) == 0) {
botonState = (botonState + 1) % 4;
delay(200);
}
switch (botonState) {
case 0:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}

if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=1000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
case 1:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}

if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=2000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
case 2:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}

if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=3000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
case 3:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}

if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=4000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
}
}

Moderador:
En el título no debe usarse la palabra Ayuda. Edita!!
Los códigos van con etiquetas. Edita.

Lee las Normas del foro

Un relevador es lento en la entrada y salida, no tendrías buen control, yo pensaría en un transistor y una resistencia limitadora de corriente para que sea una carga lenta y puedas tener control, ya que la carga del capacitor no es de forma linear, yo le pondría una retroalimentación y que el arduino decidiera de acurdo a ello en que momento apagar el transistor,