接收来自传感器的输入以移动步进电机Arduino
我正试图从我的Arduino上的两个红外火焰探测器的输入端移动一个步进电机。现在,我的代码似乎理论上应该可以工作,但由于某些原因,它不能正常工作。我认为这可能只是一个简单的语法错误,但我确信Arduino正在记录串行监视器显示的来自红外传感器的信号接收来自传感器的输入以移动步进电机Arduino,arduino,Arduino,我正试图从我的Arduino上的两个红外火焰探测器的输入端移动一个步进电机。现在,我的代码似乎理论上应该可以工作,但由于某些原因,它不能正常工作。我认为这可能只是一个简单的语法错误,但我确信Arduino正在记录串行监视器显示的来自红外传感器的信号 #include <Stepper.h> //Starts the stepper library Stepper RoboticArm(4096, 5, 6, 7, 8); //Sets the number of steps
#include <Stepper.h> //Starts the stepper library
Stepper RoboticArm(4096, 5, 6, 7, 8); //Sets the number of steps and the interface connection ports
int IRDetector1Output = 10; //IR Detector 1 set to Digital Pin 3
int IRDetector2Output = 11; //IR Detector 2 set to Digital Pin 4
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //Starting the monitor for computer telemetry scripts
pinMode(IRDetector1Output, INPUT);
pinMode(IRDetector2Output, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(IRDetector1Output) == HIGH && digitalRead (IRDetector2Output) == HIGH); //When both IR detectors show vehicle centered, do not move tracking mount
Serial.print("TRACKING ASCENT: CENTER");
{
RoboticArm.setSpeed(0); //RPM set to zero on stepper motor
RoboticArm.step(4096); //Number of steps in stepper motor
Serial.print("TRACKING ASCENT: CENTER");
}
if (digitalRead(IRDetector1Output) == HIGH);
{
RoboticArm.setSpeed(3); //RPM set to 3 upwards to track vehicle
RoboticArm.step(4096); //Number of steps in stepper motor
Serial.print("TRACKING ASCENT: UPWARDS COURSE CORRECTION");
}
if (digitalRead(IRDetector1Output) == LOW);
{
RoboticArm.setSpeed(-3); //RPM set to -3 downwards to track vehicle
RoboticArm.step(4096); //Number of steps in stepper motor
Serial.print("TRACKING ASCENT: DOWNWARDS COURSE CORRECTION");
}
}
#include//启动步进程序库
步进机器人手臂(4096,5,6,7,8)//设置步骤数和接口连接端口
int IrDetector1输出=10//红外探测器1设置为数字引脚3
int IrDetector2输出=11//红外探测器2设置为数字引脚4
无效设置(){
//将安装代码放在此处,以便运行一次:
Serial.begin(9600);//为计算机遥测脚本启动监视器
引脚模式(IrDetector1输出、输入);
引脚模式(IrDetector2输出、输入);
}
void循环(){
//将主代码放在此处,以便重复运行:
如果(digitalRead(IrDetector1输出)=高&&digitalRead(IrDetector2输出)=高);//当两个红外探测器显示车辆居中时,请勿移动跟踪支架
串行打印(“跟踪上升:中心”);
{
RoboticArm.setSpeed(0);//步进电机的转速设置为零
机器人手臂。步骤(4096);//步进电机的步数
串行打印(“跟踪上升:中心”);
}
如果(数字读取(IrDetector1输出)=高);
{
机器人手臂。设置速度(3);//将转速设置为3向上以跟踪车辆
机器人手臂。步骤(4096);//步进电机的步数
串行打印(“跟踪上升:向上航向修正”);
}
if(digitalRead(IrDetector1输出)=低电平);
{
机器人手臂。设置速度(-3);//转速设置为-3向下跟踪车辆
机器人手臂。步骤(4096);//步进电机的步数
串行打印(“跟踪上升:向下航向修正”);
}
}
虽然我不熟悉步进电机,但以下位置似乎存在语法错误:
我想你是有意这么做的:
(您说过要在花括号外写入串行端口。)是的,我看到了这个错误,我想这是我复制和粘贴它时的错误,格式被弄乱了。我确实解决了这个问题并检查了原始代码,但它仍然无法正确注册。if语句末尾的分号表示if中没有执行任何操作。尝试删除它们。我确实尝试过,但仍然遇到相同的问题。探测器确实在采集火焰,但Arduino只是没有发挥应有的功能。我做了检查,以确保电机与驱动器一起正常工作,接线正确。
if (digitalRead(IRDetector1Output) == HIGH && digitalRead (IRDetector2Output) == HIGH); //When both IR detectors show vehicle centered, do not move tracking mount
Serial.print("TRACKING ASCENT: CENTER");
{
RoboticArm.setSpeed(0); //RPM set to zero on stepper motor
RoboticArm.step(4096); //Number of steps in stepper motor
Serial.print("TRACKING ASCENT: CENTER");
}
if (digitalRead(IRDetector1Output) == HIGH && digitalRead(IRDetector2Output) == HIGH) //When both IR detectors show vehicle centered, do not move tracking mount
{
Serial.print("TRACKING ASCENT: CENTER");
RoboticArm.setSpeed(0); //RPM set to zero on stepper motor
RoboticArm.step(4096); //Number of steps in stepper motor
Serial.print("TRACKING ASCENT: CENTER");
}