gpt4 book ai didi

c++ - 连接传感器后,Arduino 驱动的伺服电机停止工作

转载 作者:行者123 更新时间:2023-11-28 06:37:55 26 4
gpt4 key购买 nike

我正在尝试为我的机器人制作某种眼睛。它会使用一个 Helm 机来旋转超声波仪表HC-SR04,但是当我添加代码来驱动这个东西时, Helm 机停止工作。为什么会这样?我使用的是 Arduino 1.5.6 和 Arduino Uno R3。

代码:

#include <Servo.h> 

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 90; // variable to store the servo position
int x = 0;
int y = 0;
int hcsr04[4] = {13,12,11,10};
float echoTime = 0;
float distance = 0;
void setup()
{
myservo.attach(3); // attaches the servo on pin 9 to the servo object
Serial.begin(9600);
myservo.write(pos);
for(int i = 0; i < 4; i++)
{
pinMode(hcsr04[i], OUTPUT);
}
pinMode(hcsr04[1], INPUT);
}

void loop()
{
x = analogRead(A0);
y = analogRead(A1);

if(y < 100)
{
pos += 1;
if(pos >= 175)
{
pos -= 10;
}
myservo.write(pos);
delay(10);
}
if(y > 900)
{
pos -= 1;
if(pos <= 5)
{
pos += 10;
}
myservo.write(pos);
delay(10);
}
digitalWrite(hcsr04[0], LOW);
delayMicroseconds(2);
digitalWrite(hcsr04[0], HIGH );
delayMicroseconds(10);
digitalWrite(hcsr04[0], LOW);
echoTime = pulseIn(hcsr04[1], HIGH);
distance = echoTime / 58;
Serial.println(pos);
}

最佳答案

我认为 pulseIn() 函数使用与 Servo 相同的计时器...您可以使用 attachInterrupt() 和减去 time() - 回调中的 oldTime,然后将 time() 分配给 oldTime

示例:http://arduino.cc/en/Reference/attachInterrupt

关于c++ - 连接传感器后,Arduino 驱动的伺服电机停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26490756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com