Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define PINS 6
- #define PATTERNS 5
- #define UNDER 1
- #define OVER 0
- #define SW 12
- #define OUT 1
- #define IN 0
- int ledPin[PINS] = {2, 3, 4, 5, 6, 7};
- int waveCount = 0;
- int waveDirection = 1;
- int spreadCount = 0;
- int nowPattern = 0;
- void AllLedOff(){
- for(int i = 2; i < 8; i++){
- digitalWrite(i, LOW);
- }
- }
- int CheckUsed(int *used, int number, int n){
- for(int i = 0; i < n; i++){
- if(used[i] == number){
- return 0;
- }
- }
- return 1;
- }
- void PatternWave(int startPosition, int delayTime, int pins, int *pin, int *count, int *direction){
- if(startPosition){
- for(int i = 0; i < *count; i++){
- digitalWrite(pin[i], HIGH);
- }
- for(int i = *count; i < pins; i++){
- digitalWrite(pin[i], LOW);
- }
- }else{
- for(int i = 0; i < *count; i++){
- digitalWrite(pin[i], LOW);
- }
- for(int i = *count; i < pins; i++){
- digitalWrite(pin[i], HIGH);
- }
- }
- if(*direction){
- *count += 1;
- if(*count > pins){
- *direction = 0;
- *count = pins;
- }
- }else{
- *count -= 1;
- if(*count < 0){
- *direction = 1;
- *count = 0;
- }
- }
- delay(delayTime);
- }
- void PatternSpread(int direction, int interval, int delayTime, int pins, int *pin, int *count){
- // AllLedOff(pins, pin);
- for(int i = *count; i >= 0; i -= interval){
- digitalWrite(pin[pins/2-i], HIGH);
- digitalWrite(pin[pins/2+i], HIGH);
- }
- if(direction){
- *count += 1;
- if(*count > pins/2){
- *count -= interval;
- }
- }else{
- *count -= 1;
- if(*count < 1){
- *count += interval;
- }
- }
- delay(delayTime);
- }
- void PatternRandom(int n, int delayTime, int pins, int *pin){
- // AllLedOff(pins, pin);
- int used[100];
- for(int i = 0; i < n && i < pins; i++){
- while(1){
- used[i] = random(32767)%pins;
- if(CheckUsed(used, used[i], i)){
- break;
- }
- }
- digitalWrite(pin[used[i]], HIGH);
- }
- delay(delayTime);
- }
- void SelectPattern(int pattern){
- switch(pattern){
- case 0:
- PatternWave(UNDER, 60/2, PINS, ledPin, &waveCount, &waveDirection);
- break;
- case 1:
- PatternWave(OVER, 60/2, PINS, ledPin, &waveCount, &waveDirection);
- break;
- case 2:
- PatternSpread(IN, 3, 80/2, PINS, ledPin, &spreadCount);
- break;
- case 3:
- PatternSpread(OUT, 3, 80/2, PINS, ledPin, &spreadCount);
- break;
- case 4:
- PatternRandom(2, 200/2, PINS, ledPin);
- break;
- }
- }
- void Led(){
- digitalWrite(7,HIGH);
- delay(50);
- digitalWrite(6,HIGH);
- delay(50);
- digitalWrite(5,HIGH);
- delay(50);
- digitalWrite(4,HIGH);
- delay(50);
- digitalWrite(3,HIGH);
- delay(50);
- digitalWrite(2,HIGH);
- delay(50);
- }
- int led1,led2,led3,led4,led5,led6;
- void setup() {
- for(int i = 0; i < PINS; i++){
- pinMode(ledPin[i], OUTPUT);
- }
- //pinMode(SW, INPUT);
- //randomSeed(analogRead(0));
- for(int i = 13; i < 20; i++){
- pinMode(i, INPUT_PULLUP);
- }
- Led();
- AllLedOff();
- Led();
- AllLedOff();
- Led();
- AllLedOff();
- }
- void loop() {
- if(digitalRead(14)==LOW){
- led1 = !led1;
- delay(100);
- while(digitalRead(14)==LOW){}
- }
- if(digitalRead(15)==LOW){
- led2 = !led2;
- delay(100);
- while(digitalRead(15)==LOW){}
- }
- if(digitalRead(16)==LOW){
- led3 = !led3;
- delay(100);
- while(digitalRead(16)==LOW){}
- }
- if(digitalRead(17)==LOW){
- led4 = !led4;
- delay(100);
- while(digitalRead(17)==LOW){}
- }
- if(digitalRead(18)==LOW){
- led5 = !led5;
- delay(100);
- while(digitalRead(18)==LOW){}
- }
- if(digitalRead(19)==LOW){
- led6 = !led6;
- delay(100);
- while(digitalRead(19)==LOW){}
- }
- if(led1 == 1){digitalWrite(7,HIGH);}
- if(led2 == 1){digitalWrite(6,HIGH);}
- if(led3 == 1){digitalWrite(5,HIGH);}
- if(led4 == 1){digitalWrite(4,HIGH);}
- if(led5 == 1){digitalWrite(3,HIGH);}
- if(led6 == 1){digitalWrite(2,HIGH);}
- if(led1 == 0){digitalWrite(7,LOW);}
- if(led2 == 0){digitalWrite(6,LOW);}
- if(led3 == 0){digitalWrite(5,LOW);}
- if(led4 == 0){digitalWrite(4,LOW);}
- if(led5 == 0){digitalWrite(3,LOW);}
- if(led6 == 0){digitalWrite(2,LOW);}
- delay(50);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement