【Follow me第二季第4期】-任务提交与汇总
本帖最后由 asdxz7 于 2025-1-21 23:21 编辑<p><strong>物料清单:</strong></p>
<p><strong>任务使用物料:</strong></p>
<ul>
<li>主板:<a href="https://www.digikey.cn/zh/products/detail/arduino/ABX00052/14123941" target="_blank">ABX00052 Arduino | 开发板,套件,编程器 | DigiKey</a> </li>
</ul>
<p> </p>
<div style="text-align: center;"></div>
<p> </p>
<p> </p>
<p> </p>
<p>任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!;</p>
<p>基本思路:1.LED点亮与呼吸灯:对LEDR、LEDG、LEDB进行PWM写入</p>
<p> 2.串口输出:设置波特率并且打印Hello DigiKey & EEWorld!</p>
<p>以下是程序流程图:</p>
<p> </p>
<p>以下是代码:<br />
</p>
<p> </p>
<p> </p>
<p>任务二:学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据;</p>
<p>1.初始化陀螺仪采样频率</p>
<p>2.采集数据</p>
<p>3.打印数据到串口</p>
<p>4.使用 <strong>Arduino IDE 串口绘图器</strong>(Serial Plotter),观察陀螺仪数据的打印情况。</p>
<p>以下是程序流程图:</p>
<p> </p>
<p>以下是代码:</p>
<pre>
<code>#include <Arduino_LSM6DSOX.h>
float acc_x,acc_y,acc_z;
float gyro_x,gyro_y,gyro_z;
float temp;
int update_flag;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
if(!IMU.begin())
{
Serial.println("Falled to initialize IMU");
while(1);
}
Serial.print("Acc sample rate = ");
Serial.print(IMU.accelerationSampleRate());
Serial.println("Hz");
Serial.print("Gyro sample rate = ");
Serial.print(IMU.gyroscopeSampleRate());
Serial.println("Hz");
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("Acc sample rate = ");
Serial.print(IMU.accelerationSampleRate());
Serial.println("Hz");
Serial.print("Gyro sample rate = ");
Serial.print(IMU.gyroscopeSampleRate());
Serial.println("Hz");
if (IMU.accelerationAvailable())
{
IMU.readAcceleration(acc_x,acc_y,acc_z);
update_flag = 1;
}
if (IMU.gyroscopeAvailable())
{
IMU.readGyroscope(gyro_x,gyro_y,gyro_z);
update_flag = 1;
}
if (IMU.temperatureAvailable())
{
IMU.readTemperatureFloat(temp);
update_flag = 1;
}
if (update_flag)
{
update_flag=0;
Serial.print(acc_x);
Serial.print(',');
Serial.print(acc_y);
Serial.print(',');
Serial.print(acc_z);
Serial.print(',');
Serial.print(gyro_x);
Serial.print(',');
Serial.print(gyro_y);
Serial.print(',');
Serial.print(gyro_z);
Serial.print(',');
Serial.print(gyro_x);
Serial.print(',');
Serial.println(temp);
delay(500);
}
}
</code></pre>
<p> </p>
<p> </p>
<p>任务三:学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。</p>
<p>思路:</p>
<p>1.初始化麦克风(采样率)以及波特率</p>
<p>2.采集数据</p>
<p>3.串口打印数据</p>
<p>4.使用 <strong>Arduino IDE 串口绘图器</strong>(Serial Plotter),观察音频数据的波形变化。</p>
<p>以下是程序流程图:</p>
<p> </p>
<p>代码:</p>
<pre>
<code> #include "PDM.h"
static const char channels = 1;
static const int frequncy= 24000;
short sampleBuffer;
volatile int samplesRead;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
PDM.onReceive(onPDMdata);
if(!PDM.begin(channels,frequncy))
{
Serial.println("Failed to start PDM!!!");
while(1);
}
}
void loop() {
// put your main code here, to run repeatedly:
if(samplesRead)
{
for(int i = 0; i < samplesRead; i++)
{
Serial.println(sampleBuffer);
}
samplesRead=0;
}
delay(1);
}
void onPDMdata(){
int bytesAvailable = PDM.available();
PDM.read(sampleBuffer,bytesAvailable);
samplesRead = bytesAvailable / 2;
}
</code></pre>
<p> </p>
<div>任务代码:<br />
任务总结:此次EEWORD论坛的活动,让我学习了<strong><u>Arduino</u> Nano RP2040 Connect开发板,</strong>提高了我个人的能力,激发了我对创新的热情,作为一名在校学生,主要学习的方向是硬件开发,此次活动丰富了我的知识体系,精进了我对开发能力,同时奠定了更加深厚的基础。</div>
<p>任务汇总视频:0e64cb945f6adc4609af6b60f0e88800c086b382ef801de7515bd9760d1b4c5d<br />
</p>
<p>音频波形出来就能反映收集的数据是否正确</p>
<p>PDM麦克风,是采用脉冲密度调制,通过调整连续脉冲序列中1和0的密度来代表模拟信号的幅度。</p>
<p>汇总的视频没有插到文章里吗? </p>
<div><br />
<br />
</div>
页:
[1]