Проект на ARDUINO - Ребят пожалуйста помогите новичку

Ребята, приятно что вы откликнулись! =) Спасибо!
Если есть девушки то всех с 8 марта!

На самом деле я так понимаю, что нет придела совершенства!
Давайте попробуем ответить на мой вопрос, конечно если есть какое то хорошее предложение, как изменить все на 100% то в развернутой форме, что для чего тогда будет интересно, но так как я не профи, я выбрал путь (может и не лучший) и хотелось бы понять что именно не так…

я прокомментирую весь код, может быть не понятно что для чего у меня:

//подсветка ступеней лесницы

//датчик движения ,в глобальном условии задачи это датчик на верхнем этаже, в локальном (в 
//данном вопросе) мы используем только этот датчик
#define PIR_UP    A3
//этот датчик сейчас не используем
#define PIR_DOWN  A2
//ступеньки - тестово 6шт, вообще их больше но я собрал макет и тут их 6 шт...
#define STEP_1    A0
#define STEP_2    10
#define STEP_3    11
#define STEP_4    12
#define STEP_5    13
#define STEP_6    A1
//переменная IO задумана принятия показания с PIR_UP и она же является ключом для switch
int IO; 
// таймеры на все случаи жизни
uint32_t myTimer1;
uint32_t myTimer2;
uint32_t myTimer3;
// не работает сейчас 
int STATUS;


void setup()

{Serial.begin(9600);
// направления работы пина - на выдачу =) и на прием
    pinMode(STEP_1,     OUTPUT); 
    pinMode(STEP_2,     OUTPUT); 
    pinMode(STEP_3,     OUTPUT); 
    pinMode(STEP_4,     OUTPUT); 
    pinMode(STEP_5,     OUTPUT); 
    pinMode(STEP_6,     OUTPUT);
    pinMode(PIR_UP,      INPUT);
    pinMode(PIR_DOWN,    INPUT); 
    delay (500);
    
}
void loop()
{
Serial.println("____________________");
Serial.print("myTimer1:");
Serial.println(millis()-myTimer1);
Serial.print("myTimer2:");
Serial.println(millis()- myTimer2);
Serial.print("myTimer3:");
Serial.println(millis()- myTimer3);
Serial.print("IO: ");
Serial.println(IO);
  delay(1000); 

// Если PIR_UP сработал то записываем значение 1 в IO и запускаем таймер myTimer1 
  if (digitalRead(PIR_UP) == HIGH)                    
{
IO = 1; 
myTimer1=millis();
}
//Если IO == 1 и myTimer1 > 10с, то записываем значение 0 в IO это как раз не дает перейти во //второй кейс сразу и начать сразу выключать ступеньки
  if (IO == 1 && millis() - myTimer1 > 10000)
IO = 0; 

switch (IO)                                           
{
//Если IO == 1, то вывести на экран "case 1", обнулить таймер myTimer2, выключить ступеньки и выйти из кейса
  case 1:                                                             
Serial.println("case 1"); 
//тут и есть основной заплет, почему этот таймер стоит на месте
myTimer2=millis(); 
  if(millis()- myTimer2 > 1000)
    digitalWrite(STEP_1, HIGH);
  if(millis()- myTimer2 > 2000)  
    digitalWrite(STEP_2, HIGH);     
  if(millis()- myTimer2 > 3000)
   digitalWrite(STEP_3, HIGH);
  if(millis()- myTimer2 > 4000)
    digitalWrite(STEP_4, HIGH);
    break;
   
 
  
 
 case 0:       
//Если IO == 0, то вывести на экран "case 0", однулить таймер myTimer3, выключить ступеньки и выйти из кейса                                         
Serial.println("case 0");
myTimer3=millis();
  if(millis()- myTimer3 > 1000)
    digitalWrite(STEP_4, LOW);
  if(millis()- myTimer3 > 2000)
    digitalWrite(STEP_3, LOW);
  if(millis()- myTimer3 > 3000)
    digitalWrite(STEP_2, LOW);
  if(millis()- myTimer3 > 4000)
    digitalWrite(STEP_1, LOW);
    break;

}

}

если кому то интересно как выглядит мой макет на данном этапе

фото

у меня вопрос по коду, - ЭТО как если бы врач Вам сказал, даже осматривать Вас не буду, итак видно что человек вы не очень…

думаю это мягко говоря преувеличение… даже с моим опытом программирования в 3 дня, я понимаю это.

тут вообще не понятно. Помещение мой дом, я иду спать на второй этаж, хочу идти по ступенькам с подсветкой, зачем мне считать людей в помещении… вообще не понял о чем речь и как это реализовать…

проект более глобальный чем мой вопрос и в нем предусмотрено вкл/выкл по освещенности (хоть это и сложно, поскольку придется выводить датчик оооочень далеко, дома подсветка, на улице подсветка и тд…)

больше не лучше =), то о чем вы говорите называется опт. бесконтактный вык. барьерного типа, конечно он хорош для каких то проектов, а конкретнее он хорош на больших расстояньях, например на воротах у меня стоит именно такой, так как возле ворот много чего происходит а ворота 12 метров а PIR датчик на 12 метров работает не корректно, особенно в доль ворот, даже сами ворота будут его будить, и все сломается))), НО в моем проекте нет возможности установить обе части прием+передача нет места; к слову есть еще демузные и рефлекторные датчики для их работы не нужен приемник (подходит для меня) но они не покажут себя лучше чем PIR я даже больше скажу, их можно ненароком переступить)))
ИТОГО в целом я рад помочь и просветить в том, что я знаю…

Так было ж уже выше, что именно непонятно?

switch это не какая-то магия, а просто немного другой вариант синтаксиса if, более удобный в некоторых случаях (например не надо повторять а == везде).