小编scr*_*rub的帖子

如何计算 ADC 读数的平均值?

目的是将最新的 10 个 ADC 读数存储在数组中,然后计算它们的平均值以供其他地方使用。每次更新时都会删除最旧的。

关于 LED 时序,如果 ADC 读数在如下所示的范围内,则必须将时序从 1s 切换到 0.25s,如何正确实现?我知道我的方法有效,但可以做得更好。至于 LED,如果按下开关,它们必须改变模式,如您所见,它们确实这样做,但我再次确信可以用另一种更简单的方式来完成!

下面是我的代码,我也确信有很多错误和足够的优化空间,我会很乐意接受这一切!

#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>

#include <avr/io.h>
#include <avr/interrupt.h>
unsigned int timecount0;


unsigned int adc_reading;

volatile uint32_t timing = 1;
volatile uint32_t accumulator = 0;
volatile uint16_t average = 0;
volatile uint16_t samples = 0;


#define LED_RED PORTB = ((PORTB & ~0b00001110)|(0b00000010 & 0b00001110))
#define LED_GREEN PORTB = ((PORTB & ~0b00001110)|(0b00001000 & 0b00001110))
#define LED_BLUE PORTB = ((PORTB & ~0b00001110)|(0b00000100 & 0b00001110))
#define …
Run Code Online (Sandbox Code Playgroud)

c avr arduino interrupt atmega32

3
推荐指数
1
解决办法
2458
查看次数

标签 统计

arduino ×1

atmega32 ×1

avr ×1

c ×1

interrupt ×1