极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11305|回复: 5

也上个我的小车控制,以留备用和大家探讨!

[复制链接]
发表于 2013-1-31 16:54:53 | 显示全部楼层 |阅读模式
本帖最后由 wsy0315 于 2013-2-4 21:57 编辑

刚刚入手arduino uno 和LM298N,想要做些什么,
首先上我写的代码:
  1. int EN1 = 9;
  2. int IN1 = 8;
  3. int IN2 = 7;
  4. int EN2 = 6;
  5. int IN3 = 5;
  6. int IN4 = 4;
  7. int RPPin1 = 1;
  8. int RPPin2 = 2;
  9. int val1;
  10. int val2;
  11. int val3;
  12. int val4;
  13. int key1;
  14. int key2;

  15. void setup()
  16. {
  17.     pinMode(IN1, OUTPUT);
  18.     pinMode(IN2, OUTPUT);
  19.     pinMode(IN3, OUTPUT);
  20.     pinMode(IN4, OUTPUT);
  21. }
  22. void loop()
  23. {
  24.     key1 = analogRead(RPPin1);
  25.     if  (key1 < 518)
  26.     {
  27.         digitalWrite(IN1, HIGH); //IN1(IN3)和IN2(IN4)必须相反,才能使电机转动
  28.         digitalWrite(IN2, LOW);  //改变电平方向,电机反转
  29.         digitalWrite(IN3, HIGH); //电平相同,电机停止
  30.         digitalWrite(IN4, LOW); //
  31.         val1 = analogRead(RPPin1);  //读取串口
  32.         val1 = constrain(val1, 0, 518); //范围限定
  33.         val1 = map(val1, 518, 0, 0, 1023); //映射取反
  34.     }
  35.     else
  36.     {
  37.         digitalWrite(IN1, LOW); //IN1(IN3)和IN2(IN4)必须相反,才能使电机转动
  38.         digitalWrite(IN2, HIGH);  //改变电平方向,电机反转
  39.         digitalWrite(IN3, LOW); //电平相同,电机停止
  40.         digitalWrite(IN4, HIGH); //
  41.         val1 = analogRead(RPPin1);  //读取串口
  42.         val1 = constrain(val1, 522, 1023); //范围限定
  43.         val1 = map(val1, 522, 1023, 0, 1023); //映射
  44.     }
  45.     analogWrite(EN1, val1); //PWM调速
  46.     analogWrite(EN2, val1); //PWM调速
  47.     delay(30);
  48. }
复制代码

这个是摇杆控制电机方向和调速的!等有了成品再上图,
顺便看看谁能不能帮我简化一下{:soso_e120:}
我是新手,望多指教!!!
[pre lang="arduino" line="1" file="H2_over"]int val1;  //前后摇杆
int val2;  //左右摇杆
int val11;  //PWM赋值
int val22;  //PWM赋值
int IN1 = 4;
int IN2 = 5;
int IN3 = 7;
int IN4 = 8;
int EN1 = 6;
int EN2 = 9;

void digital_11(void)  //(void)=(),调用 digital_11()
{
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
}
void digital_22()
{
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
}

void setup()
{
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
    pinMode(EN1, OUTPUT);
    pinMode(EN2, OUTPUT);
}

void loop()
{
    int val1 = analogRead(A1);
    val1 = map(val1, 0, 1023, -255, 255);
    int val2 = analogRead(A2);
    val2 = map(val2, 0, 1023, -255, 255);
    val11 = abs(val1) + val2;
    val11 = constrain(val11,0,255);
    val22 = abs(val1) - val2;
    val22 = constrain(val22,0,255);
    if (val1 > 0)  //旋转方向转换
        digital_11();
    else
        digital_22();
    analogWrite(EN1, val11);
    analogWrite(EN2, val22);
}[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2013-1-31 16:58:13 | 显示全部楼层
占位,以便以后编辑
回复 支持 反对

使用道具 举报

发表于 2013-2-1 00:07:24 | 显示全部楼层
想學習看看怎麼接線的,期待中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-4 20:56:22 | 显示全部楼层
genie 发表于 2013-2-1 00:07
想學習看看怎麼接線的,期待中。

你是要图吗?其实没什么的,很简单的,就是板上的4,5,7,8连接LM298的IN1,2,3,4.
6,9连接298的EN
摇杆连接uno的A1然后就可以了
回复 支持 反对

使用道具 举报

发表于 2013-2-5 13:14:54 | 显示全部楼层
謝謝,我學到了,來試看看。
回复 支持 反对

使用道具 举报

发表于 2013-4-16 13:41:03 | 显示全部楼层
学习了。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 20:35 , Processed in 0.043967 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表