Arduino常用使用模块代码接线图总结
欢迎大家提示我,我再继续补充,另外淘宝购买的店铺如果大家感兴趣我也贴出来
一、超声波传感器
1、接线图
2、代码
#define trigPin 10
#define echoPin 11
void setup() {
Serial.begin(9600); // 初始化串口通信
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
![请添加图片描述](https://img-blog.csdnimg.cn/direct/ad8b887b867f4a45a1be5b2ddb06d093.png)
void loop() {
long duration, distance;
// 发送超声波脉冲
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 计算超声波传回的时间
duration = pulseIn(echoPin, HIGH);
// 将时间转换为距离(单位:厘米)
distance = (duration * 0.0343) / 2;
// 打印距离到串口监视器
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000); // 等待一秒钟再次测量
}
二、舵机(180度舵机)
1、接线图
2、代码
#include <Servo.h> //加载文件库
int pos = 0;
Servo myservo;
void setup()
{
myservo.attach(9, 500, 2500); //修正脉冲宽度
}
void loop()
{
for (pos = 0; pos <= 180; pos += 1) { //pos+=1等价于pos=pos+1
myservo.write(pos);
delay(15);
}
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
}![请添加图片描述](https://img-blog.csdnimg.cn/direct/124bea711df8418d81bacc87b54b51d5.png)
三、舵机(360度舵机)
1、接线图
2、代码
#include <Servo.h> //调用舵机库
Servo myservo; // 定义舵机对象
void setup()
{
myservo.attach(9); // 设置舵机控制针脚接数字7引脚
}
void loop()
{
myservo.write(45); delay(1000); //慢速正转3秒
myservo.write(90); delay(1000); //占空比为1.5ms的PWM信号停止1秒
myservo.write(0); delay(3000); //快速正转3秒
myservo.write(90); delay(1000); //占空比为1.5ms的PWM信号停止1秒
myservo.write(135); delay(3000); //慢速反转3秒
myservo.write(90); delay(1000); //占空比为1.5ms的PWM信号停止1秒
myservo.write(180); delay(3000); //快速反转3秒
myservo.write(90); delay(1000); //占空比为1.5ms的PWM信号停止1秒
}
ps:不同的360舵机占空比可能不同
四、直流电机风扇
1、接线图
用的模块是mos管驱动模块,比继电器更好接线
2、代码
#define RELAY_PIN 3
void setup() {
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
digitalWrite(RELAY_PIN, HIGH);
delay(5000); // 风扇工作5秒钟
digitalWrite(RELAY_PIN, LOW);
delay(5000); // 风扇停止5秒钟
}
五、步进电机( 28BYJ-48步进电机)
1、接线图
2、代码
#include <Stepper.h>
// 定义步进电机的步骤数。28BYJ-48的每圈步数是2048。
#define STEPS 2048
// 初始化Stepper库实例
Stepper stepper(STEPS, 8, 10, 9, 11); // IN1, IN3, IN2, IN4
void setup() {
// 初始化串口通信,用于调试
Serial.begin(9600);
}
void loop() {
// 设置步进电机的速度
stepper.setSpeed(10); // 速度:10 RPM
Serial.println("Speed: 10 RPM, Rotating clockwise");
stepper.step(STEPS * 10); // 顺时针转动10圈
delay(2000); // 等待2秒
stepper.setSpeed(5); // 速度:5 RPM
Serial.println("Speed: 5 RPM, Rotating counterclockwise");
stepper.step(-STEPS * 5); // 逆时针转动5圈
delay(2000); // 等待2秒
stepper.setSpeed(15); // 速度:15 RPM
Serial.println("Speed: 15 RPM, Rotating clockwise");
stepper.step(STEPS * 15); // 顺时针转动15圈
delay(2000); // 等待2秒
stepper.setSpeed(7); // 速度:7 RPM
Serial.println("Speed: 7 RPM, Rotating counterclockwise");
stepper.step(-STEPS * 7); // 逆时针转动7圈
delay(2000); // 等待2秒
}
六、光敏电阻
1、接线图
2、代码
const int lightSensorPin = A0;
void setup() {
Serial.begin(9600); // 初始化串行通信
}
void loop() {
int lightValue = analogRead(lightSensorPin);
Serial.println(lightValue);
delay(1000); // 延时1秒
}
七、人体红外感应模块
1、接线图
2、代码
int irPin = 7 ;
void setup() {
pinMode(irPin, INPUT);
Serial.begin(9600);
}
void loop(){
int flag = digitalRead(irSensorPin);
if (flag == 1) { //flag == HIGH判断也可以
Serial.println("Human");
} else {
Serial.println("NO Human");
}
delay(100);
}
八、三色RGB灯(共阳共阴两种)
1、接线图
共阳:
共阴:
2、代码
代码的色谱参考https://www.rapidtables.org/zh-CN/web/color/RGB_Color.html
共阳:
// 定义RGB LED的引脚
const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
// 依次点亮红、蓝颜色
analogWrite(redPin, 255-255);
analogWrite(greenPin, 255-0);
analogWrite(bluePin, 255-0);
delay(1000);
analogWrite(redPin, 255-0);
analogWrite(greenPin, 255-255);
analogWrite(bluePin, 255-0);
delay(1000);
analogWrite(redPin, 255);
analogWrite(greenPin, 255);
analogWrite(bluePin, 255);
delay(1000);
}
共阴:
// 定义RGB LED的引脚
const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
// 依次点亮红、绿
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
delay(1000);
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
delay(1000);
}
九、薄膜压力传感器
1、接线图
2、代码
#include <Arduino.h>
int sensorPin = A0; //定义传感器的引脚
//最小量程 根据具体型号对应手册获取,单位是g,这里以RP-18.3-ST型号为例,最小量程是20g
#define PRESS_MIN 20
//最大量程 根据具体型号对应手册获取,单位是g,这里以RP-18.3-ST型号为例,最大量程是6kg
#define PRESS_MAX 6000
#define VOLTAGE_MIN 150
#define VOLTAGE_MAX 3300
void setup()
{
Serial.begin(9600); // setup serial
Serial.println("setup end!");
}
void loop()
{
long Fdata = getPressValue(sensorPin);
Serial.print("F = ");
Serial.print(Fdata);
Serial.println(" g,");
delay(300);
}
long getPressValue(int pin)
{
long PRESS_AO = 0;
int VOLTAGE_AO = 0;
int value = analogRead(pin);
Serial.print("AD = ");
Serial.print(value);
Serial.print(" ,");
VOLTAGE_AO = map(value, 0, 1023, 0, 5000);
Serial.print("V = ");
Serial.print(VOLTAGE_AO);
Serial.print(" mv,");
if(VOLTAGE_AO < VOLTAGE_MIN)
{
PRESS_AO = 0;
}
else if(VOLTAGE_AO > VOLTAGE_MAX)
{
PRESS_AO = PRESS_MAX;
}
else
{
PRESS_AO = map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX);
}
return PRESS_AO;
}
十、弯曲传感器
1、接线图
2、代码
const int FLEX_PIN = A0; // 电压采集接口
const float VCC =5.0; // 模块供电电压,ADC参考电压为V
const float R_DIV =100000.0; // 分压电阻为100KΩ
const float STRAIGHT_RESISTANCE =18655.0; // 平直时的电阻值
const float BEND_RESISTANCE =43820.0; // 90度弯曲时的电阻值
void setup()
{
Serial.begin(9600);
pinMode(FLEX_PIN, INPUT);
}
void loop()
{
int flexADC=analogRead(FLEX_PIN);
float flexV=flexADC* VCC / 1024.0;
float flexR= R_DIV * (VCC / flexV-1.0);
Serial.println("Voltage: "+String(flexV) +" V");
Serial.println("Resistance: "+String(flexR) +" ohms");
float angle = map(flexR, STRAIGHT_RESISTANCE, BEND_RESISTANCE,0, 90.0);
Serial.println("Bend: "+String(angle) +" degrees");
Serial.println();
delay(500);
}
十一、触摸传感器
1、接线图
2、代码
const int touchPin = 3; // 触摸传感器连接到D2引脚
int touchState = 0; // 读取到的触摸传感器状态
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置触摸传感器引脚为输入
pinMode(touchPin, INPUT);
// 打印开始信息
Serial.println("Touch Sensor Test Started");
}
void loop() {
// 读取触摸传感器的状态
touchState = digitalRead(touchPin);
// 如果检测到触摸
if (touchState == HIGH) {
Serial.println("Touch detected");
} else {
Serial.println("No touch detected");
}
// 等待一段时间再读取下一次数据
delay(500);
}
十二、水泵
1、接线图
2、代码
#define RELAY_PIN 3
void setup() {
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
digitalWrite(RELAY_PIN, HIGH);
delay(5000); // 水泵工作5秒钟
digitalWrite(RELAY_PIN, LOW);
delay(5000); // 水泵停止5秒钟
}
十三、气泵
1、接线图
2、代码
#include <Servo.h>
// 创建对象
Servo servo_8;
Servo servo_9;
Servo servo_10;
//8-9-10为主板引脚,8插充气泵,9插抽气泵。10插三通电磁阀。引脚可以根据自己自定义主板2-13都可以插。
// 主程序开始
void setup() {
servo_8.attach(8);
servo_9.attach(9);
servo_10.attach(10);
}
void loop() {
servo_8.write(180);
servo_9.write(0);
servo_10.write(0);
delay(8000);
//-----------------------------------------此组代码表示充气泵工作8秒(180代表开,0代表关。 delay(8000);代表运行时间为8000毫秒。需要充气时间可以按需求自定义修改。
servo_8.write(0);
servo_9.write(0);
servo_10.write(180);
delay(500);
//------------------------------------此组代码表示电磁阀启动,主要是电磁优先启动0.5秒为下一步抽气准备。此组时间基本不需要修改。
servo_8.write(0);
servo_9.write(180);
servo_10.write(180);
delay(8000);
//---------------------------------------此组代码表示抽气泵电池阀工作8秒,也就是抽气8秒(时间可以根据自己需求修改)。
servo_8.write(0);
servo_9.write(0);
servo_10.write(0);
//------------------------------------全部结束。
}
十四、加热片
1、接线图
2、代码
#define RELAY_PIN 3
void setup() {
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
digitalWrite(RELAY_PIN, HIGH);
delay(5000); // 加热片工作5秒钟
digitalWrite(RELAY_PIN, LOW);
delay(5000); // 加热片停止5秒钟
}
十五、DHT11温湿度传感器
1、接线图
2、代码
在开始之前,需要在Arduino IDE中安装DHT库。可以通过“库管理器”安装Adafruit DHT库
#include "DHT.h"
#define DHTPIN 2 // 定义DHT11传感器的连接引脚
#define DHTTYPE DHT11 // 定义传感器类型为DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// 初始化串口通信
Serial.begin(9600);
Serial.println("DHT11 test!");
// 初始化DHT传感器
dht.begin();
}
void loop() {
// 等待传感器稳定
delay(2000);
// 读取湿度值
float h = dht.readHumidity();
// 读取温度值(摄氏度)
float t = dht.readTemperature();
// 读取温度值(华氏度)
float f = dht.readTemperature(true);
// 检查是否读取失败
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// 计算热指数(摄氏度)
float hif = dht.computeHeatIndex(f, h);
// 计算热指数(华氏度)
float hic = dht.computeHeatIndex(t, h, false);
// 输出读取到的值
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
最后声明,有的模块图片来源百度,有的来源软件自身,接线图是自己用两个软件绘制的。