Arduino本身的接口并不多如何实现更多的功能,以及各种模块如何使用?从本节开始进行介绍,补补档。
二、各类模块
1、HC595(可用于拓展接口)
Vin接5v正极, GND负极
OE接负极启动
MR接正极保持信号,接负极重置所有接口
“资料”为即将放入“大平台”的数据, 活塞为高点位时将“资料推入大平台”,从“0”号口开始
”大平台“为高电位时将数据推入串口
void loop() {
digitalWrite(big,LOW); //大平台降低
for(i=0;i<8;i++){input(a[i]);} //循环放入数据
digitalWrite(big,HIGH); } //大平台升高
void input(int input){
digitalWrite(push,LOW); //活塞后退
digitalWrite(datain,input); //输入数据
digitalWrite(push,HIGH);} //活塞升高
2、L293D电机驱动芯片
1-启用1,2(+ 5V)
2-输入1(信号1)
3-输出1(电机1引脚1)
4-接地(0v)
5-接地(0V)
6-输出2(电机1的引脚2)
7 -输入2(信号2)
8-VCC2 {+ 9v(另一只电池的+ ve端子,而不是连接到arduino的电池或等效电池)}
9-启用3,4(+ 5V ) 10-输入3
11-输出3(电机2的引脚2) 12-接地(0V)
13 -接地(0v) 14-输出4(电机2的引脚2)
15-输入4 16-VCC1(+ 5V)
可以通过模拟信号输入调速控制直流电机的速度,通过同侧信号输入控制电机的正反转,两个信号口必须为不同的电平,一侧高一侧低。启动接口可以使用模拟信号输入进行调速,VCC接口为电机主供电接口。调速范围(0,255)
int S,OUT;
int sensor = A1; //定义模拟信号输入口
void setup() {
Serial.begin(9600);
pinMode(8,OUTPUT); //信号输出控制方向
pinMode(9,OUTPUT); //信号输出控制方向
pinMode(10,OUTPUT); //直流电机使用模拟信号输出控制速度
digitalWrite(8,HIGH); //输出方向
digitalWrite(9,LOW);
}
void loop() {
S = analogRead(A1);
OUT= map(S,0,1023,0,255);
analogWrite(10,OUT);
}
3、L293D电机驱动板
此处使用AFMotor函数库
数字引脚2和13可用。
下面的引脚只有在下面提到的直流或者步进电机工作时才会被用到
数字引脚11: 1号直流电机或者1号步进电机
数字引脚3: 2号直流电机或者1号步进电机
数字引脚5: 3号直流电机或者2号步进电机
数字引脚6:4号直流电机或者2号步进电机
下面的引脚只有在下面的直流或者步进电机工作时才会被用到
数字信号4,7,8,和12通过74hc595(serial-to-parallel)来驱动直流或者步进电机
下面的引脚只有在舵机工作时才会被用到
数字信号9:1号舵机
数字信号10: 2号舵机
#include <AFMotor.h>//导入函数库
AF_DCMotor m1(1,MOTOR12_64KHZ);
AF_DCMotor m2(2,MOTOR12_64KHZ);
AF_DCMotor m3(3,MOTOR12_64KHZ);
AF_DCMotor m4(4,MOTOR12_64KHZ);
//设置控制频率MOTOR12_64KHZ,MOTOR12_8KHZ,MOTOR12_1KHZ
void setup(){
}
void loop(){
motor.setSpeed(255);//设置速度
motor.run(FORWARD); //向前
motor.run(BACKWARD);//向后
motor.run(RELEASE);//停止
}