我正在制作一个必须用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;
}
}
答案 0 :(得分:0)
您可以尝试使用平滑来读取传感器的运行平均值。这样你就可以得到一个平滑的平均值而不是一个立即值,所以如果你保持窗口足够长的话,一个短的尖峰(就像一只手)不会改变这个值。
有tutorial on the arduino website解释如何执行此操作。基本上,您存储多个先前的值并跟踪平均值。