// Lightbox by Ralph Zoontjens 2018 //import cc.arduino.*; //Arduino arduino; //Global variables int btnPin1 = 2; int btnPin2 = 4; int btnPin3 = 7; int btnPin4 = 8; int btnPin5 = 12; int btnPin6 = 13; int ledPin1 = 3; int ledPin2 = 5; int ledPin3 = 6; int ledPin4 = 9; int ledPin5 = 10; int ledPin6 = 11; int LED1 = 0; int LED2 = 50; int LED3 = 100; int LED4 = 150; int LED5 = 200; int LED6 = 250; bool pinState1 = false; bool pinState2 = false; bool pinState3 = false; bool pinState4 = false; bool pinState5 = false; bool pinState6 = false; bool btnState1 = false; bool btnState2 = false; bool btnState3 = false; bool btnState4 = false; bool btnState5 = false; bool btnState6 = false; //set direction of fading LED boolean ledDir1 = true; boolean ledDir2 = true; boolean ledDir3 = true; boolean ledDir4 = true; boolean ledDir5 = true; boolean ledDir6 = true; //attack-decay effect int attack = 3; int decay = 1; int timer = 0; // the setup function runs once when you press reset or power the board void setup() { pinMode(2, INPUT); pinMode(4, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); pinMode(12, INPUT); pinMode(13, INPUT); //PWM pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); //Startup routine for (timer == 0; timer <750; timer++){ // check if fading directions need to change if (ledDir1 && LED1 > 250){ ledDir1 = false; } else if (ledDir1 == false && LED1 < 10){ ledDir1 = true; } if (ledDir2 && LED2 > 250){ ledDir2 = false; } else if (ledDir2 == false && LED2 < 10){ ledDir2 = true; } if (ledDir3 && LED3 > 250){ ledDir3 = false; } else if (ledDir3 == false && LED3 < 10){ ledDir3 = true; } if (ledDir4 && LED4 > 250){ ledDir4 = false; } else if (ledDir4 == false && LED4 < 10){ ledDir4 = true; } if (ledDir5 && LED5 > 250){ ledDir5 = false; } else if (ledDir5 == false && LED5 < 10){ ledDir5 = true; } if (ledDir6 && LED6 > 250){ ledDir6 = false; } else if (ledDir6 == false && LED6 < 10){ ledDir6 = true; } //update LEDs if(ledDir1){ LED1 += attack; }else{ LED1 -= decay; } if(ledDir2){ LED2 += attack; }else{ LED2 -= decay; } if(ledDir3){ LED3 += attack; }else{ LED3 -= decay; } if(ledDir4){ LED4 += attack; }else{ LED4 -= decay; } if(ledDir5){ LED5 += attack; }else{ LED5 -= decay; } if(ledDir6){ LED6 += attack; }else{ LED6 -= decay; } //activate LEDs analogWrite (ledPin1, LED1); analogWrite (ledPin2, LED2); analogWrite (ledPin3, LED3); analogWrite (ledPin4, LED4); analogWrite (ledPin5, LED5); analogWrite (ledPin6, LED6); //update timer timer += 1; delay(10); } while (LED1 > decay || LED2 > decay || LED3 > decay || LED4 > decay || LED5 > decay || LED6 > decay){ if (LED1 > decay){ LED1-= decay; } if (LED2 > decay){ LED2-= decay; } if (LED3 > decay){ LED3-= decay; } if (LED4 > decay){ LED4-= decay; } if (LED5 > decay){ LED5 -= decay; } if (LED6 > decay){ LED6 -= decay; } analogWrite (ledPin1, LED1); analogWrite (ledPin2, LED2); analogWrite (ledPin3, LED3); analogWrite (ledPin4, LED4); analogWrite (ledPin5, LED5); analogWrite (ledPin6, LED6); delay(15); } LED1 = 0; LED2 = 0; LED3 = 0; LED4 = 0; LED5 = 0; LED6 = 0; } // the loop function runs over and over again forever void loop() { //read pins pinState1 = digitalRead(btnPin1); pinState2 = digitalRead(btnPin2); pinState3 = digitalRead(btnPin3); pinState4 = digitalRead(btnPin4); pinState5 = digitalRead(btnPin5); pinState6 = digitalRead(btnPin6); if (pinState1){ if (!btnState1){ // button1 is pressed btnState1 = true; for (int i = 0; i < 80 ;i++){ LED1++; delay(10); analogWrite(ledPin1, LED1); } if (LED1 > 255){ LED1 = 0; analogWrite(ledPin1, LED1); } } } else { btnState1 = false; } if (pinState2){ if (!btnState2){ // button 2 is pressed btnState2 = true; for (int i = 0; i < 80 ;i++){ LED2++; delay(10); analogWrite(ledPin2, LED2); } if (LED2 > 255){ LED2 = 0; analogWrite(ledPin2, LED2); } } } else { btnState2 = false; } if (pinState3){ if (!btnState3){ // button 3 is pressed btnState3 = true; for (int i = 0; i < 80 ;i++){ LED3++; delay(10); analogWrite(ledPin3, LED3); } if (LED3 > 255){ LED3 = 0; analogWrite(ledPin3, LED3); } } } else { btnState3 = false; } if (pinState4){ if (!btnState4){ // button 4 is pressed btnState4 = true; for (int i = 0; i < 80 ;i++){ LED4++; delay(10); analogWrite(ledPin4, LED4); } if (LED4 > 255){ LED4 = 0; analogWrite(ledPin4, LED4); } } } else { btnState4 = false; } if (pinState5){ if (!btnState5){ // button 5 is pressed btnState5 = true; for (int i = 0; i < 80 ;i++){ LED5++; delay(10); analogWrite(ledPin5, LED5); } if (LED5 > 255){ LED5 = 0; analogWrite(ledPin5, LED5); } } } else { btnState5 = false; } if (pinState6){ if (!btnState6){ // button 6 is pressed btnState6 = true; for (int i = 0; i < 80 ;i++){ LED6++; delay(10); analogWrite(ledPin6, LED6); } if (LED6 > 255){ LED6 = 0; analogWrite(ledPin6, LED6); } } } else { btnState1 = false; } delay(100); // wait (10 readings per second) }