|
|
发表于 2013-2-19 21:13:30
|
显示全部楼层
本帖最后由 wsy0315 于 2013-2-19 21:18 编辑
我给你个我编写的例子,你看看
我是利用调速实现的,
直接上代码吧:
- int val1;
- int val2;
- int val11;
- int val22;
- int EN1 = 6;
- int EN2 = 9;
- void motor(char IN1, char IN2, char EN, char state, int val)
- {
- pinMode(IN1, OUTPUT);
- pinMode(IN2, OUTPUT);
- pinMode(EN, OUTPUT);
- if(state == 1)
- {
- analogWrite(EN, val);
- digitalWrite(IN1, 0);
- digitalWrite(IN2, 1);
- }
- else if(state == 2)
- {
- analogWrite(EN, val);
- digitalWrite(IN1, 1);
- digitalWrite(IN2, 0);
- }
- else if(state == 0)
- {
- analogWrite(EN, 0);
- digitalWrite(IN1, 0);
- digitalWrite(IN2, 0);
- }
- }
- void setup()
- {
- Serial.begin(9600);
- }
- void loop()
- {
- int val11 = analogRead(A1);
- val11 = map(val11, 0, 1023, -254, 256); //适配Y轴,应该是255
- int val22 = analogRead(A2);
- val22 = map(val22, 0, 1023, -249, 261); //适配x轴
- val1 = abs(val11) + val22;
- val1 = constrain(val1, 0, 255);
- val2 = abs(val11) - val22;
- val2 = constrain(val2, 0, 255);
- if (val1 > 4) //车轮方向转换
- {
- motor(4, 5, 6, 1, val1); //左轮电机
- motor(7, 8, 9, 1, val2); //右轮电机
- }
- else if (val1 < 4)
- {
- motor(4, 5, 6, 2, val1);
- motor(7, 8, 9, 2, val2);
- }
- else
- {
- motor(4, 5, 6, 0, val1); //左轮电机12,13,6
- motor(7, 8, 9, 0, val2); //右轮电机7,8,5
- }
- analogWrite(EN1, val1); //车轮PWM
- analogWrite(EN2, val2);
- }
复制代码 |
|