Arduino常用使用模块代码接线图总结(如超声波、舵机、oled等)


欢迎大家提示我,我再继续补充,另外淘宝购买的店铺如果大家感兴趣我也贴出来

一、超声波传感器

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");
}

最后声明,有的模块图片来源百度,有的来源软件自身,接线图是自己用两个软件绘制的。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值