233|0

11

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第2期】基础任务 点阵+DAC正弦波+OPAMP放大+串口打印与曲线输出 [复制链接]

  本帖最后由 eew_gz8e7C 于 2024-9-30 09:39 编辑

Follow me第二季第2期基础任务之

驱动12x8点阵LED;

用DAC生成正弦波;

用OPAMP放大DAC信号;

用ADC采集并且打印数据到串口等其他接口可上传到上位机显示曲线;

驱动12x8点阵LED

        通过Arduino_LED_Matrix库可以便捷调用点阵,只需要关注点阵内容矩阵即可,通过byte类型的二维向量存储点阵内容,元素0代表灭,元素1代表亮。

核心代码

#include "Arduino_LED_Matrix.h"//调用LED_Matrix库

ArduinoLEDMatrix matrix;//实例化点阵对象

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);//设置波特率
  
  matrix.begin();//点阵使能
  
  byte frame[8][12] = {
  { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
  { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
  { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
  { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
  { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};//点阵爱心数据

  matrix.renderBitmap(frame, 8, 12);//点阵渲染显示
}

void loop() {
  // put your main code here, to run repeatedly:

}

效果展示

        

 

用DAC生成正弦波,并打印到串口用上位机显示曲线

        UNO R4 WiFi 还包含一个 DAC,它可以作为真正的模拟输出引脚。

        此 DAC 引脚默认的写入分辨率为 10 位。写入到引脚的值应该在 0-1023 之间。设置正弦波的幅值为0.5,则输出波形幅值在0~511之间。

        因为没有示波器,使用A4引脚ADC采集通过串口输出观察波形。

 

 

核心代码

#include "analogWave.h" 

analogWave wave(DAC);   // 使用DAC引脚实例化模拟曲线对象wave

float freq = 0.5;  // 设置曲线初始频率

void setup() {
  Serial.begin(115200);  // 串口波特率
  wave.sine(freq);       // 使用模拟曲线对象wave按照初始频率生成正弦波
  wave.amplitude(0.5);
}

void loop() {
  printf("%d\n",analogRead(A4)); // 读取正弦值
  delay(100);
}

效果展示

DAC


用OPAMP放大DAC信号

        OPAMP 是一种用途广泛且应用广泛的电子元件,属于模拟集成电路类。它的主要功能是放大电压信号。如图所示,R1为接地端的电阻,R2为放大器输出端的电阻。输入电压为v,放大倍数为A,则R1、R2、A、v满足Av=1+R2/R1,在确定放大倍数后需要根据放大倍数选择对应比例的R1和R2。这里我选择两个2kΩ电阻实现2倍的放大。

    

 

 

 

核心代码

#include "analogWave.h" 
#include <OPAMP.h>
analogWave wave(DAC);   // 使用DAC引脚实例化模拟曲线对象wave

float freq = 1;  // 设置曲线初始频率

void setup() {
  Serial.begin(250000);  // 串口波特率
  OPAMP.begin(OPAMP_SPEED_HIGHSPEED); //设置OPAMP
  wave.sine(freq);       // 使用模拟曲线对象wave按照初始频率生成正弦波
  wave.amplitude(0.4);  //设置正弦曲线幅值为0.4
}

void loop() {
  printf("%d\n",analogRead(A4)); // 读取DAC输出正弦值
  Serial.print(" ");
  printf("%d\n",analogRead(A5)); // 读取OPAMP输出正弦值
  delay(100);
}

效果展示

OPAMP

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表