那种导航网站,重庆建工集团股份有限公司官网,seo推广服务哪家好,app store怎么调回中文37款传感器与模块的提法#xff0c;在网络上广泛流传#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块#xff0c;依照实践出真知#xff08;一定要动手做#xff09;的理念#xff0c;以学习和交流为目的#x…37款传感器与模块的提法在网络上广泛流传其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块依照实践出真知一定要动手做的理念以学习和交流为目的这里准备逐一动手试试多做实验不管成功与否都会记录下来——小小的进步或是搞不掂的问题希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验二百WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩 单点单控软灯条模块 知识点WS2812B 是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路还包含有高精度的内部振荡器和12V高压可编程定电流控制部分有效保证了像素点光的颜色高度一致。数据协议采用单线归零码的通讯方式像素点在上电复位以后DIN端接受从控制器传输过来的数据首先送过来的24bit数据被第一个像素点提取后送到像素点内部的数据锁存器剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点每经过一个像素点的传输信号减少24bit。像素点采用自动整形转发技术使得该像素点的级联个数不受信号传送的限制仅仅受限信号传输速度要求。
主要特点 1、智能反接保护电源反接不会损坏IC。 2、IC控制电路与LED点光源公用一个电源。 3、控制电路与RGB芯片集成在一个5050封装的元器件中构成一个完整的外控像素点。 4、内置信号整形电路任何一个像素点收到信号后经过波形整形再输出保证线路波形畸变不会累加。 5、内置上电复位和掉电复位电路。 6、每个像素点的三基色颜色可实现256级亮度显示完成16777216种颜色的全真色彩显示扫描频率不低于400Hz/s。 7、串行级联接口能通过一根信号线完成数据的接收与解码。 8、任意两点传传输距离在不超过5米时无需增加任何电路。 9、当刷新速率30帧/秒时级联数不小于1024点。 10、数据发送速度可达800Kbps。 11、光的颜色高度一致性价比高。
应用领域 具有低电压驱动环保节能亮度高散射角度大一致性好超低功率超长寿命等优点。将控制电路集成于LED上面电路变得更加简单体积小安装更加简便。主要应用领域LED全彩发光字灯串LED全彩模组 LED全彩软灯条硬灯条LED护栏管。LED点光源LED像素屏LED异形屏各种电子产品电器设备跑马灯等。 Arduino实验接线示意图
测试环境中可以直接使用Arduino的5V引脚直接供电如果灯带长度过长则需要外接电源。下为实验接线示意图。 实验提示 1、可以在电源到地之间连接一个电容在 100uF 到 1000uF 之间的电容器以平滑电源。 2、在 Arduino 数字输出引脚和条形数据输入引脚之间添加一个 220 或 470 Ohm 电阻器以减少该线路上的噪声。 3、使arduino电源和条带之间的电线尽可能短以最大程度地减少电压损失。 4、如果您的灯条损坏且无法正常工作请检查第一个 LED 是否损坏。如果是这样剪掉它重新焊接头针它应该会再次工作。 5、WS2812 需要 5v 电源每个 LED 在其全亮度下需要大约 60mA 电流。如果您的 LED 灯条有 30 个 LED您需要 60mA x 30 1800 mA 或 1.8 Amp 电流。因此您必须使用额定电流为 1.8 安培或更高的 5v 电源。 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验二百一十六WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块 实验程序十六太平洋——温柔的蓝绿色海浪
Arduino实验开源代码
/*【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程实验二百一十六WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块实验程序十六太平洋——温柔的蓝绿色海浪
*/#define FASTLED_ALLOW_INTERRUPTS 0
#include FastLED.h
FASTLED_USING_NAMESPACE#define DATA_PIN 6
#define NUM_LEDS 24
#define MAX_POWER_MILLIAMPS 500
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB//CRGB leds[NUM_LEDS];void setup() {delay( 3000); // 3 second delay for boot recovery, and a moment of silenceFastLED.addLedsLED_TYPE,DATA_PIN,COLOR_ORDER(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );FastLED.setMaxPowerInVoltsAndMilliamps( 5, MAX_POWER_MILLIAMPS);
}void loop(){EVERY_N_MILLISECONDS( 20) {pacifica_loop();FastLED.show();}
}//
//
// The code for this animation is more complicated than other examples, and
// while it is ready to run, and documented in general, it is probably not
// the best starting point for learning. Nevertheless, it does illustrate some
// useful techniques.
//
//
//
// In this animation, there are four layers of waves of light.
//
// Each layer moves independently, and each is scaled separately.
//
// All four wave layers are added together on top of each other, and then
// another filter is applied that adds whitecaps of brightness where the
// waves line up with each other more. Finally, another pass is taken
// over the led array to deepen (dim) the blues and greens.
//
// The speed and scale and motion each layer varies slowly within independent
// hand-chosen ranges, which is why the code has a lot of low-speed beatsin8 functions
// with a lot of oddly specific numeric ranges.
//
// These three custom blue-green color palettes were inspired by the colors found in
// the waters off the southern coast of California, https://goo.gl/maps/QQgd97jjHesHZVxQ7
//
CRGBPalette16 pacifica_palette_1 { 0x000507, 0x000409, 0x00030B, 0x00030D, 0x000210, 0x000212, 0x000114, 0x000117, 0x000019, 0x00001C, 0x000026, 0x000031, 0x00003B, 0x000046, 0x14554B, 0x28AA50 };
CRGBPalette16 pacifica_palette_2 { 0x000507, 0x000409, 0x00030B, 0x00030D, 0x000210, 0x000212, 0x000114, 0x000117, 0x000019, 0x00001C, 0x000026, 0x000031, 0x00003B, 0x000046, 0x0C5F52, 0x19BE5F };
CRGBPalette16 pacifica_palette_3 { 0x000208, 0x00030E, 0x000514, 0x00061A, 0x000820, 0x000927, 0x000B2D, 0x000C33, 0x000E39, 0x001040, 0x001450, 0x001860, 0x001C70, 0x002080, 0x1040BF, 0x2060FF };void pacifica_loop()
{// Increment the four color index start counters, one for each wave layer.// Each is incremented at a different speed, and the speeds vary over time.static uint16_t sCIStart1, sCIStart2, sCIStart3, sCIStart4;static uint32_t sLastms 0;uint32_t ms GET_MILLIS();uint32_t deltams ms - sLastms;sLastms ms;uint16_t speedfactor1 beatsin16(3, 179, 269);uint16_t speedfactor2 beatsin16(4, 179, 269);uint32_t deltams1 (deltams * speedfactor1) / 256;uint32_t deltams2 (deltams * speedfactor2) / 256;uint32_t deltams21 (deltams1 deltams2) / 2;sCIStart1 (deltams1 * beatsin88(1011,10,13));sCIStart2 - (deltams21 * beatsin88(777,8,11));sCIStart3 - (deltams1 * beatsin88(501,5,7));sCIStart4 - (deltams2 * beatsin88(257,4,6));// Clear out the LED array to a dim background blue-greenfill_solid( leds, NUM_LEDS, CRGB( 2, 6, 10));// Render each of four layers, with different scales and speeds, that vary over timepacifica_one_layer( pacifica_palette_1, sCIStart1, beatsin16( 3, 11 * 256, 14 * 256), beatsin8( 10, 70, 130), 0-beat16( 301) );pacifica_one_layer( pacifica_palette_2, sCIStart2, beatsin16( 4, 6 * 256, 9 * 256), beatsin8( 17, 40, 80), beat16( 401) );pacifica_one_layer( pacifica_palette_3, sCIStart3, 6 * 256, beatsin8( 9, 10,38), 0-beat16(503));pacifica_one_layer( pacifica_palette_3, sCIStart4, 5 * 256, beatsin8( 8, 10,28), beat16(601));// Add brighter whitecaps where the waves lines up morepacifica_add_whitecaps();// Deepen the blues and greens a bitpacifica_deepen_colors();
}// Add one layer of waves into the led array
void pacifica_one_layer( CRGBPalette16 p, uint16_t cistart, uint16_t wavescale, uint8_t bri, uint16_t ioff)
{uint16_t ci cistart;uint16_t waveangle ioff;uint16_t wavescale_half (wavescale / 2) 20;for( uint16_t i 0; i NUM_LEDS; i) {waveangle 250;uint16_t s16 sin16( waveangle ) 32768;uint16_t cs scale16( s16 , wavescale_half ) wavescale_half;ci cs;uint16_t sindex16 sin16( ci) 32768;uint8_t sindex8 scale16( sindex16, 240);CRGB c ColorFromPalette( p, sindex8, bri, LINEARBLEND);leds[i] c;}
}// Add extra white to areas where the four layers of light have lined up brightly
void pacifica_add_whitecaps()
{uint8_t basethreshold beatsin8( 9, 55, 65);uint8_t wave beat8( 7 );for( uint16_t i 0; i NUM_LEDS; i) {uint8_t threshold scale8( sin8( wave), 20) basethreshold;wave 7;uint8_t l leds[i].getAverageLight();if( l threshold) {uint8_t overage l - threshold;uint8_t overage2 qadd8( overage, overage);leds[i] CRGB( overage, overage2, qadd8( overage2, overage2));}}
}// Deepen the blues and greens
void pacifica_deepen_colors()
{for( uint16_t i 0; i NUM_LEDS; i) {leds[i].blue scale8( leds[i].blue, 145); leds[i].green scale8( leds[i].green, 200); leds[i] | CRGB( 2, 5, 7);}
}【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验二百一十六WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块 实验程序十七内置调色板森林云彩熔岩海洋派对
Arduino实验开源代码
/*【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程实验二百一十六WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块实验程序十七内置调色板森林云彩熔岩海洋派对
*/#include FastLED.h#define LED_PIN 6
#define BRIGHTNESS 24
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
#define BRIGHTNESS 33// Params for width and height
const uint8_t kMatrixWidth 24;
const uint8_t kMatrixHeight 1;// Param for different pixel layouts
const bool kMatrixSerpentineLayout true;#define NUM_LEDS (kMatrixWidth * kMatrixHeight)
#define MAX_DIMENSION ((kMatrixWidthkMatrixHeight) ? kMatrixWidth : kMatrixHeight)// The leds
CRGB leds[kMatrixWidth * kMatrixHeight];// The 16 bit version of our coordinates
static uint16_t x;
static uint16_t y;
static uint16_t z;// Were using the x/y dimensions to map to the x/y pixels on the matrix. Well
// use the z-axis for time. speed determines how fast time moves forward. Try
// 1 for a very slow moving effect, or 60 for something that ends up looking like
// water.
uint16_t speed 20; // speed is set dynamically once weve started up// Scale determines how far apart the pixels in our noise matrix are. Try
// changing these values around to see how it affects the motion of the display. The
// higher the value of scale, the more zoomed out the noise iwll be. A value
// of 1 will be so zoomed in, youll mostly see solid colors.
uint16_t scale 30; // scale is set dynamically once weve started up// This is the array that we keep our computed noise values in
uint8_t noise[MAX_DIMENSION][MAX_DIMENSION];CRGBPalette16 currentPalette( PartyColors_p );
uint8_t colorLoop 1;void setup() {delay(3000);FastLED.addLedsLED_TYPE,LED_PIN,COLOR_ORDER(leds,NUM_LEDS);FastLED.setBrightness(BRIGHTNESS);// Initialize our coordinates to some random valuesx random16();y random16();z random16();
}// Fill the x/y array of 8-bit noise values using the inoise8 function.
void fillnoise8() {// If were runing at a low speed, some 8-bit artifacts become visible// from frame-to-frame. In order to reduce this, we can do some fast data-smoothing.// The amount of data smoothing were doing depends on speed.uint8_t dataSmoothing 0;if( speed 50) {dataSmoothing 200 - (speed * 4);}for(int i 0; i MAX_DIMENSION; i) {int ioffset scale * i;for(int j 0; j MAX_DIMENSION; j) {int joffset scale * j;uint8_t data inoise8(x ioffset,y joffset,z);// The range of the inoise8 function is roughly 16-238.// These two operations expand those values out to roughly 0..255// You can comment them out if you want the raw noise data.data qsub8(data,16);data qadd8(data,scale8(data,39));if( dataSmoothing ) {uint8_t olddata noise[i][j];uint8_t newdata scale8( olddata, dataSmoothing) scale8( data, 256 - dataSmoothing);data newdata;}noise[i][j] data;}}z speed;// apply slow drift to X and Y, just for visual variation.x speed / 8;y - speed / 16;
}void mapNoiseToLEDsUsingPalette()
{static uint8_t ihue0;for(int i 0; i kMatrixWidth; i) {for(int j 0; j kMatrixHeight; j) {// We use the value at the (i,j) coordinate in the noise// array for our brightness, and the flipped value from (j,i)// for our pixels index into the color palette.uint8_t index noise[j][i];uint8_t bri noise[i][j];// if this palette is a loop, add a slowly-changing base valueif( colorLoop) { index ihue;}// brighten up, as the color palette itself often contains the // light/dark dynamic range desiredif( bri 127 ) {bri 255;} else {bri dim8_raw( bri * 2);}CRGB color ColorFromPalette( currentPalette, index, bri);leds[XY(i,j)] color;}}ihue1;
}void loop() {// Periodically choose a new palette, speed, and scaleChangePaletteAndSettingsPeriodically();// generate noise datafillnoise8();// convert the noise data to colors in the LED array// using the current palettemapNoiseToLEDsUsingPalette();FastLED.show();// delay(10);
}#define HOLD_PALETTES_X_TIMES_AS_LONG 1void ChangePaletteAndSettingsPeriodically()
{uint8_t secondHand ((millis() / 1000) / HOLD_PALETTES_X_TIMES_AS_LONG) % 60;static uint8_t lastSecond 99;if( lastSecond ! secondHand) {lastSecond secondHand;if( secondHand 0) { currentPalette RainbowColors_p; speed 20; scale 30; colorLoop 1; }if( secondHand 5) { SetupPurpleAndGreenPalette(); speed 10; scale 50; colorLoop 1; }if( secondHand 10) { SetupBlackAndWhiteStripedPalette(); speed 20; scale 30; colorLoop 1; }if( secondHand 15) { currentPalette ForestColors_p; speed 8; scale 120; colorLoop 0; }if( secondHand 20) { currentPalette CloudColors_p; speed 4; scale 30; colorLoop 0; }if( secondHand 25) { currentPalette LavaColors_p; speed 8; scale 50; colorLoop 0; }if( secondHand 30) { currentPalette OceanColors_p; speed 20; scale 90; colorLoop 0; }if( secondHand 35) { currentPalette PartyColors_p; speed 20; scale 30; colorLoop 1; }if( secondHand 40) { SetupRandomPalette(); speed 20; scale 20; colorLoop 1; }if( secondHand 45) { SetupRandomPalette(); speed 50; scale 50; colorLoop 1; }if( secondHand 50) { SetupRandomPalette(); speed 90; scale 90; colorLoop 1; }if( secondHand 55) { currentPalette RainbowStripeColors_p; speed 30; scale 20; colorLoop 1; }}
}// This function generates a random palette thats a gradient
// between four different colors. The first is a dim hue, the second is
// a bright hue, the third is a bright pastel, and the last is
// another bright hue. This gives some visual bright/dark variation
// which is more interesting than just a gradient of different hues.
void SetupRandomPalette()
{currentPalette CRGBPalette16( CHSV( random8(), 255, 32), CHSV( random8(), 255, 255), CHSV( random8(), 128, 255), CHSV( random8(), 255, 255));
}// This function sets up a palette of black and white stripes,
// using code. Since the palette is effectively an array of
// sixteen CRGB colors, the various fill_* functions can be used
// to set them up.
void SetupBlackAndWhiteStripedPalette()
{// black out all 16 palette entries...fill_solid( currentPalette, 16, CRGB::Black);// and set every fourth one to white.currentPalette[0] CRGB::White;currentPalette[4] CRGB::White;currentPalette[8] CRGB::White;currentPalette[12] CRGB::White;}// This function sets up a palette of purple and green stripes.
void SetupPurpleAndGreenPalette()
{CRGB purple CHSV( HUE_PURPLE, 255, 255);CRGB green CHSV( HUE_GREEN, 255, 255);CRGB black CRGB::Black;currentPalette CRGBPalette16( green, green, black, black,purple, purple, black, black,green, green, black, black,purple, purple, black, black );
}//
// Marks xy coordinate mapping code. See the XYMatrix for more information on it.
//
uint16_t XY( uint8_t x, uint8_t y)
{uint16_t i;if( kMatrixSerpentineLayout false) {i (y * kMatrixWidth) x;}if( kMatrixSerpentineLayout true) {if( y 0x01) {// Odd rows run backwardsuint8_t reverseX (kMatrixWidth - 1) - x;i (y * kMatrixWidth) reverseX;} else {// Even rows run forwardsi (y * kMatrixWidth) x;}}return i;
}实验的视频记录
https://v.youku.com/v_show/id_XNTg4NjQyMzE4OA.html?spma2hcb.playlsit.page.1 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验二百一十六WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块 实验程序十八三速七彩风火轮
Arduino实验开源代码
/*【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程实验二百一十六WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块实验程序十八三速七彩风火轮
*/#include Adafruit_NeoPixel.h
#define LED_PIN 6
#define LED_COUNT 24Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB NEO_KHZ800);void setup() {strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)strip.show(); // Turn OFF all pixels ASAPstrip.setBrightness(30); // Set BRIGHTNESS to about 1/5 (max 255)
}void loop() {theaterChaseTwo(strip.Color(127, 127, 127), 100); // set brightness to 100theaterChaseTwo(strip.Color(255, 255, 0), 100); theaterChaseTwo(strip.Color(127, 0, 0), 100); theaterChaseTwo(strip.Color(0, 255, 0), 100); theaterChaseTwo(strip.Color(0, 0, 127), 100); theaterChaseTwo(strip.Color(143, 0, 255), 100); theaterChase(strip.Color(127, 127, 127), 50); // 50 half brightnesstheaterChase(strip.Color(255, 255, 0), 50); theaterChase(strip.Color(127, 0, 0), 50); theaterChase(strip.Color( 0, 255, 0), 50); theaterChase(strip.Color( 0, 0, 127), 50); theaterChase(strip.Color(143, 0, 255), 50); theaterChase(strip.Color(127, 127, 127), 25); // set brightness to 25theaterChase(strip.Color(255, 255, 0), 25); theaterChase(strip.Color(127, 0, 0), 25); theaterChase(strip.Color( 0, 255, 0), 25); theaterChase(strip.Color( 0, 0, 127), 25); theaterChase(strip.Color(143, 0, 255), 25); }void theaterChase(uint32_t color, int wait) {for(int a0; a10; a) { for(int b0; b3; b) { strip.clear(); for(int cb; cstrip.numPixels(); c 3) {strip.setPixelColor(c, color); }strip.show(); delay(wait); }}}void theaterChaseTwo(uint32_t color, int wait) {for(int a0; a5; a) { for(int b0; b4; b) { strip.clear(); for(int cb; cstrip.numPixels(); c 3) {strip.setPixelColor(c, color); }strip.show();delay(wait); }}}void theaterChaseThree(uint32_t color, int wait) {for(int a0; a10; a) { for(int b0; b2; b) { strip.clear(); for(int cb; cstrip.numPixels(); c 3) {strip.setPixelColor(c, color); }strip.show(); delay(wait); }}}Arduino实验场景图