“Joystick彩灯”的版本间的差异
(→代码说明) |
|||
(未显示2个用户的4个中间版本) | |||
第35行: | 第35行: | ||
*打开Arduino IDE,将下列代码复制到IDE中。 | *打开Arduino IDE,将下列代码复制到IDE中。 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | #include < | + | #include <Microduino_ColorLED.h> //引用彩灯库 |
− | #define PIN 6 | + | |
− | + | #define PIN 6 //彩灯引脚 | |
+ | #define NUMPIXELS 6 //级联彩灯数量 | ||
+ | |||
+ | ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号 | ||
+ | |||
uint32_t color_m[9][3] = | uint32_t color_m[9][3] = | ||
第53行: | 第57行: | ||
uint32_t color[9] = | uint32_t color[9] = | ||
{ | { | ||
− | strip.Color(0, 0, 0), | + | strip.Color(0, 0, 0), |
− | strip.Color(255, 0, 0), | + | strip.Color(255, 0, 0), |
− | strip.Color(248, 141, 30), | + | strip.Color(248, 141, 30), |
− | strip.Color(255, 255, 0), | + | strip.Color(255, 255, 0), |
− | strip.Color(0, 255, 0), | + | strip.Color(0, 255, 0), |
− | strip.Color(0, 127, 255), | + | strip.Color(0, 127, 255), |
− | strip.Color(0, 0, 255), | + | strip.Color(0, 0, 255), |
− | strip.Color(139, 0, 255), | + | strip.Color(139, 0, 255), |
− | strip.Color(255, 255, 255) | + | strip.Color(255, 255, 255) |
}; | }; | ||
第127行: | 第131行: | ||
} | } | ||
− | colorWipe(strip.Color(map(color_l, val_min, val_max, 0, color_m[num][0]), map(color_l, val_min, val_max, 0, color_m[num][1]), map(color_l, val_min, val_max, 0, color_m[num][2]))); | + | colorWipe(strip.Color(map(color_l, val_min, val_max, 0, color_m[num][0]), |
+ | map(color_l, val_min, val_max, 0, color_m[num][1]), | ||
+ | map(color_l, val_min, val_max, 0, color_m[num][2]))); | ||
/* | /* | ||
Serial.print(num); | Serial.print(num); | ||
第140行: | 第146行: | ||
strip.show(); | strip.show(); | ||
} | } | ||
− | } | + | }</source> |
− | </source> | ||
*选择正确的板卡和COM端口,编译通过后直接下载。 | *选择正确的板卡和COM端口,编译通过后直接下载。 | ||
[[file:upload.JPG|600px|center]] | [[file:upload.JPG|600px|center]] | ||
+ | [[file:uploadjoystick1.JPG|600px|center]] | ||
+ | [[file:uploadjoystick2.JPG|600px|center]] | ||
+ | |||
==代码说明== | ==代码说明== | ||
* 颜色预设: “color_m[9][3]”:目前有9种颜色,用户可以更改。颜色数量需要和数组对应,如加了两个颜色,对应改成“color_m[11][3]”。 | * 颜色预设: “color_m[9][3]”:目前有9种颜色,用户可以更改。颜色数量需要和数组对应,如加了两个颜色,对应改成“color_m[11][3]”。 | ||
第153行: | 第161行: | ||
*X轴方向选择颜色 | *X轴方向选择颜色 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | if (sensorValueY <= 10) | |
{ | { | ||
delay(500); | delay(500); | ||
第187行: | 第195行: | ||
*彩灯显示 | *彩灯显示 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | colorWipe(strip.Color(map(color_l, val_min, val_max, 0, color_m[num][0]), map(color_l, val_min, val_max, 0, color_m[num][1]), map(color_l, val_min, val_max, 0, color_m[num][2]))); | + | colorWipe(strip.Color(map(color_l, val_min, val_max, 0, color_m[num][0]), |
+ | map(color_l, val_min, val_max, 0, color_m[num][1]), | ||
+ | map(color_l, val_min, val_max, 0, color_m[num][2]))); | ||
</source> | </source> | ||
+ | |||
==结果== | ==结果== | ||
在X轴方向摇Joystick选择彩灯颜色,Y轴方向摇Joystick选择彩灯亮度。 | 在X轴方向摇Joystick选择彩灯颜色,Y轴方向摇Joystick选择彩灯亮度。 |
2017年8月14日 (一) 07:11的最新版本
目的通过Joystick摇杆来控制彩灯的颜色和亮度。 原理通过Joystick检测摇杆的状态,判断摇杆在哪个方向,然后在控制调节颜色和亮度。 设备
准备
调试
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6 //彩灯引脚
#define NUMPIXELS 6 //级联彩灯数量
ColorLED strip = ColorLED(NUMPIXELS, PIN); //将ColorLED类命名为strip,并定义彩灯数量和彩灯引脚号
uint32_t color_m[9][3] =
{
{0, 255, 255},
{255, 0, 0},
{248, 141, 30},
{255, 255, 0},
{0, 255, 0},
{0, 127, 255},
{0, 0, 255},
{139, 0, 255},
{255, 255, 255}
};
uint32_t color[9] =
{
strip.Color(0, 0, 0),
strip.Color(255, 0, 0),
strip.Color(248, 141, 30),
strip.Color(255, 255, 0),
strip.Color(0, 255, 0),
strip.Color(0, 127, 255),
strip.Color(0, 0, 255),
strip.Color(139, 0, 255),
strip.Color(255, 255, 255)
};
#define JoystickX_PIN A1
#define JoystickY_PIN A0
int sensorValueX, sensorValueY;
int num, color_l;
#define val_max 255
#define val_min 0
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
strip.begin();
strip.show(); // Initialize all pixels to 'off'
pinMode(JoystickX_PIN, INPUT);
pinMode(JoystickY_PIN, INPUT);
for (int i = 0; i < 9; i++)
{
colorWipe(color[i]);
delay(300);
}
colorWipe(color[0]);
}
void loop() {
// put your main code here, to run repeatedly:
sensorValueX = analogRead(JoystickX_PIN);
sensorValueY = analogRead(JoystickY_PIN);
if (sensorValueY <= 10)
{
delay(500);
num++;
if (num > 8)
num = 0;
}
else if (sensorValueY > 800)
{
delay(500);
num--;
if (num < 0)
num = 8;
}
if (sensorValueX <= 10)
{
delay(10);
color_l++;
if (color_l > 255)
color_l = 255;
}
else if (sensorValueX > 800)
{
delay(10);
color_l--;
if (color_l < 0)
color_l = 0;
}
colorWipe(strip.Color(map(color_l, val_min, val_max, 0, color_m[num][0]),
map(color_l, val_min, val_max, 0, color_m[num][1]),
map(color_l, val_min, val_max, 0, color_m[num][2])));
/*
Serial.print(num);
Serial.print("\t");
Serial.println(color_l);
*/
}
void colorWipe(uint32_t c) {
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
}
}
代码说明
#define JoystickX_PIN A1
#define JoystickY_PIN A0
if (sensorValueY <= 10)
{
delay(500);
num++;
if (num > 8)
num = 0;
}
else if (sensorValueY > 800)
{
delay(500);
num--;
if (num < 0)
num = 8;
}
if (sensorValueX <= 10)
{
delay(10);
color_l++;
if (color_l > 255)
color_l = 255;
}
else if (sensorValueX > 800)
{
delay(10);
color_l--;
if (color_l < 0)
color_l = 0;
}
colorWipe(strip.Color(map(color_l, val_min, val_max, 0, color_m[num][0]),
map(color_l, val_min, val_max, 0, color_m[num][1]),
map(color_l, val_min, val_max, 0, color_m[num][2])));
结果在X轴方向摇Joystick选择彩灯颜色,Y轴方向摇Joystick选择彩灯亮度。 视频 |