arduino - 用于控制电机的 Aurdino 编码
问题描述
//Motor A
const int motorpin1 = 6; // Pin 6 of L293
const int motorpin2 = 9; // Pin 3 of L293
void setup() {
pinMode(motorpin1, OUTPUT);
pinMode(motorpin2, OUTPUT);
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, LOW);
Serial.begin(9600);
}
// put your main code here, to run repeatedly:
void loop(){
if(Serial.available()>0)
{
char incomingByte = Serial.read();
Serial.println(incomingByte);
if(incomingByte=='a'){
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, LOW);
delay(200);
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, HIGH);
Serial.println("one way");
}
else if(incomingByte=='s'){
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, LOW);
delay(200);
digitalWrite(motorpin1, HIGH);
digitalWrite(motorpin2, LOW);
Serial.println("other way");
}
else{
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, LOW);
}
}
}
如果我们在串行监视器中输入 a ,电机应该朝一个方向旋转,如果我们输入 s,电机应该朝另一个方向旋转,但它没有发生,电机处于空闲状态,但我得到如下输出:
a
one way
s
other way
硬件连接没有问题。
你能帮我解决这个问题吗?在此先感谢
解决方案
逻辑上有一个小错误:
if(incomingByte=='a'){
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, HIGH);//changed to high
delay(10000);
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, LOW);//changed to low
Serial.println("one way");
}
else if(incomingByte=='s'){
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, HIGH);//changed to high
delay(2000);
digitalWrite(motorpin1, LOW);//changed to low
digitalWrite(motorpin2, LOW);
推荐阅读
- json - 如何将 JSON 结构转换为字典或结构
- c++ - 为什么指针不继承字符串文字的固定大小
- java - 如何获取 jmDNS ServiceInfo 描述字符串
- java - 如何将消息保存到领域?
- php - 如何将给定的 SQL 查询转换为 Eloquent laravel?
- c# - C# 查看用户是否在命令行中输入了文本
- selenium - 在 jenkins v2.175 中创建节点时,“通过 Java Web Start 启动从代理”选项不可用
- c - fwrite 不会复制二进制文件副本中的所有字节
- ios - 将数据保存为 UIImage,同时保留原始图像特征
- python - Asyncio 意外输出