일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 2019 유럽여행
- cf80/2.8
- FujiFilm C200
- 2018 미국출장
- Rollei35s
- Kodak 400TX
- FujiFilm GFX50s
- Kentmere 400
- cf50/4 fle
- SONY A7
- Hasselblad 500cm
- Germany
- M-Rokkor 40/2
- Leica M7
- cs50/2.5
- kodak t-max 400
- ZeissIkon ZI
- Kodak Ektar 100
- Nikon 28Ti
- N80/4
- fujifilm velvia 50
- Minolta CLE
- Contax G2
- GRD2
- Minolta TC-1
- Mamiya 7
- 4870
- Kodak 5222
- Kodak T-Max 100
- G28/2.8
- Today
- Total
J 창고
[Arduino] 74HC595, LED 32개 본문
4개 74HC595 로 32개 LED 컨트롤
대략 물방울 떨어지듯이 내려오는 걸 만드는 중... ㅎㅎ
int dataPin = 2; // Data
int latchPin = 3; // latch
int clockPin = 4; // clock
int num[4] = {0};
void setup(){
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
ani_1();
ani_2();
ani_3();
ani_4();
}
void writeOutput(int no0, int no1, int no2, int no3){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, no0);
shiftOut(dataPin, clockPin, MSBFIRST, no1);
shiftOut(dataPin, clockPin, MSBFIRST, no2);
shiftOut(dataPin, clockPin, MSBFIRST, no3);
digitalWrite(latchPin, HIGH);
}
void ani_1(){
int number[8] = {1,2,4,8,16,32,64,128};
for(int j = 3;j>=0;j--){
for(int i =0;i<8;i++){
num[j] = number[i];
writeOutput(num[0], num[1], num[2], num[3]);
delay(50);
}
num[j] = 0;
writeOutput(num[0], num[1], num[2], num[3]);
}
}
void ani_2(){
int number[8] = {1,2,4,8,16,32,64,128};
for(int j=3;j>=0;j--){
int cal = 0;
for(int i=0;i<8;i++){
cal = cal + number[i];
Serial.println(cal);
num[j] = cal;
writeOutput(num[0], num[1], num[2], num[3]);
delay(50);
}
}
for(int i=0;i<4;i++){
num[i] = 0;
writeOutput(num[0], num[1], num[2], num[3]);
}
}
void ani_3(){
int number_inc[8] = {1,2,4,8,16,32,64,128};
int led_speed = 200;
for(int j=3;j>=0;j--){
int cal = 0;
for(int i=0;i<8;i++){
cal = cal + number_inc[i];
Serial.println(cal);
num[j] = cal;
writeOutput(num[0], num[1], num[2], num[3]);
delay(led_speed);
if(led_speed >50){
led_speed = led_speed - 6;
}
else{
led_speed = 40;
}
}
}
delay(200);
for(int i=0;i<4;i++){
num[i] = 0;
writeOutput(num[0], num[1], num[2], num[3]);
}
delay(1000);
}
void ani_4(){
int number_inc[8] = {1,2,4,8,16,32,64,128};
int del_speed = 80;
for(int j=3;j>=-1;j--){
int cal_inc = 0;
int cal_dec = 255;
for(int i=0;i<8;i++){
cal_inc = cal_inc + number_inc[i];
cal_dec = cal_dec - number_inc[i];
num[j] = cal_inc;
writeOutput(num[0], num[1], num[2], num[3]);
num[j+1] = cal_dec;
writeOutput(num[0], num[1], num[2], num[3]);
delay(del_speed);
del_speed = del_speed - 2;
}
}
for(int i=0;i<4;i++){
num[i] = 0;
writeOutput(num[0], num[1], num[2], num[3]);
}
}