自制电子色子-Arduino中文社区 - Powered by Discuz! Archiver

henrypcw 发表于 2016-3-7 12:09

自制电子色子

本帖最后由 henrypcw 于 2016-3-7 12:12 编辑

闲来无事做了一个电子色子, 和女儿一起玩飞行棋.http://player.youku.com/player.php/sid/XMTQ5MjQ2MTUwNA==/v.swf
所需材料如下:
1. arduino pro mini一块
2. 倾斜开关             一个
3. 蜂鸣器               一个
4. ws2812 LED灯   九颗










#include <FastLED.h>

//LED数量
#define NUM_LEDS 9
//ws2812的数据针脚
#define PIN 6
//蜂鸣器针脚
#define BeepPin 4
//倾斜开关针脚
#define inPin 9

CRGB leds;
CRGB Dice={{CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Red,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Black},
{CRGB::Aqua,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Aqua},
{CRGB::LimeGreen,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::LimeGreen,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::LimeGreen},
{CRGB::Black,CRGB::Blue,CRGB::Black,CRGB::Blue,CRGB::Black,CRGB::Blue,CRGB::Black,CRGB::Blue,CRGB::Black},
{CRGB::Black,CRGB::Green,CRGB::Black,CRGB::Green,CRGB::Green,CRGB::Green,CRGB::Black,CRGB::Green,CRGB::Black},
{CRGB::Orange,CRGB::Orange,CRGB::Orange,CRGB::Black,CRGB::Black,CRGB::Black,CRGB::Orange,CRGB::Orange,CRGB::Orange}};
boolean bb=false;
boolean AA=false;
int count=0;
int AC=0;
static unsigned longprintTime=0;
char r=0;
int runLen=0;

void setup(){
pinMode(inPin, INPUT);
pinMode(BeepPin, OUTPUT);
FastLED.addLeds<WS2812B, PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(20);
randomSeed(analogRead(A0)+millis());
printTime=getTick(0,true);
}
void setAll(int rc,int gc,int bc){
for(int i = 0 ; i < NUM_LEDS; i++ ){
    if(rc>=0) leds.r=rc;
    if(gc>=0) leds.g=gc;
    if(bc>=0) leds.b=bc;
}
FastLED.show();
}
void setI(int i,int rc,int gc,int bc){
if(i<0||i>=NUM_LEDS) return;
if(rc>=0) leds.r=rc;
if(gc>=0) leds.g=gc;
if(bc>=0) leds.b=bc;
}
void setICRGB(int i,CRGB cr){
if(i<0||i>=NUM_LEDS) return;
leds=cr;
}
void setAllCRGB(CRGB cr){
for(int i = 0 ; i < NUM_LEDS; i++ ){
    leds=cr;
}
FastLED.show();
}
void setAllList(CRGB *cr){
for(int i = 0 ; i < NUM_LEDS; i++ ){
    leds=cr;
}
FastLED.show();
}
void loop() {
if(count>1){
    AA=true;
    printTime=getTick(0,true);
    count=0;
}else{
    if(digitalRead(inPin)==HIGH&&!bb&&!AA){
      count++;
      bb=true;
    }else if(digitalRead(inPin)==LOW)
      bb=false;
}
if(AA&&getTick(printTime,false)>120){
    runLen=0;
do{
    runLen+=random(50)+random(runLen);
    r=random(6);
    setAllList(Dice);
    if(runLen<500) delay(runLen);
}while(runLen<500);
beep(r);
    AA=false;
    count=0;
    bb=false;
}
}
void beep(char c){
switch(c){
    case 0:
      beep_short(1,50,50);
    break;
    case 1:
      beep_short(2,200,20);
      break;
    case 2:
      beep_short(3,200,20);
      break;
    case 3:
      beep_short(4,100,20);
      break;
    case 4:
      beep_short(5,100,20);
      break;
    case 5:
      beep_short(1,100,200);
      break;
}
}
void beep_short(int n,int len,int l){
for(int j=0;j<n;j++){
    for(int i=0;i<2;i++){
      digitalWrite(BeepPin, HIGH);
      delay(l);
      digitalWrite(BeepPin, LOW);
      delay(l);
    }
    delay(len);
}
}
unsigned long getTick(unsigned long pMMillis,boolean getNow) {
if(getNow) return millis();
unsigned long currentMillis = millis();
if(currentMillis < pMMillis) {
    return (currentMillis+(4294967295 - pMMillis + 1));
}else
    return (currentMillis-pMMillis);
}


jackywgl 发表于 2016-6-2 18:40

henrypcw 发表于 2016-5-30 15:11
现在工作比较忙,没时间整理呢.

电路很简单,你看看图片和程序里的脚位定义来焊接就行 ...

麻烦请教一下,焊接用到的是什么线呢,还有如果接好电路之后的话该怎么连接电源?抱歉打扰了

linshengsheng 发表于 2016-3-10 14:02

好赞啊:D

jackywgl 发表于 2016-5-30 12:06

楼主求详细教程谢谢!做的超棒

henrypcw 发表于 2016-5-30 15:11

jackywgl 发表于 2016-5-30 12:06
楼主求详细教程谢谢!做的超棒

现在工作比较忙,没时间整理呢.

电路很简单,你看看图片和程序里的脚位定义来焊接就行

jackywgl 发表于 2016-6-2 18:37

henrypcw 发表于 2016-5-30 15:11
现在工作比较忙,没时间整理呢.

电路很简单,你看看图片和程序里的脚位定义来焊接就行 ...

求楼主帮个忙:'(感激不尽    我是高中学生 有通技课作业 自己看不懂代码 ...靠4张图好像无法完成这个项目,您能稍微给点补充提示啊或者其他的图片之类的吗?谢谢了,抱歉您在百忙之中还要抽空来回答

jackywgl 发表于 2016-6-13 10:29

楼主 我没有fast LED.h的文件 做不了啊 求这个文件

henrypcw 发表于 2016-6-14 10:32

jackywgl 发表于 2016-6-13 10:29
楼主 我没有fast LED.h的文件 做不了啊 求这个文件

fast LED库下载这附件,放到arduinoSRC/libraries目录





页: [1]
查看完整版本: 自制电子色子