这是我在Arduino的代码。就我而言,Pyfirmata没有PulseIn函数,那么我如何才能绕过这个障碍呢?当传感器感应到物体距离它20厘米或更小时,我想打开LED
// defines pins numbers
const int trigPin = 12;
const int echoPin = 11;
int LED = 5;
// defines variables
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
pinMode (LED,OUTPUT);
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
if (distance <=20){
digitalWrite(LED,HIGH);
}
else{
digitalWrite (LED,LOW);
}
}
我遇到了同样的问题,并试图解决。我发现你的问题没有答案:D。我花了两天的时间才发现我像一只饥饿的狼一样全力以赴。 这是你需要做的
首先是一些背景故事。 PyFirmata是一个库,它充当Python和Arduino AVR之间的桥梁。这意味着为了使函数正常工作,您需要在eh反手程序中用两种语言(AVR和Python)定义它们,以便它们可以用相同的术语进行通信。 AVR中的文件是StandardFirmata.ino。Python中的文件是pyFirmata.py。从这里你可以看到更多。当程序运行时,这些文件彼此通信
一些人试图添加一个脉冲输入功能来计算与超声波传感器的距离,结果很好。要使其正常工作,您必须手动更新arduino中的standardfirmata文件和Python中的pyFirmata文件,以便在上面链接的代码中添加PULSE_。以下是步骤
您还可以在链接2中看到Firmata.h和Firmata.cpp文件。打开记事本复制粘贴他们的代码使你的桌面上有两个同名文件。去你安装arduino的地方。查找firmata文件夹并在其中查看两个文件,然后用这些新文件替换旧文件。 完成50%
打开链接#1,您将看到pyFirmata.py和util.py文件,其中添加了PULSE#u IN功能。绿色区域是代码中所做的添加。有关更多选项,请参见左侧的三点按钮选择查看文件
打开Python IDE,打开pyfirmata.py和util.py,并用新代码替换它。保存
现在,我们已经在Python和Arduino AVR平台中添加了PULSE_的代码。参见链接#1中的示例,以在函数中使用脉冲。享受
另外,我没有添加test.py文件,找不到要添加的位置和要替换的文件。如果您有错误,请尝试添加该错误。如果你发现什么,请发邮件
相关问题 更多 >
编程相关推荐