|
利用L298N电机驱动模块、智能车测速模块、Arduino UNO R3控制、7.4V锂电池供电(一节3.7V,共两节)以及两个直流减速电机(香蕉电机),输入代码后,仅有电机转动,请求各路解答……
- #include <MsTimer2.h>
- #define Value 1.02101761 //计算周长的常量
-
- //volatile int state = HIGH;
-
- int u_left = 2;//定义U型测速端口
- int u_right = 3;
-
- int IN1=4;
- int IN2=5;
- int ENA=10;
- int IN3=6;
- int IN4=7;
- int ENB=11;
-
- int r_wheel = 0; //记录U型测速模块的次数
- int l_wheel = 0;
- float r_velocity=0;//速度;
- float l_velocity=0;
-
- float velocity(int n)
- {
- //(n/20)轮子装的圈数,轮子直径是65mm
- //速度的计算公式应该为 (n/20)×(65×π) 即n*1.02101761
- //后面的计算得常数
- float vel =Value*(n/20)*(65*3.14159);
- return vel;
- }
- void flash()
- {//noInterrupts();
- //String s1="";
- // String s2="";
- int r,l;
- r=r_wheel;l=l_wheel;
- //noInterrupts();
- r_velocity=velocity(r);
- l_velocity=velocity(l);
- //Serial.print(r_velocity);
- // Serial.print("\0");
- // itoa (r_wheel,buffer1,10);
- //itoa (l_wheel,buffer2,10);
- //s1+=r;
- //s2+=l;
-
- Serial.print(l_velocity);
- Serial.print("mm/s(L)");
- Serial.print(" ");
- // Serial.print(l_velocity);
- // Serial.print("\0");
- Serial.print(r_velocity);
- Serial.println("mm/s(R)");
- r_wheel = 0;
- l_wheel = 0;
- // interrupts();
- }
-
-
- void setup ()
- {
- Serial.begin(9600);
-
- attachInterrupt(1,RCount, FALLING);
- attachInterrupt(0,LCount, FALLING);
-
- pinMode(IN1,OUTPUT);
- pinMode(IN2,OUTPUT);
- pinMode(IN3,OUTPUT);
- pinMode(IN4,OUTPUT);
- pinMode(ENA,OUTPUT);
- pinMode(ENB,OUTPUT);
-
- MsTimer2::set(1000, flash); // 中断设置函数,每 1s 进入一次中断
- MsTimer2::start();
-
- }
-
- void loop()
- {
- analogWrite(ENA,84);//电机1全速前进
- analogWrite(ENB,79);//电机2全速前进
- digitalWrite(IN1,LOW);
- digitalWrite(IN2,HIGH);//电机1正转
- digitalWrite(IN3,LOW);
- digitalWrite(IN4,HIGH);//电机2正转
-
- while (1)
- {
- // digitalWrite(13, state);
- }
-
- }
- void LCount()
- {
- l_wheel++;
- // state=!state;
-
- }
- void RCount()
- {
- r_wheel++;
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|