如何在读取传感器时添加时间延迟 - arduino

时间:2016-03-21 17:01:39

标签: arduino sensor milliseconds timedelay

我正在制作一个必须用LDR感应环境光的项目。这个想法是,当LDR的值低3秒时,led开启。此外,当LDR的值再次变高并且保持高电平3秒时,LED应该转为。这样我就可以避免只是一个云或一个挥动在传感器上的人立即打开LED。

我知道我可以在这里使用mills()函数,就像在没有延迟教程的闪烁中一样。但它似乎没有用......

到目前为止,这是我的代码:

public class FragBeamRec extends Fragment {

 public static FragBeamRec newInstance() {
  FragBeamRec fragment = new FragBeamRec();
  return fragment;
 }

 public FragBeamRec() {}

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {
  View rootView = inflater.inflate(R.layout.fragment_frag2, container, false);


  doYourMagicHere();

  return inflater.inflate(R.layout.fragment_frag2, container, false);
 }

 @Override
 public void onResume() {
  super.onResume();


  if (globalvar.booIstrue) {
   // what do i write here to make it back to onCreateView
   doYourMagicHere();
  }
 }
 public void doYourMagicHere() {
  globalvar.booIstrue = false;
 }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用平滑来读取传感器的运行平均值。这样你就可以得到一个平滑的平均值而不是一个立即值,所以如果你保持窗口足够长的话,一个短的尖峰(就像一只手)不会改变这个值。

tutorial on the arduino website解释如何执行此操作。基本上,您存储多个先前的值并跟踪平均值。