arduino接受传感器信号控制电机(推杆)

希望实现的是,监控窗口输入1,电机转动,按下压力传感器及停止,即使松开 电机也是停止状态……
分别使用if 和switch两种 都是输入1后,电机运转,按压压力传感器,无法停下电机。

用if如下:


#define press_sensor 2
#define NPN_2 4    //缩杆子7 伸4
bool i;

void setup() {
 pinMode(press_sensor,INPUT);
 pinMode(NPN_2,OUTPUT);
 Serial.begin(9600);
}

void loop() {
if(Serial.available())
  {
  int signal = Serial.read();
   if(signal==49)//输1 运行
      {
      shengan(1);
      i=digitalRead(press_sensor);
      if(i!=0)
        {shengan(0);//没按 运动
        delay(10);
        }
       else
       { shengan(1);}//按了停下
       }
      
   }
    
}

void shengan(bool on)
{if (on==1)
digitalWrite(NPN_2,HIGH);//运动
 else
 digitalWrite(NPN_2,LOW);//停
 }

用switch如下:


#define press_sensor 2
#define NPN_2 4    //缩杆子7 伸4
bool i;
int flag=1;

void setup() {
 pinMode(press_sensor,INPUT);
 pinMode(NPN_2,OUTPUT);
 Serial.begin(9600);
}
void loop() {
if(Serial.available())
{
int signal = Serial.read();
if(signal==49)
    {
      switch(flag)
      {
        case 1:
        { shengan(1);
          i=digitalRead(press_sensor);
          if(i==1)
          {flag++;
          }
          break;
          }
         case 2:
         {shengan(0); 
         flag++;
         break;
         }
         default:
         break;
      }
    }
}    
}

void shengan(bool on)
{if (on==1)
digitalWrite(NPN_2,HIGH);//运动
 else
 digitalWrite(NPN_2,LOW);//停
 }

if的 自己琢磨出来了,前面加上一个flag判断 控制。switch的还没弄出来