共1条
1/1 1 跳转至页
1512054
试用MCP4725数模转换模块生成正弦波---利用正弦函数处理
只看楼主 1楼
在以正弦函数方式使MCP4725生成正弦波的时候,要注意一点,就是转换值。对于12位的DAC,器最大处理值为2^12=4096,对正弦函数,其值得范围对应0〜360度为0 →1→0→-1→0,而DAC转换不存在负数问题。因此需要把正弦波的值抬高到0以上,这样对正弦函数的输出值0 →1→0→-1→0,转换为1 →2→1→0→1。那么就不能使用4096这个值作为幅度处理,而只能使用2048。
程序代码如下:
/**************************************************************************/ /*! ESP8266 -------- MCP4725 =========================== D1(SCL) SCL D2(SDA) SDA */ /**************************************************************************/ #include <Wire.h> #include <Adafruit_MCP4725.h> Adafruit_MCP4725 dac; void setup(void) { Serial.begin(115200); Serial.println("Hello!"); dac.begin(0x60); Serial.println("Generating a sine wave"); } void loop(void) { int16_t i; for (i = 0; i < 360; i++) { //Serial.println(sin(2*3.1415926/360*i)); dac.setVoltage((int16_t)(2048 * (sin(2*3.1415926/360*i)+1)), false); } }
输出波形:
图片1.png
效果也很好。在上记代码中,采样点是以1度执行的,可根据自己的需要调整,非常方便,不比预先准备采样点数据。可见使用正弦函数,极大地简化了代码。
关键词: 大懒猫的试用笔记 MCP4725 正弦波
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
"我踩过的那些坑"主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年"我要开发板活动"又开始了! | |
打赏了!打赏了!打赏了! |
[フレーム]