概述

演示直流电机的控制。

示例程序

PWM控制直流电机

略过控制电机转停的示例啦,有需要就把这里的 PWM 换成数字口输出 HIGH 或 LOW 就行了。

// ----------------------------------------------------------------------------
// pwmMotor.ino
//
// Created 2015-06-11
// By seesea <seesea2517#gmail#com>
//
// PWM 控制直流电机转速
// 其实就是之前的 PWM 控制 LED 的程序,完全一样,只是硬件上加上一个三极管用来驱动电机而已
//
// 11 脚接 NPN 三极管的基极,三极管集电极接电机一脚,电机另一脚接外接电源正极,三极管发射极接外接电源负,arduino 的 GND 也接到三极管发射极
// ---------------------------------------------------------------------------- const unsigned char motor = ;
const unsigned char sensor = A0; void setup()
{
pinMode(motor, OUTPUT);
pinMode(sensor, INPUT);
} void loop()
{
// 用 map 函数进行范围的映射
analogWrite(motor, map(analogRead(sensor), , , , ));
}

上个接线图和效果图:

H桥控制直流电机

// ----------------------------------------------------------------------------
// hBridgeMotor.ino
//
// Created 2015-06-11
// By seesea <seesea2517#gmail#com>
//
// H 桥控制直流电机演示
// 通过 H 桥控制直流电机的转动方向
// 先顺时针转一秒,再逆时针转一秒,停一秒,重复前述动作
//
// 根据 H 桥实际的电路进行接线。手头没有现成的芯片,用了四个三极管搭的粗糙的 H 桥原型来做的实验
// ---------------------------------------------------------------------------- const unsigned char pinMotorCW = ; // 接控制电机顺时针转的 H 桥引脚
const unsigned char pinMotorCCW = ; // 接控制电机逆时针转的 H 桥引脚 // 电机停转
void motorStop()
{
digitalWrite(pinMotorCW, LOW);
digitalWrite(pinMotorCCW, LOW);
} // 电机顺时针转
void motorCW()
{
digitalWrite(pinMotorCW, HIGH);
digitalWrite(pinMotorCCW, LOW);
} // 电机逆时针转
void motorCCW()
{
digitalWrite(pinMotorCW, LOW);
digitalWrite(pinMotorCCW, HIGH);
} void setup()
{
pinMode(pinMotorCW, OUTPUT);
pinMode(pinMotorCCW, OUTPUT);
} void loop()
{
motorCW();
delay(); motorCCW();
delay(); motorStop();
delay();
}

手工搭的 H 桥,太乱了就看个效果吧,建议直接用现成的芯片。

接了红绿两个 LED 用来直观的看 PWM 和 方向:

PWM + H 桥控制直流电机

同时控制直流电机的方向及转速

// ----------------------------------------------------------------------------
// pwmHBridgeMotor.ino
//
// Created 2015-06-11
// By seesea <seesea2517#gmail#com>
//
// PWM 通过 H 桥控制直流电机
// 既控制电机的转速,也控制电机的方向
// 控制电机顺时针逐渐转快,再逐渐转慢,然后逆时针由慢转快再转慢,又回到顺时针的转动循环
//
// 根据 H 桥实际的电路进行接线。手头没有现成的芯片,用了四个三极管搭的粗糙的 H 桥原型来做的实验
// ---------------------------------------------------------------------------- const unsigned char pinMotorCW = ; // 接控制电机顺时针转的 H 桥引脚
const unsigned char pinMotorCCW = ; // 接控制电机逆时针转的 H 桥引脚 // 电机停转
void motorStop()
{
digitalWrite(pinMotorCW, LOW);
digitalWrite(pinMotorCCW, LOW);
} // 电机以参数设定的 pwm 值顺时针转
void motorCW(unsigned char pwm)
{
analogWrite(pinMotorCW, pwm);
digitalWrite(pinMotorCCW, LOW);
} // 电机以参数设定的 pwm 值逆时针转
void motorCCW(unsigned char pwm)
{
digitalWrite(pinMotorCW, LOW);
analogWrite(pinMotorCCW, pwm);
} void setup()
{
pinMode(pinMotorCW, OUTPUT);
pinMode(pinMotorCCW, OUTPUT);
} void loop()
{
unsigned char i; // 顺时针由慢到快
for (i = ; i < ; ++i)
{
motorCW(i);
delay();
} // 顺时针由快到慢
for (i = ; i > ; --i)
{
motorCW(i);
delay();
} // 逆时针由慢到快
for (i = ; i < ; ++i)
{
motorCCW(i);
delay();
} // 逆时针由快到慢
for (i = ; i > ; --i)
{
motorCCW(i);
delay();
}
}

用三极管搭的简陋 H 桥就看个效果啦,建议直接用现成的芯片。

接了红绿两个 LED 用来直观的看 PWM 和 方向:

Arduino 入门程序示例之直流电机(2015-06-15)的更多相关文章

  1. Arduino 入门程序示例之一个 LED(2015-06-11)

    前言 答应了群主写一些示例程序,一直拖延拖延拖延唉.主要还是害怕在各大高手面前班门弄斧……(这也算是给拖延症找一个美好的理由吧),这几天终于下决心要写出来了,各位高手拍砖敬请轻拍啊. 示例程序 首先是 ...

  2. Arduino 入门程序示例之一排 LED(2015-06-11)

    概述 最简单的一个 LED 的实验之后,自然是增加几个 LED,咱排成一排来玩吧.最后,再把一排的 LED 排成一个 8 字来玩——七段数码管. 示例程序 流水灯 第一个出场的肯定是经典的流水灯,也叫 ...

  3. Arduino 入门程序示例之一片 LED(2015-06-11)

    概述 从点到线,从线到面.现在开始要来一片的 LED 了,一大波的 LED 正在到来! 示例程序 因为手头没有现成的模块,手头只有 595,所以这里每一个示例程序都是使用 74HC595 扩展 IO ...

  4. 06.Lucen入门程序-Field

    需求: 实现一个歌词搜索系统,通过关键字搜索,凡是文件名或文件内容包括关键字的文件都要找出来. 注意:该入门程序只对文本文件(.txt)搜索. Lucene中包含两个重要的类: IndexWriter ...

  5. Arduino入门学习

    一直听到许多做物联网.智能家居的控制器使用的是Arduino,从师兄那里拿到了一块Arduino开发板,进行了一下午的学习,感觉这个适合小孩子们玩:) 废话少说,总结一下,便于以后可能会用得到.我主要 ...

  6. struts2入门程序

    struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...

  7. ssm整合快速入门程序(一)

    整合基础说明 spring 是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Jav ...

  8. TensorFlow从入门到实战资料汇总 2017-02-02 06:08 | 数据派

    TensorFlow从入门到实战资料汇总 2017-02-02 06:08 | 数据派 来源:DataCastle数据城堡 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学 ...

  9. 小程序-demo:小程序示例-page/component2

    ylbtech-小程序-demo:小程序示例-page/component2 以下将展示小程序官方组件能力,组件样式仅供参考,开发者可根据自身需求自定义组件样式,具体属性参数详见小程序开发文档. 1. ...

随机推荐

  1. word中创建文本框

    word中创建文本框         在插入中点击"文本框"选项卡,例如以下图所看到的:        手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...

  2. POJ 3228Gold Transportation(二分+最大流)

    题目地址:POJ3288 这个题跟之前的一道题混了,感觉是一样的,所以连想都没怎么想就拆点然后求最短路然后二分求最大流了.结果连例子都只是,还一直以为又是哪里手残了..结果看了看例子,手算也确实不正确 ...

  3. 微信二维码扫描下载APK

    前几天给客户制作的app需要上线,生成二维码扫描进行下载,把生成好的apk挂在服务器端,将地址复制下来,通过草料二维码(http://cli.im/)生成一个二维码 也许你会看到有个app的选项,为什 ...

  4. GDB调试之暂停

    暂停机制: 有3种方式可以通知GDB暂停程序的执行. a.断点: 通知GDB在程序中的特定位置暂停执行: b.监视点:通知GDB当特定内存位置(或者涉及一个或多个位置的表达式)的值发生变化时暂停执行: ...

  5. IOS中的自动布局

    Autolayout是一种“自动布局”技术,专门用来布局UI界面 Autolayout能很轻松地解决屏幕适配问题 Autolayout的两条核心概念:   >1 参照:通过参照其他控件或父控件来 ...

  6. runtime的概念,message send如果寻找不到相应的对象,如何进行后续处理

    运行时刻是指一个程序在运行(或者在被执行)的状态.也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻.在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库”. ...

  7. CheckBox控件实现选项的选中

    1:设置控件属性 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  8. new[] class deconstructor

    Class class(); Class *class1=new class; class1=&class; delete class1;   // Assert 指针指向的是一个栈中的对象, ...

  9. 分布式session

    前端用户请求经过随机分发之后,可能会命中后端任意的Web Server,并且 Web Server 也可能会因为各种不确定的原因宕机.在这种情况下,session 是很难在集群间同步的,而通过将ses ...

  10. 设计模式值六大原则——开闭原则(OCP)

    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...