这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【dajian-转】仿照书籍编写了一个程序

共5条 1/1 1 跳转至

【dajian-转】仿照书籍编写了一个程序

工程师
2014-11-19 22:02:08     打赏

群里看到有人上传了个文件。。。。

然后我就分享了。。。。。大家可以看看原作者鬼斧神工的画图

以下是正文

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

今天花了几个小时仿照书籍编写了一个程序,程序的功能是控制电机正反转 和速度,用到的电子元器件 在电路图上看

电路图是我根据用的硬件来画的,我实际用的是下面这个



在来看看代码吧,代码如下。

#define switchPin 2    //控制开关1 (引脚2)
#define switchPin2 3    //控制开关2 (引脚3)
#define motorPin1 5    //电机正转 (引脚 PWM5)
#define motorPin2 6    //电机反转 (引脚 PWM6)
#define ledPin 7    //报警灯 (引脚7)
#define potPin 0    //电位器 (模拟引脚0)
int pinValue;    //存储电位器的值

/************** setup函数 只执行一次 *****************/
void setup()
{
    pinMode(switchPin,INPUT);    //开关1输入模式
    pinMode(switchPin2,INPUT);    //开关2输入模式
    pinMode(motorPin1,OUTPUT);    //电机正转输出模式
    pinMode(motorPin2,OUTPUT);    //电机反转输出模式
    pinMode(ledPin,OUTPUT);     // 报警LED输出模式
}

/************** loop函数 反复循环执行 *************/
void loop()
{
pinValue = analogRead(potPin);    //获取引脚的模拟量值,将其保存在pinValue中
pinValue = map(pinValue,0,1023,0,255);    //将pinValue的值除以4以对应到0至255的范围内

/************** 下面的if控制电机正转 ************/
if (digitalRead(switchPin))    //如果开关1按下
{
    analogWrite(motorPin1,pinValue);    //电机正转(电压器调节速度)
}

    else    //如果开关松开
    {
        analogWrite(motorPin1,LOW);    //电机停止
    }
    
/************** 下面的if控制电机反转 *****************/
if (digitalRead(switchPin2))
{
    analogWrite(motorPin2,pinValue);
}

    else
    {
        analogWrite(motorPin2,LOW);
}

/************* 下面的if控制报警灯 ************/
if(digitalRead(switchPin) && digitalRead(switchPin2))    //如果两个开关按钮同时按下
{    
      analogWrite(motorPin1,LOW);
      analogWrite(motorPin2,LOW);
      analogWrite(potPin,LOW);
      digitalWrite(ledPin,HIGH);
}
    else
    {
      digitalWrite(ledPin,LOW);
    }
}

 




到这里就结束了,我不做太多的解释,大家都能看清楚。

个程序还有一个不足之处就后面的代码。


 /************* 下面的if控制报警灯 ************/
if(digitalRead(switchPin) && digitalRead(switchPin2))    //如果两个开关按钮同时按下
{    
      analogWrite(motorPin1,LOW);  //关闭正转
      analogWrite(motorPin2,LOW);	 //关闭反转
      analogWrite(potPin,LOW);    //关闭电位器控制
      digitalWrite(ledPin,HIGH);    开报警灯
}
    else
    {
      digitalWrite(ledPin,LOW);     、、关闭报警灯
    }

 


问题就是:当同时按下两个按钮时 电机正反转引脚不能完全关闭,还有小电流,不知如何解决。    

    所以我就把这个程序共享出来给大家 供大家学习和参考。如果你能解决问题或比我编写的更好,别忘了也共享出来让大家也学习一下,取长补短,这样你的学习就有提高,学习的更快,更熟练。谢谢




















工程师
2014-11-19 22:02:41     打赏
2楼
来,猜猜这是什么开发板呢

高工
2014-11-19 23:06:38     打赏
3楼

纳尼

你这是在挑战广大arduino爱好者的智商啊


院士
2014-11-20 09:57:23     打赏
4楼
这是让大家猜呢,还是想和大家说点什么呢?

院士
2014-11-22 09:54:26     打赏
5楼
好强大的arduino啊

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]