Arduino 超声波测距+OLED+RGB

图片发自App

1-使用元件:

  • 0.96寸 12864 I2C OLED 128x64规格
  • HC-SR04-P超声波测距模块
  • RGB 模块
  • ARDUINO UNO
  • 面包板
  • 跳线

2-实现功能

1、通过超声波测距模块进行距离测量
2、将测量的结果显示在OLED屏幕上
3、当测量距离 < 20cm 时,RGB模块显示红灯报警

3-代码:

#include "U8glib.h" 
// OLED库

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

int redPin = 4;
int greenPin = 5;
int bluePin = 6;

const int TrigPin = 8; 
const int EchoPin = 9; 
float cm; 

void draw(float cm) {
  u8g.setFont(u8g_font_8x13); //使用8x13大小的字符
  u8g.setPrintPos(0, 20); // 对应 x,y 轴值
  u8g.print("dist(cm):");
  u8g.setPrintPos(73, 20); 
  u8g.print((float)cm);
}

void setup() 
{ 
  Serial.begin(9600); 
  pinMode(TrigPin, OUTPUT); 
  pinMode(EchoPin, INPUT); 

  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  
} 
void loop() 
{ 
  digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin 
  delayMicroseconds(2); 
  digitalWrite(TrigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(TrigPin, LOW); 
 
  cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm 
  Serial.print(cm); 
  Serial.print("cm"); 
  Serial.println(); 
  delay(1000); 

  if(cm < 20.0){
  Serial.println("red");   
  setColor(255, 0, 0);  // 红色
  delay(1000);
  }
  else {
  Serial.println("ok");   
  setColor(0, 0, 0);  
  delay(1000);
    }

  u8g.firstPage();  
  do {
    draw(cm);
  } while( u8g.nextPage() );
  delay(200);
}

void setColor(int red, int green, int blue)
{
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);  
}

你可能感兴趣的:(Arduino 超声波测距+OLED+RGB)