“Joystick彩灯”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
代码说明
 
(未显示2个用户的11个中间版本)
第1行: 第1行:
{{Language| Joystick彩灯}}
 
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
第19行: 第18行:
 
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|-
 
|-
| [[Microduino-Color led/zh]]||1||彩灯
+
|[[Microduino-Color led/zh]]||1||彩灯
 
|-
 
|-
| [[Microduino-Joystick/zh]]||1||摇杆传感器
+
|[[Microduino-Joystick/zh]]||1||摇杆传感器
 
|-
 
|-
| [[mCookie-BM/zh]]||1||电源管理
+
|[[mCookie-BM/zh]]||1||电源管理
 
|}
 
|}
  [[File: Joystick_colorled.jpg|600px|center|thumb]]
+
  [[File: Joystick_colorled.jpg|600px|center]]
 
==准备==
 
==准备==
*Setup 1:*Setup 1:将Color led背面的'''IN'''和Hub的数字口(D6)接起来,这个就是控制LED的引脚,用户可自己更改。
+
*Setup 1:将Color led背面的'''IN'''和Hub的数字口(D6)接起来,这个就是控制LED的引脚,用户可自己更改。
 
[[file:mCookie-strandtext-sensor.JPG|600px|center]]
 
[[file:mCookie-strandtext-sensor.JPG|600px|center]]
 
*Setup 2:再将Joystick接到A0/A1接口。
 
*Setup 2:再将Joystick接到A0/A1接口。
第36行: 第35行:
 
*打开Arduino IDE,将下列代码复制到IDE中。
 
*打开Arduino IDE,将下列代码复制到IDE中。
 
<source lang="cpp">
 
<source lang="cpp">
#include <Adafruit_NeoPixel.h>
+
#include <Microduino_ColorLED.h> //引用彩灯库
#define PIN 6
+
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PIN, NEO_GRB + NEO_KHZ800);
+
#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] =
第54行: 第57行:
 
uint32_t color[9] =
 
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)
+
   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)
 
};
 
};
  
第120行: 第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);
第133行: 第146行:
 
     strip.show();
 
     strip.show();
 
   }
 
   }
}
+
}</source>
</source>
 
 
*选择正确的板卡和COM端口,编译通过后直接下载。
 
*选择正确的板卡和COM端口,编译通过后直接下载。
[[file:upload.JPG|thumb|800px|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]”。
第146行: 第161行:
 
*X轴方向选择颜色
 
*X轴方向选择颜色
 
  <source lang="cpp">
 
  <source lang="cpp">
  if (sensorValueY <= 10)
+
if (sensorValueY <= 10)
 
   {
 
   {
 
     delay(500);
 
     delay(500);
第180行: 第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检测摇杆的状态,判断摇杆在哪个方向,然后在控制调节颜色和亮度。

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Hub/zh 1 传感器转接板
Microduino-Color led/zh 1 彩灯
Microduino-Joystick/zh 1 摇杆传感器
mCookie-BM/zh 1 电源管理

准备

  • Setup 1:将Color led背面的IN和Hub的数字口(D6)接起来,这个就是控制LED的引脚,用户可自己更改。
  • Setup 2:再将Joystick接到A0/A1接口。
  • Setup 3:将CoreUSB,Hub,Color led,Joystick连接在一起。通过USB数据线将接入电脑。

调试

  • 打开Arduino IDE,将下列代码复制到IDE中。
#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();
  }
}
  • 选择正确的板卡和COM端口,编译通过后直接下载。
Upload.JPG

代码说明

  • 颜色预设: “color_m[9][3]”:目前有9种颜色,用户可以更改。颜色数量需要和数组对应,如加了两个颜色,对应改成“color_m[11][3]”。
  • Joystick控制引脚定义:
#define JoystickX_PIN A1
#define JoystickY_PIN A0
  • X轴方向选择颜色
 if (sensorValueY <= 10)
  {
    delay(500);
    num++;
    if (num > 8)
      num = 0;
  }
  else if (sensorValueY > 800)
  {
    delay(500);
    num--;
    if (num < 0)
      num = 8;
  }
  • Y轴方向选择亮度
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选择彩灯亮度。

视频