大佬教程收集整理的这篇文章主要介绍了使用 LDR 传感器通过 A4988 驱动电机控制步进电机,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您好,我现在正在尝试使用 LDR 传感器控制步进电机。我使用带有 A4988 电机驱动器的 NEMA 17 步进电机。当我为 LDR 模块添加代码时,在串行监视器中只显示 1 个数据而不是循环。当我使用 L298N 时,没有问题。我尝试从 serial.print 和延迟更改但仍然无法正常工作。有谁知道问题是什么?这是代码:
const int stepPin = 4;
const int dirPin = 5;
int trig_pin = 2;
int echo_pin = 3;
long echotime;
float distance;
voID setup() {
Serial.begin(9600);
pinMode(trig_pin,OUTPUT);
pinMode(echo_pin,input);
digitalWrite(trig_pin,LOW);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
}
voID loop() {
//For ultrasonic Sensor
digitalWrite(trig_pin,HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin,LOW);
echotime = pulseIn(echo_pin,HIGH);
distance= 0.0001*((float)echotime*340.0)/2.0;
Serial.print(distance);
Serial.println(" cm");
delay(3600);
//for LDR
unsigned int AnalogValue;
AnalogValue = analogRead(A2);
delayMicroseconds(10);
Serial.println(AnalogValue);
//for Stepper
digitalWrite(dirPin,HIGH);
for (int x = A2; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000);
digitalWrite(dirPin,LOW);
for (int x = A2; x > 400; x++) {
digitalWrite(stepPin,HIGH);
for (int x = A2; x = 400; x++) {
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000);
}
for (int x = A2; x = 400; x++)
是一个无限循环。
x = 400 计算结果为 400,这是一个真值,因此循环将永远运行。 我认为您应该重新审视 C++ 控制结构的基础知识。
另外,你为什么从 A2
开始?那是一个密码。对我来说没有意义。
您可能想使用 AnalogValue
for (int x = A2; x > 400; x++)
是另一个无意义的循环。它只会在 A2
大于 400 时运行,然后它将永远运行。但 A2 不太可能大于 400。因此您也可以删除该循环。
以上是大佬教程为你收集整理的使用 LDR 传感器通过 A4988 驱动电机控制步进电机全部内容,希望文章能够帮你解决使用 LDR 传感器通过 A4988 驱动电机控制步进电机所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。