【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
}
实验结果:
放大正弦波信号视频
|