新手求助 程式碼的優化-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4048|回复: 1

[已解决] 新手求助 程式碼的優化

[复制链接]
发表于 2014-3-11 22:47 | 显示全部楼层 |阅读模式
我想要做到按一下就會亮起來,再按就會關掉LED,如些類推,,可是這方法太暴力了,所以想問問有更好的方法嗎
c++沒學好後悔死了......

int PIRSensor = 7;
int ledPin = 13;
int sensorValue = 0;
int ledState = 0;
void setup(){
  Serial.begin(9600);
  pinMode(PIRSensor, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop(){
  sensorValue= digitalRead(PIRSensor);
  Serial.println(sensorValue);



  if(sensorValue == 1 && count%4==0){
    digitalWrite(ledPin, HIGH);
    count+=;
  }
   if(sensorValue == 0 && count%4==1){
    digitalWrite(ledPin, HIGH);
    count++;
  }
    if(sensorValue == 1 && count%4==2){
    digitalWrite(ledPin, LOW);
    count++;
    }
    if(sensorValue == 0 && count%4==3){
    digitalWrite(ledPin, LOW);
    count++;

}

    }
}


发表于 2014-3-12 16:42 | 显示全部楼层
[mw_shl_code=cpp,true]int PIRSensor = 7;
int ledPin = 13;
int sensorValue = 0;
int ledState = 0;
void setup(){
    Serial.begin(9600);
    pinMode(PIRSensor, INPUT);
    pinMode(ledPin, OUTPUT);
}

void loop(){
  sensorValue= digitalRead(PIRSensor);
  Serial.println(sensorValue);

  if(sensorValue == 1 ){    delay(50);//去抖
    if(sensorValue == 1 ){
      count=1-count;    }
  }
   if(count==1){
    digitalWrite(ledPin, HIGH);
  }else{
    digitalWrite(ledPin, LOW);
  }
}[/mw_shl_code]
其实还可以简化,不过可能影响可读性,就算了




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-4 17:38 , Processed in 0.110628 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表