BASIC4MCU | 질문게시판 | LED 큐브 (LED CUBE) 4*4*4 코딩 ㅠㅠㅠ(초음파센서, 피에조 부저, 터치센서 이용) 부탁드립니다 ㅠ
페이지 정보
작성자 코알못 작성일2019-06-11 20:17 조회4,260회 댓글0건본문
LED 큐브 4*4*4 를 제작하고 있습니다. 초음파센서를 이용해 LED큐브의 void randomRain() 의 속도를 조절하고 (거리가 가까워질 수록 LED 큐브가 깜빡이는 속도 증가) 거리가 최소가 되면 (10cm 이하정도) 피에조 부저를 울리게 한 뒤 터치 센서로 LED 큐브를 끄게 하는 코딩을 제작하는 중입니다. 어떻게 수정하면 코딩을 완성할 수 있을까요? 현재 터치센서를 제외하고 한 결과 입니다. 터치센서도 어떻게 넣어야 할지 알려주세요 ㅠㅠ 그리고 LED 큐브 제작할 대 시프트 레지스터도 사용했습니다 !
//initializing and declaring led rows
int column[3]={8,12,11};
//initializing and declaring led layers
#define TRIG 6
#define ECHO 7
int layer[4]={2,3,4,5};
int latchPin = 8; //12
int clockPin = 12; //11
int dataPin = 11; //14
int time = 250;
int layer1 = 2;
int layer2 = 3;
int layer3 = 4;
int layer4 = 5;
int distance = 250;
byte data[] = {
0b11111111, 0b11111111,
0b10000000, 0b00000000,
0b11000000, 0b00000000,
0b11100000, 0b00000000,
0b11110000, 0b00000000,
0b11111000, 0b00000000,
0b11111100, 0b00000000,
0b11111110, 0b00000000,
0b11111111, 0b00000000,
0b11111111, 0b10000000,
0b11111111, 0b11000000,
0b11111111, 0b11100000,
0b11111111, 0b11110000,
0b11111111, 0b11111000,
0b11111111, 0b11111100,
0b11111111, 0b11111110,
0b11111111, 0b11111111
};
void _595_out1(){
digitalWrite(layer1 , 1);
digitalWrite(layer2 , 1);
digitalWrite(layer3 , 1);
digitalWrite(layer4 , 1);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, data[0]);
shiftOut(dataPin, clockPin, MSBFIRST, data[1]);
digitalWrite(latchPin, HIGH);
}
void _595_out2(){
digitalWrite(layer1 , 0);
digitalWrite(layer2 , 0);
digitalWrite(layer3 , 0);
digitalWrite(layer4 , 0);
//digitalWrite(latchPin, LOW);
for ( int i = 2; i<=33; i=i+2)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, data[0]);
shiftOut(dataPin, clockPin, MSBFIRST, data[i+1]);
delay(1000);
digitalWrite(layer4, 1);
digitalWrite(latchPin, HIGH);
}
//digitalWrite(latchPin, HIGH);
}
void setup() {
randomSeed(analogRead(10));
// put your setup code here, to run once:
pinMode(latchPin, OUTPUT); //레취 출력
pinMode(clockPin, OUTPUT); //클락 출력
pinMode(dataPin, OUTPUT); //데이타출력
pinMode(layer1, OUTPUT); //1층
pinMode(layer2, OUTPUT); //2층
pinMode(layer3, OUTPUT); //3층
pinMode(layer4, OUTPUT); //4층
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop()
{
turnEverythingOff();//turn all off
randomRain();
delay(time);
digitalWrite(TRIG,LOW);
delayMicroseconds(2);
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG,LOW);
tone(9,1000,20);
delay(100);
tone(9,1000,20);
delay(distance);
}
//random rain
void randomRain()
{
turnEverythingOff();
int x = 100;
for(int i = 0; i!=60; i+=2)
{
digitalWrite(layer[0], 1);
delay(100);
digitalWrite(layer[0], 0);
digitalWrite(layer[1], 1);
delay(100);
digitalWrite(layer[1], 0);
digitalWrite(layer[2], 1);
delay(100);
digitalWrite(layer[2], 0);
digitalWrite(layer[3], 1);
delay(100);
digitalWrite(layer[3], 0);
}
}
void turnEverythingOff()
{
for(int i = 0; i<16; i++)
{
digitalWrite(column[i], 1);
}
for(int i = 0; i<4; i++)
{
digitalWrite(layer[i], 1);
}
}
댓글 0
조회수 4,260등록된 댓글이 없습니다.