这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let'sDo第3期任务DIY一个电子测光表-过程帖

共2条 1/1 1 跳转至

Let'sDo第3期任务DIY一个电子测光表-过程帖

菜鸟
2024-11-18 14:32:06     打赏

本次活动使用Arduino IDE软件开发。在Arduino IDE中下载开发板文件和相关库即可成功驱动开发板。

一、软件设置

  • 步骤1.根据操作系统下载并安装最新版本的Arduino IDE

  • 步骤 2.启动 Arduino 应用程序

  • 步骤 3.将 ESP32 板包添加到 Arduino IDE

导航到工具 > 开发板 > ESP32 Arduino并选择“ Adafruit Feather ESP32-S3 TFT ”。

二、LED闪烁

步骤1.将以下代码复制到Arduino IDE

int led = 13;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);   // turn the LED on 
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off
  delay(1000);               // wait for a second
}

上传后,可看到板子上的红色LED 闪烁,每次闪烁之间有 1 秒的延迟。

二、点亮TFT屏幕

1.库函数设置

打开Arduino软件,在库管理中搜索TFT_eSPI,然后安装;在TFT_eSPI文件夹下可以找到这个User_Setup.h这个文件并修改以下内容:

image.png

image.png

image.png

image.png

2.显示内容

修改完成之后,就可以下载示例程序来显示内容了。示例 -> TFT_eSPI -> 320x240 -> 示例程序:

985226b3bfc815002b678cf7c389eef.jpg

成功显示。

三、按键

1.代码程序

按键不需要库函数且按键连接到A0和A1上,参考原理图,对应IO18和IO17,使用串口来输出按键按下情况。

const int buttonPin1 = 18;
const int buttonPin2 = 17;

int buttonState1 = 1;
int buttonState2 = 1;

void setup() {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  Serial.begin(115200);
}

void loop() {
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  if (buttonState1 == LOW) {
    Serial.println(F("key1"));
  } else if(buttonState2 == LOW){
    Serial.println(F("key2"));
  }
  delay(200);
}

2.结果输出

image.png

四、BH1750 数据读取

1.安装库函数

使用Wire.h和BH1750.h两个库函数,使用时需要先下载这两个库文件。

2.代码程序

#include <BH1750.h>
#include <Wire.h>
#include <TFT_eSPI.h>
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI();
BH1750 lightMeter(0x23);
unsigned long drawTime = 0;

void setup() {
  Serial.begin(115200);
  tft.init();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_WHITE, TFT_BLACK);

  Wire.begin();

  if (lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE))
    Serial.println(F("BH1750 Advanced begin"));
  else
    Serial.println(F("Error initialising BH1750"));
}

void loop() {
  // tft显示
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_WHITE, TFT_BLACK);
  // Datum is middle centre
  tft.setTextDatum(MC_DATUM);
  // BH1750光强测量
  if (lightMeter.measurementReady()) {
    float lux = lightMeter.readLightLevel();
    Serial.print("Light: ");
    Serial.print(lux);
    Serial.println(" lx");
    tft.drawFloat(lux, 2, 80, 20, 4);
    delay(1000);
  }
}

结合tft屏幕,成功读取并显示BH1750传感器的数值。

image.pngimage.png




关键词: 电子     测光     过程     任务    

菜鸟
2024-11-19 15:37:38     打赏
2楼

多谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]