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

来自Microduino Wikipedia
跳转至: 导航搜索
搭建硬件
第7行: 第7行:
  
 
==原理==
 
==原理==
 +
通过Joystick检测摇杆的状态,判断摇杆在哪个方向,然后在控制调节颜色和亮度。
 +
[[File: Joystick_colorled-sch.jpg|600px|center]]
  
 
==设备==
 
==设备==
第13行: 第15行:
 
|模块||数量||功能
 
|模块||数量||功能
 
|-
 
|-
|[[Microduino-CoreUSB/zh]]||1||核心板
+
|[[mCookie-CoreUSB/zh]]||1||核心板
 
|-
 
|-
|[[Microduino-Sensorhub/zh]]||1||传感器转接板
+
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|-
 
|-
| [[Microduino-Colorled/zh]]||1||彩灯
+
| [[Microduino-Color led/zh]]||1||彩灯
 
|-
 
|-
| [[Microduino-Joystick/zh]]||1||摇杆传感器  
+
| [[Microduino-Joystick/zh]]||1||摇杆传感器
 
|-
 
|-
| [[Microduino-BM/zh]]||1||电源管理
+
| [[mCookie-BM/zh]]||1||电源管理
 
|}
 
|}
 
  [[File: Joystick_colorled.jpg|600px|center|thumb]]
 
  [[File: Joystick_colorled.jpg|600px|center|thumb]]
 +
==准备==
 +
*Setup 1:*Setup 1:将Color led背面的'''IN'''和Hub的数字口(D6)接起来,这个就是控制LED的引脚,用户可自己更改。
 +
[[file:mCookie-strandtext-sensor.JPG|600px|center]]
 +
*Setup 2:再将Joystick接到A0/A1接口。
 +
[[file:mCookie-Joystick-led-sensor.JPG|600px|center]]
 +
*Setup 3:将CoreUSB,Hub,Color led,Joystick连接在一起。通过USB数据线将接入电脑。
 +
[[file:mCookie-Joystick led-pc.JPG|600px|center]]
 +
==调试 ==
 +
*打开Arduino IDE,将下列代码复制到IDE中。
 +
<source lang="cpp">
 +
#include <Adafruit_NeoPixel.h>
 +
#define PIN 6
 +
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PIN, NEO_GRB + NEO_KHZ800);
 +
 +
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)
* Setup 1:将CoreUSB接到电脑。打开示例程序,选择好板卡和串口下载程序。
+
  {
[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/Joystick_led Joystick_led]
+
    delay(10);
*Setup 2:将CoreUSB与Sensorhub叠堆。
+
    color_l++;
[[File:CoreUSB_Ble_Sensorhub.jpg|600px|center|thumb]]
+
    if (color_l > 255)
*Setup 3:将彩灯接到Sensorhub的D6引脚上,将Joystick摇杆传感器接到A0、A1引脚上。
+
      color_l = 255;
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
+
  }
[[File:Joystick_colorled_all.jpg|600px|center|thumb]]
+
  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])));
代码说明
+
  /*
* 颜色预设: “color_m[9][3]”:目前有9种颜色,用户可以更改。
+
    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();
 +
  }
 +
}
 +
</source>
 +
*选择正确的板卡和COM端口,编译通过后直接下载。
 +
[[file:upload.JPG|thumb|800px|center]]
 +
==代码说明==
 +
* 颜色预设: “color_m[9][3]”:目前有9种颜色,用户可以更改。颜色数量需要和数组对应,如加了两个颜色,对应改成“color_m[11][3]”。
 
*Joystick控制引脚定义:  
 
*Joystick控制引脚定义:  
 
<source lang="cpp">
 
<source lang="cpp">
第80行: 第182行:
 
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轴方向选择颜色,Y轴方向选择亮度。你也可以通过乐高搭建一个漂亮的外观。
+
在X轴方向摇Joystick选择彩灯颜色,Y轴方向摇Joystick选择彩灯亮度。
  
 
==视频==
 
==视频==
  
 
|}
 
|}

2015年10月28日 (三) 06:44的版本

Language English

目的

通过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:*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 <Adafruit_NeoPixel.h>
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PIN, NEO_GRB + NEO_KHZ800);

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选择彩灯亮度。

视频