按下正转按钮,电机正转,正转指示灯亮。按下反转按钮,电机反转,反转指示灯亮。按下停止按钮,电机停。
Aduino程序如下:
int Foreward_key=2;//正转按钮
int Reverse_key=3;//反转按钮
int Stop_key=4;//停止按钮
int Foreward_led=5;//正转指示灯
int Reverse_led=6;//反转指示灯
int Stop_led=7;//停止指示灯
int pinI1=8;//定义电机正转接口
int pinI2=9;//定义电机反转接口
int speedpin=11;//定义EA(PWM调速)接口
void setup()
{
pinMode(Foreward_key,INPUT);
pinMode(Reverse_key,INPUT);
pinMode(Stop_key,INPUT);
pinMode(Foreward_led,OUTPUT);
pinMode(Reverse_led,OUTPUT);
pinMode(Stop_led,OUTPUT);
pinMode(pinI1,OUTPUT);//定义该接口为输出接口
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
digitalWrite(Foreward_led,HIGH);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,HIGH);
}
void loop()
{
if(digitalRead(Foreward_key)==HIGH)
{
while(digitalRead(Foreward_key)==HIGH);
digitalWrite(Foreward_led,LOW);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,HIGH);
digitalWrite(pinI1,LOW);//使直流电机顺时针转
digitalWrite(pinI2,HIGH);
analogWrite(speedpin,100);
}
if(digitalRead(Reverse_key)==HIGH)
{
while(digitalRead(Reverse_key)==HIGH);
digitalWrite(Foreward_led,HIGH);
digitalWrite(Reverse_led,LOW);
digitalWrite(Stop_led,HIGH);
digitalWrite(pinI1,HIGH);//使直流电机逆时针转
digitalWrite(pinI2,LOW);
analogWrite(speedpin,100);
}
if(digitalRead(Stop_key)==HIGH)
{
while(digitalRead(Stop_key)==HIGH);
digitalWrite(Foreward_led,HIGH);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,LOW);
digitalWrite(pinI1,LOW);//使直流电机逆时针转
digitalWrite(pinI2,LOW);
analogWrite(speedpin,100);
}
}
例子RAR压缩包可下载
如果看不懂Arduino里的函数不要紧,请看
Arduino公司函数介绍页面
http://arduino.cc/en/Reference/HomePage
我的Arduino智能小车套件从淘宝买回来了,所以Arduino和proteus结合的例子就没时间写了。
我在采用Arduino编程和Proteus仿真时,发现了或者遇到了两个问题。
1、Arduino里面的serial串行通信函数,在proteus仿真不了,所以不能在纯软件环境下,做上下位机串行通信实验了。
2、Arduino里面的delay函数,在proteus延时时间比delay函数设定的时间长,但在真的Arduino控制器里的delay函数延时时间肯定是精确的。
我的Arduino智能小车套件的图片:
我要根据我买来的Arduino智能小车,讲讲labview和真的Arduino控制器和其电子积木互动的例子。
文章评论(0条评论)
登录后参与讨论