我有raspberry pi b,我正在尝试用C编写代码,这将允许我使用HC-SR04 Ultrasonic Ranging Module。我使用bcm2835库来控制GPIO引脚。我根据this website连接了它。这是我的尝试:
public class Testing {
public static void main(String args[]) {
ArrayList a1 = new ArrayList<>();
a1.add("a");
a1.add("e");
a1.add("f");
ArrayList a2 = new ArrayList<>();
a2.add("a");
a2.add("x");
a2.add("y");
a1.removeAll(a2);
Iterator<String> it = a1.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
存在两个问题:
我很确定我在这里遗漏了一些明显的东西,但我需要帮助找到它。
答案 0 :(得分:1)
编辑:更好的解决方案是使用GPIO中断来定时回显间隔
一个建议(必须真的是评论,但我没有足够的声誉)
使用gettimeofday()而不是time() - 它提供更高的时间分辨率。
另外,我会以这种方式更改while循环:
struct timeval start, end;
while (!bcm2835_gpio_lev(ECHO)); // Although gcc may be smart
gettimeofday(&start, NULL); // enough to do this optimisation
while (bcm2835_gpio_lev(ECHO)); // on its own
gettimeofday(&end, NULL);
double delta = (end.tv_sec - start.tv_sec) * 1000.0; // s to ms
delta += (end.tv_usec - start.tv_usec) / 1000.0; // us to ms
printf("D: %f ms\n", delta);
答案 1 :(得分:0)
这是我在博客上制作的一个教程,用于在Raspberry Pi上用C ++中的HC-SR04获取值!
您可能需要查看它:
<强> https://causeyourestuck.io/2016/04/15/hc-sr04-raspberry-pi-c/ 强>
最后它看起来像这样:
Sonar sonar;
sonar.init(trigger, echo);
while(1){
cout << "Distance is " << sonar.distance(30000) << " cm." << endl; // 30000 is a timeout in microseconds
}