功能实现
超声波测距控制步进电机,当超声波检测距离低于阈值距离,电机转动;反之电机则不转动。
电路连接
接线图
源代码及注释
#include 《Stepper.h》// 这里设置步进电机旋转一圈是多少步#define STEPS 100// attached to设置步进电机的步数和引脚Stepper stepper(STEPS, 8, 9, 10, 11);const int trig = 6; // 触发信号const int echo = 7; // 反馈信号// 定义变量用来存储历史读数int length=10;//阈值距离float S;void setup(){ Serial.begin(9600); // 设置电机每分钟的转速为90步 stepper.setSpeed(90); pinMode(8, OUTPUT); //设置引脚为输出引脚 pinMode(9, OUTPUT); pinMode(10,OUTPUT); pinMode(11, OUTPUT); pinMode(echo, INPUT); pinMode(trig, OUTPUT);}void loop(){ long IntervalTime=0; //定义一个时间变量 while(1){ digitalWrite(trig, 1);//置高电平 delayMicroseconds(15);//延时15us digitalWrite(trig, 0);//设为低电平 IntervalTime=pulseIn(echo, HIGH);//用自带的函数采样反馈的高电平的宽度,单位us S=IntervalTime/58.00; //使用浮点计算出距离,单位cm turntest(); S=0;IntervalTime=0;//对应的数值清零。 delay(500);//延时间隔决定采样的频率,根据实际需要变换参数 }}void stop(){ digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); delay(2000);}void turntest(){if(S》length){ Serial.print(“距离过长:”); Serial.print(S);//通过串口输出距离数值 Serial.println(“ 步进电机开始转动”); stepper.step(256);}else{ Serial.print(“距离:”); Serial.print(S);//通过串口输出距离数值 Serial.println(“ 步进电机不转动转动”); stop();}} 实验现象
超声波检测距离小于阈值距离,电机不转动。
超声波检测距离高于阈值距离,电机转动。
功能实现
超声波测距控制步进电机,当超声波检测距离低于阈值距离,电机转动;反之电机则不转动。
电路连接
接线图
源代码及注释
#include 《Stepper.h》// 这里设置步进电机旋转一圈是多少步#define STEPS 100// attached to设置步进电机的步数和引脚Stepper stepper(STEPS, 8, 9, 10, 11);const int trig = 6; // 触发信号const int echo = 7; // 反馈信号// 定义变量用来存储历史读数int length=10;//阈值距离float S;void setup(){ Serial.begin(9600); // 设置电机每分钟的转速为90步 stepper.setSpeed(90); pinMode(8, OUTPUT); //设置引脚为输出引脚 pinMode(9, OUTPUT); pinMode(10,OUTPUT); pinMode(11, OUTPUT); pinMode(echo, INPUT); pinMode(trig, OUTPUT);}void loop(){ long IntervalTime=0; //定义一个时间变量 while(1){ digitalWrite(trig, 1);//置高电平 delayMicroseconds(15);//延时15us digitalWrite(trig, 0);//设为低电平 IntervalTime=pulseIn(echo, HIGH);//用自带的函数采样反馈的高电平的宽度,单位us S=IntervalTime/58.00; //使用浮点计算出距离,单位cm turntest(); S=0;IntervalTime=0;//对应的数值清零。 delay(500);//延时间隔决定采样的频率,根据实际需要变换参数 }}void stop(){ digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); delay(2000);}void turntest(){if(S》length){ Serial.print(“距离过长:”); Serial.print(S);//通过串口输出距离数值 Serial.println(“ 步进电机开始转动”); stepper.step(256);}else{ Serial.print(“距离:”); Serial.print(S);//通过串口输出距离数值 Serial.println(“ 步进电机不转动转动”); stop();}} 实验现象
超声波检测距离小于阈值距离,电机不转动。
超声波检测距离高于阈值距离,电机转动。
举报