258|0

5

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第2期】驱动12x8点阵LED;用DAC生成正弦波;用OPAMP放大DAC信号... [复制链接]

  本帖最后由 eew_HqZm7h 于 2024-10-9 12:57 编辑

任务步骤:

1.通过样例使用LED矩阵

2.参考样例用DAC生成正弦波

3.使用运算放大器放大正弦波信号

 

1.通过样例使用LED矩阵

参考官网的 led-matrix示例代码启动矩阵,并滚动显示hello world

#include "Arduino_LED_Matrix.h" //引用矩阵库
ArduinoLEDMatrix matrix; //创建矩阵对象
//在void setup()中启动矩阵 matrix.begin();`
#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

void setup() {
  Serial.begin(115200);
  matrix.begin();
}

 

// To use ArduinoGraphics APIs, please include BEFORE Arduino_LED_Matrix
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

void setup() {
  Serial.begin(115200);
  matrix.begin(); //启动矩阵(初始化矩阵)

  matrix.beginDraw(); //矩阵开启绘图(之后的绘图操作会显示在屏幕上)
  matrix.stroke(0xFFFFFFFF); //设置图形颜色。FFFFFFFF为红色
  // add some static text
  // will only show "UNO" (not enough space on the display)
  const char text[] = "UNO r4"; // 文本显示内容
  matrix.textFont(Font_4x6);//设置用于文本的字体。目前的库内置了Font_4x6和Font_5x7。
  matrix.beginText(0, 1, 0xFFFFFF);//设置文本起始位置和文本颜色(第一列第二行开始设置文字)
  matrix.println(text);//开始显示文本内容
  matrix.endText();//结束显示文本内容//没有参数则为静态文本

  matrix.endDraw();//结束绘图

  delay(2000);
}

void loop() {

  // Make it scroll!
  matrix.beginDraw();//开始绘图

  matrix.stroke(0xFFFFFFFF);//设置绘图颜色
  matrix.textScrollSpeed(50);//控制每个像素间的延迟,以毫秒为单位(滚动文本时需要设置)

  // add the text
  const char text[] = "    Hello World!    ";
  matrix.textFont(Font_5x7);
  matrix.beginText(0, 1, 0xFFFFFF);
  matrix.println(text);
  matrix.endText(SCROLL_LEFT);
//scrollDirection:(可选)滚动方向,如果未提供,则默认为NO_SCROLL。有效选项为NO_SCROLL、SCROLL_LEFT、SCROLL_RIGHT、SCROLL_UP、SCROLL_DOWN

  matrix.endDraw();
}

滚动显示hello world 视频

2.参考样例用DAC生成正弦波

参考官网的 DAC 样例,实现生成正弦波

锯齿波用wave.saw()

方形波用wave.square()

//生成正弦波
#include "analogWave.h" // Include the library for analog waveform generation

analogWave wave(DAC); //define DAC A0

int freq = 100;//正弦波频率

void setup () {
  Serial.begin(115200);
  analogReadResolution(14); //模拟信号读取分辨率
  wave.sine(freq); //生成正弦波
  wave.amplitude(0.5); //改变信号幅值
}

void loop() {
  Serial.println(analogRead(A1)); // DAC output
}

  

3.使用运算放大器放大正弦波信号

参考官网 OPAMP 的电路图以及课堂中老师讲解的电路图。

 

 

  

A0接收信号传递给A1,A1为放大前信号,A3为放大后信号。

实际连接电路图:

 

 

#include <OPAMP.h>
#include "analogWave.h" // Include the library for analog waveform generation

analogWave wave(DAC); //define DAC A0

int freq = 100;//正弦波频率

void setup () {
  Serial.begin(250000);
  analogReadResolution(14); //模拟信号读取分辨率
  wave.sine(freq); //形成正弦波
  wave.amplitude(0.5); //改变信号幅值
  OPAMP.begin(OPAMP_SPEED_HIGHSPEED); //以高速率开启运算放大器
}

void loop() {
  Serial.print(analogRead(A1)); // DAC output
  Serial.print(" ");
  Serial.println(analogRead(A3)); // OPAMP output
}

实验结果:

放大正弦波信号视频

 

 

点赞(1) 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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