首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >arduino atmega328在analogWrite上的重置

arduino atmega328在analogWrite上的重置
EN

Stack Overflow用户
提问于 2016-03-31 21:23:42
回答 2查看 152关注 0票数 1

我在做原型的时候写了一幅关于我的阿迪诺·梅加的草图。后来,我把它像一个atmega328芯片一样闪过。草图上到处都是奇怪的结果。为了修复它,我逐个模块地复制到一个新的IDE窗口中,这时我发现analogWrite函数有些可疑。为了去掉所有其他变量,我上传了这个草图,它是一个稍微修改过的淡出示例草图。

代码语言:javascript
运行
复制
int led = 6;       
int brightness = 0;
int fadeAmount = 5;
void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}
void loop() {
  Serial.println(brightness);
  analogWrite(led, brightness);
  brightness = brightness + fadeAmount;
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }
  delay(1000);
}

它上传非常好,没有错误,我附加了一个引线和电阻到那个引脚上。当芯片开始运行代码时,我得到的全部是led闪烁和这样的串行数据

代码语言:javascript
运行
复制
.5
.0
.5
.0
.5
.0
.5
.0
.5
.0
.5
.0
.5
.10

它会有什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-01 00:43:53

奇怪的事情正在发生。我在复制和粘贴您的代码之后运行了这个程序,并得到了预期的结果:

代码语言:javascript
运行
复制
0
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100
105
110
115
120
125
130
135
140
145
150
155
160
165
170
175
180
185
190
195
200
205
210
215
220
225
230
235
240
245
250
255
250
245
240
235
230
225
220

您确定已经粘贴了在您的侧产生意外结果的确切代码吗?数字前面的圆点只是许多奇怪的东西之一。当然,交替值是另一种。就像突然出现在seros和fives之后的.10一样。简而言之,可疑似乎与类似的写作无关。

除非是硬件问题。什么值电阻?电阻和LED是串联的吗?LED闪光灯的频率为0.5赫兹,占空比为0.5?还是不想?

顺便说一句,如果您的条件是用256而不是255来检查的话,RBerteig将是正确的。他的说法确实更好,但如果这是问题所在,你就会看到另一种行为。

票数 1
EN

Stack Overflow用户

发布于 2016-03-31 21:36:04

一个明显的问题是这一行:

代码语言:javascript
运行
复制
if (brightness == 0 || brightness == 255) {

由于您是通过在每次迭代中添加(或减去) 5来修改brightness的,而且256个不能被5整除,所以两个端点都不会测试。将==测试更改为不等式。

代码语言:javascript
运行
复制
if (brightness <= 0 || brightness >= 255) {
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36344072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档