基于arduino的超声波控制的ws2812灯

在这里插入图片描述

接线:

Trig接4
Echo接3
WS2812彩灯条接13

在这里插入图片描述
在这里插入图片描述


#include <Wire.h>
#include <Adafruit_NeoPixel.h>

volatile float juli;

Adafruit_NeoPixel  rgb_display_13(8);
float checkdistance_4_3() {
  digitalWrite(4, LOW);
  delayMicroseconds(2);
  digitalWrite(4, HIGH);
  delayMicroseconds(10);
  digitalWrite(4, LOW);
  float distance = pulseIn(3, HIGH) / 58.00;
  delay(10);
  return distance;
}

void setup(){
  rgb_display_13.begin();
  rgb_display_13.setPin(13);
  Serial.begin(9600);
  juli = 0;
  pinMode(4, OUTPUT);
  pinMode(3, INPUT);
}

void loop(){
  Serial.println(checkdistance_4_3());
  juli = checkdistance_4_3();
  if (juli <= 10 && juli >= 0) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 51,204,0);
      rgb_display_13.show();
    }

  }
  if (juli <= 20 && juli >= 10) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 51,51,255);
      rgb_display_13.show();
    }

  }
  if (juli <= 30 && juli >= 20) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 51,204,255);
      rgb_display_13.show();
    }

  }
  if (juli <= 40 && juli >= 30) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 255,204,0);
      rgb_display_13.show();
    }

  }
  if (juli <= 50 && juli >= 40) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 204,51,204);
      rgb_display_13.show();
    }

  }
  if (juli <= 60 && juli >= 50) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 255,0,0);
      rgb_display_13.show();
    }

  }
  if (juli >= 70) {
    for (int i = 1; i <= 8; i = i + (1)) {
      rgb_display_13.setPixelColor(i-1, 0,0,0);
      rgb_display_13.show();
    }

  }
  delay(50);

}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以使用Arduino超声波传感器实现控制灯带的功能。具体实现步骤如下: 1. 连接硬件:将超声波传感器连接到Arduino的数字引脚,并将灯带连接到Arduino的PWM引脚。 2. 编写程序:使用Arduino IDE编写程序,首先需要定义超声波传感器和灯带所连接的引脚。然后,使用超声波传感器获取距离值,并根据距离值控制灯带的颜色。 3. 实现控制逻辑:根据距离值确定灯带的颜色,可以使用if语句实现不同距离范围对应不同颜色的控制逻辑。 4. 调试与测试:完成程序编写后,上传程序到Arduino板,测试超声波传感器和灯带是否正常工作,调试程序中可能存在的问题。 示例代码如下: ```C++ #define trigPin 9 #define echoPin 10 #define redPin 5 #define greenPin 6 #define bluePin 3 void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); Serial.begin(9600); } 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.034 / 2; Serial.print("Distance: "); Serial.println(distance); if (distance < 30) { analogWrite(redPin, 255); analogWrite(greenPin, 0); analogWrite(bluePin, 0); } else if (distance < 60) { analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 0); } else { analogWrite(redPin, 0); analogWrite(greenPin, 0); analogWrite(bluePin, 255); } delay(500); } ``` 注意:具体硬件连接方式和引脚定义可能需要根据所使用的具体硬件进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创客阿蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值