返回

时光流逝有迹可循,自制进度条时钟掌握每一分秒

前端

时光的洪流中,我们追逐着指针的脚步,在刻度的分界里寻找生活的意义。然而,有时指针的旋转显得那么枯燥而乏味。今天,让我们打破传统时钟的束缚,制作一个进度条时钟,让时间不再单调,让生活充满趣味!

材料准备:

  • Arduino Uno 开发板
  • 128x64 OLED 显示屏
  • 面包板
  • 跳线
  • 电阻(10kΩ、1kΩ)
  • 电位器(10kΩ)
  • 按键
  • 3D 打印机(或其他制作外壳的工具)

制作步骤:

  1. 硬件连接:

    • 将 OLED 显示屏连接到 Arduino Uno 开发板上。
    • 将电阻和电位器连接到 Arduino Uno 开发板上。
    • 将按键连接到 Arduino Uno 开发板上。
    • 将面包板连接到 Arduino Uno 开发板上。
  2. 软件编程:

    • 在 Arduino IDE 中,打开 "File" -> "New",创建一个新的项目。
    • 在 Arduino IDE 中,复制粘贴以下代码:
// 定义库
#include <U8g2lib.h>
#include <Wire.h>

// 定义 OLED 显示屏
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

// 定义电位器
const int potentiometerPin = A0;

// 定义按键
const int buttonPin = 2;

// 定义时间变量
int hours = 0;
int minutes = 0;
int seconds = 0;

void setup() {
  // 初始化 OLED 显示屏
  u8g2.begin();
  u8g2.setFont(u8g2_font_6x12_tf);

  // 初始化电位器
  pinMode(potentiometerPin, INPUT);

  // 初始化按键
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // 读取电位器值
  int potentiometerValue = analogRead(potentiometerPin);

  // 计算时间
  hours = potentiometerValue / 3600;
  minutes = (potentiometerValue % 3600) / 60;
  seconds = (potentiometerValue % 3600) % 60;

  // 显示时间
  u8g2.clearBuffer();
  u8g2.setCursor(0, 10);
  u8g2.print(hours);
  u8g2.print(":");
  u8g2.print(minutes);
  u8g2.print(":");
  u8g2.print(seconds);
  u8g2.sendBuffer();

  // 读取按键状态
  int buttonState = digitalRead(buttonPin);

  // 如果按键被按下,则重置时间
  if (buttonState == LOW) {
    hours = 0;
    minutes = 0;
    seconds = 0;
  }
}
  1. 编译并上传代码:

    • 在 Arduino IDE 中,点击 "Verify" 按钮,编译代码。
    • 在 Arduino IDE 中,点击 "Upload" 按钮,将代码上传到 Arduino Uno 开发板上。
  2. 组装外壳:

    • 使用 3D 打印机或其他工具制作时钟的外壳。
    • 将 Arduino Uno 开发板、OLED 显示屏和其他电子元件安装到外壳中。
  3. 校准时钟:

    • 使用电位器调整时钟的时间。
  4. 使用时钟:

    • 将时钟连接到电源。
    • 使用按键重置时间。

结语:

时光流逝有迹可循,制作一个进度条时钟,让您时刻掌握每一分秒。这个别致的时钟不仅能够装饰您的房间,更能成为您生活中的一位时间管理助手。