首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Adafruit_NeoPixel与串行通信

Adafruit_NeoPixel与串行通信
EN

Stack Overflow用户
提问于 2016-02-24 07:38:24
回答 1查看 1.5K关注 0票数 2

我使用来自Adafruit_NeoPixel的NeoPixel,我有问题与我的板串行通信,但它是好的,当我不使用pixels.show();我不知道为什么,但任何人都可以解释这一点,以及如何解决这个问题。(我也必须刷新引导加班)*对不起我的英语。

代码语言:javascript
复制
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#define PIN            6
#define NUMPIXELS      16

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 500;
void setup() {

#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif

  pixels.begin();
  Serial.begin(115200);
}

void loop() {
  for(int i=0;i<NUMPIXELS;i++){
    pixels.setPixelColor(i, pixels.Color(0,150,0));
    pixels.show();
  }
}

void serialEvent() {
  if(Serial.available()){
    delay(5);
    size_t len = Serial.available();
    char rcvData[128];
    Serial.readBytes( rcvData, len );
    rcvData[len] = '\0';

    Serial.write(rcvData);
    Serial.write('\n');
  }
}

串行输入

代码语言:javascript
复制
123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789
abcdefghijklmnopqrs
abcdefghijklmnopqrs
abcdefghijklmnopqrs
abcdefghijklmnopqrs
abcdefghijklmnopqrs
abcdefghijklmnopqrs
abcdefghijklmnopqrs

串行输出

代码语言:javascript
复制
12679
12349
123459
12456789
12569
126789
12389
12389
12389
abdefklqrs
abfghijklmnopqrs
abghmnos
abcdijkpqs
abfglmns
abcdijopqs
abefglmnrs
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 09:07:15

嗯,如果你读了新像素::显示部分,那是因为关键的时机。

注意:数据锁存器=输出流中的50+微秒暂停。而不是在函数结束时延迟,而是注意到结束时间,如果需要的话,函数只会在发出下一轮数据时延迟(如果需要的话),直到锁存时间过去。这允许主线代码开始生成下一帧数据,而不是延迟锁存。 while(!canShow()); endTime是一个私有成员(而不是全局var),因此 不同引脚上的实例可以快速依次发出(每个实例不会延迟下一个实例)。为了使此代码运行时-可配置为与任何引脚一起工作,SBI/CBI指令被避免,而是通过OUT或ST指令支持完整端口写入。它依赖于两个事实:外围功能(如PWM)优先于输出引脚,因此我们的端口范围的写操作不会产生干扰,并且在向LED发出数据时,中断会被全局禁用,因此不会有其他代码访问端口。该代码获取端口状态的初始“快照”,计算'pin high‘和'pin low’值,并根据需要将这些值写回端口寄存器。 noInterrupts();需要100%关注指令定时

希望这能回答你的问题

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35596005

复制
相关文章

相似问题

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