前言

作为一名嵌入式新手的情况下,我们该如何使用AI辅助帮助我们使用DS18B20+0.96OLED屏幕3.3v+Nano板子显示学号+姓名(中文取模)+温度+开机动画

提示:以下是本篇文章正文内容,下面案例可供参考

一、工具介绍

1.AI辅助工具:deepseek
2.IDE:arduino
3.硬件设备:DS18B20、0.96OLED屏幕(3.3v)、Nano核心开发板
4.任意中文取模工具或一些取模的在线网站

二、使用步骤

1.按照要求连线

OLED -> Arduino Nano
VCC -> 3.3V
GND -> GND
SDA -> A4
SCL -> A5

DS18B20 -> Arduino Nano
VCC -> 3.3V
GND -> GND
DATA -> D2 (需接4.7K上拉电阻)

2.在deepseek上先输入:使用DS18B20+0.96OLED屏幕3.3v+Nano板子显示学号+姓名(中文取模)+温度,并修改它的代码

代码如下(示例):

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// OLED配置
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET     -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// 温度传感器配置
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

// 中文取模数据 (16x16像素)
const unsigned char a[] PROGMEM = {
 //写入你自己的取模数据
};

//这里的取模数组不止一个
void setup() {
  Serial.begin(9600);
  
  // 初始化OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  display.clearDisplay();
  
  // 初始化温度传感器
  sensors.begin();
  
  // 显示初始信息
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  
  // 显示学号
  display.setCursor(0, 0);
  display.println("ID: 20210001");//这里的学号更改成你自己的
  
  // 显示姓名
  display.setCursor(0, 20);
  display.print("Name: ");
  display.drawBitmap(48, 20, , 16, 16, WHITE);     // 这里根据你自己的要求调节就好
 
  // 显示温度标签
  display.setCursor(0, 40);
  display.print("Temperature: ");
  
  display.display();
  delay(2000);
}

void loop() {
  // 获取温度
  sensors.requestTemperatures();
  float tempC = sensors.getTempCByIndex(0);
  
  // 清除温度显示区域
  display.fillRect(0, 50, 128, 14, SSD1306_BLACK);
  
  // 显示温度值
  display.setCursor(0, 50);
  display.print(tempC, 1);
  display.print(" C");
  
  display.display();
  delay(1000);  // 每秒更新一次
}

所需库:

Adafruit_GFX

Adafruit_SSD1306

OneWire

DallasTemperature

需要注意:第一:学号部分更改成你自己的。第二:姓名中文部分需要你自己取模并且将数据复制填入。第三:自己的姓名大小记得自己更改数字


3.显示效果如下

在这里插入图片描述
这里的姓名部分由于个人隐私问题我用方块代替。

4.接下来我们做动画部分(先确保你上面的姓名学号和温度都能显示正确)

把你已有的正确代码给deepseek,然后告诉它你想实现的动画部分的效果
比如:
学号滚动动画:

"ID: 20210001"在屏幕顶部上下滚动
滚动完成后进入下一动画状态

// 动画状态
enum AnimationState {
  ID_ANIMATION,
  NAME_LABEL_ANIMATION,
  CHARACTER_SLIDE_ANIMATION,
  TEMPERATURE_LABEL_ANIMATION,
  TEMPERATURE_ANIMATION,
  NORMAL_DISPLAY
};

AnimationState currentState = ID_ANIMATION;

// 动画参数
unsigned long lastUpdateTime = 0;
const int animationDelay = 50; // 动画帧延迟(ms)

// 学号动画
int idOffset = 0;
int idDirection = 1;
void animateID() {
  // 学号滚动效果
  display.setCursor(0, idOffset);
  display.println("ID: 20210001");
  
  idOffset += idDirection;
  
  if (idOffset >= 10 || idOffset <= -5) {
    idDirection *= -1;
  }
  
  // 切换到下一状态
  if (idOffset == 0) {
    currentState = NAME_LABEL_ANIMATION;
    animationStep = 0;
  }
}

按照这种方式你还可以给你的名字还有温度设置你想要的专属动画。这是一个很酷的东西,去用你的AI帮你实现吧。

总结

硬件连接配置
OLED屏幕连接Nano板: VCC接3.3V
GND接GND
SDA接A4
SCL接A5

DS18B20传感器连接: VCC接3.3V
GND接GND
DATA接D2(需加4.7K上拉电阻)

基础代码框架
安装必需库:

Adafruit_GFX
Adafruit_SSD1306
OneWire
DallasTemperature
核心代码结构:

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 

中文显示实现
使用取模工具生成16x16像素字模数据:

const unsigned char nameChar[] PROGMEM = {
  0x00,0x40,0x00,0x80,0x01,0x00,0x1F,0xF0,
  0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
  0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,
  0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00
};
 

显示调用方法:

display.drawBitmap(x, y, nameChar, 16, 16, WHITE);

温度监测功能
传感器初始化和读取:

void setup() {
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();
  float tempC = sensors.getTempCByIndex(0);
  display.print(tempC, 1);
}
 

动画效果设计
状态机控制方案:

enum AnimState {
  BOOT_ANIM,
  SHOW_ID,
  SHOW_NAME,
  SHOW_TEMP
};

void handleAnimation() {
  static unsigned long lastTime = 0;
  if(millis() - lastTime > 100) {
    switch(currentState) {
      case BOOT_ANIM:
        // 实现开机动画逻辑
        break;
      case SHOW_ID:
        // 学号显示效果
        break;
    }
    lastTime = millis();
  }
}
 

滚动动画示例:

int scrollPos = 0;
void scrollText() {
 display.fillRect(0,0,128,16,BLACK);
 display.setCursor(0, scrollPos%16);
 display.print("ID:20210001");
 scrollPos++;
}

调试建议
硬件检查顺序:

先单独测试OLED显示英文文本
验证DS18B20温度读取数值
逐步添加中文显示和动画效果
常见问题处理:

屏幕无显示时检查I2C地址是否匹配
温度读数异常时检查上拉电阻连接
中文乱码时确认取模数据格式正确
通过AI辅助开发时,建议分模块验证功能,每次只添加一个新特性并进行测试。动画效果实现可先设计简单的移动效果,再逐步完善过渡动画。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐