Code

MAX CODE:

<pre><code> ----------begin_max5_patcher---------- 3978.3oc6c01iiZjD9yy7qfye5NoYmseG3jtOrJIWtUJJaz9hNcJIZD1lwKI XvBvS1MQI+1uF5FOfMuzMSavLIRqlYV.6ppmtqpqtnpp+squZwx3O4mtv5eZ 88VWc0uc8UWUbo7Kbk7+e0hsdeZUnWZwisXU71s9QYKtQbuL+OkUb8W81u7C u9aei0a9v6+tO79xauKwOk+zdYAwQ2k3uJSPJliysfarvX2aIHWGDASQHFg. H2XAov76g.2Br9Q4WSv5BZDu7mdAysou67aCkWOZ+1fnP+rzpWbmW1pOFDso BSPwrBBQK9EjBNgr7uo38YkeUf7K96Wec9Ot4IhVu68u5sJBRPW8AIaro.IF eHJejh4N9fz28pO7tuRMPBwF.HALEHQnzbBQH3IXlz+80u+K9OVu4a4+6a9e Vu5e+9u5sVkJiu9cVe227gu9q+puz50e6eq7yFFD4uJdeTwW.tI7s+mnhZDj bKkK0XoZTAlSraQ60wXXNDULwD5TAyqQ1mNlu0OM0ai+IXNbwoRF7fcoZR.p cIvIma47LRXFxMGEQnVEfRrPborOuyW70rXg0ON.YKx+W3r8IhVl0Rq6aP7P fEZN.4.ECILhRhGpMwaoWzlE2Xs39vXurgIq5LNhf5NN5ZitEwENBFMGFHs0 cfzESExmMXVMRhczcjDBbEFxmEijDjtijPHPZlbdMRRHZORhn1ynQRl1ijHF 5RYjb49rL9Z3GX1Dus9Y9I24G4sLrfNfFDYW8m7hKbs.6H7piT9ScGRKD4wS RoZuxYoYnYmjB0WRYv7YtyNIUeSu.3TO6sEiRoAa9iFrIQwZKhXXgmrTgK4B s0gXykyQQdgihPRz2JjXmFTgrNKDRp1d7wnBYDNajQsWA0gRDxHZ5jw17ABz jDZOTefj5iisOPZIbCwUcTE8vKYgiAzdGkBEOo92Esro8tkscj1VbufbLeSR b7C9+g0CjljwlWIDqflmvIclSOFWP8Xb4lyhozCBMtIglnsPWpQNODZTSBMU WgtTScdHyMs2ZFSWYtTCV7dSlZYNL3A+a23EDcvsfG7Rh3Nwezc+d3O1kS9v FPF8WwEfJPClsHH3hPSmGX7VvFZYD48R4eYdQQ9gGB6NPYbi+WOtE9axE5z7 sxK+7odO3u9Nurrj.9dc7e7uRknpDVyAtv89w2Wd4xqWEvBii1zI3V6o2xGo xex7IJMc2fhH++hhXXb58S+XbRVCDqIJUBOM88rOJHKM6yhwYh39ESxJ+043 0UUMTGZG..aDsRnyonyvqSp2E4648s4Ba38sgomrZd03wZq069oC8LlqVuZA C6CwfhXf1ALfAu0N+0pAtvBWvNqk6u+d+jzld2BZKknBu.kdKQ6YkDP0uG+j iMecePn+CbFq9jpqV3saWkKW2x1VueJt3Kx4fgCNiKtD5vkR7eHn7y+3U8R3 RSFWT1mHLQ8oCNMk+0Du1OIZePAqTZzojkJP4bSao67VI9v4CFk2t56HTrDR w5ILhXZuSESA7QwMgwq9Y+0UM+sHdmeTPzw5YGt8Z+681Glc28wQYoA+pXEP zsMd+6kbXi27f44WkDjuRj7Q1jDrNNJmIpMRje4RxwWsjJdysUElhmHxaWCe X9DLNrzxMS4B49zkdI4CTRsvxQpEYwwg0u0gOWn+8YxauKfu7acTLKdW62LI XyG63ytLleysc8cWbmT9xSh6dWtS.2kuZc8myKLTpJV+q+SdQAa8x7yBDCAH vgaJrD8wzUIwgg0jWwcdng6rlOGek+uDrN6iEDp5jA9iGrqbRzhCixqC13ml U+ZYdaRqekCK8V4R6WJ0guKye6tPtTT+A3ZGbeX3N.7KoxGrbhVU.3wDWppN cU6Z0tdW12paiSXgqx1AO1PmS0q2jstVyZAGVUemQGawqc+ma179Ae9pXmuh +Mk16OW3CtE7ARFL.4RDoRC3YA.gZCfnCEfn.rH04fOK.HXa.D6IBPH7k+Ln 5NgWGgR78Va8Gu7K8S+Y9xPu7cde9cwu7AxsdA22FjY2JjgTypDPrhLCp.lA 6BylZXB2EL4LXXRXaB639LAlPcAStCElJU.cPOSfIXGvzg7hanvDT7Bgu3fI ULdGuxKLsMfYn1ughc0yrKrI4feVY+t.w5X5DanylJQMQjifNnKqYSExQKxb 69JB5QlQXwLkBqxfxeNTIVN+nxiTFoup6Mof4iV6+oJarerT3V019Qf3Aqs4 HeoMOKbmbUqaHY3lijwZjPeV.PstgD3vAHQEhfeVrk1UstgDvSDfPX5yuMjT 7y6V8w3j0cs0jA6KYo4IYXvQ1ybeIqfWcsGkAuSNo0JrXmJOqvqt1rBc33kP 2zw9YGd00tVvOQ7BJBXvEGd0gAdtQy0hjcuYy6C15tvITnvwapySEPZ2n9iu kj7xyqkXeWvg42uYzJMdexpRRIsLaUmWW6mlEDc3cF88O5gY9CpzfktLgspL A5LxDLEYhyIOPUEHfmQlfnJSbF4Arp7.3LxDHfpbA6LxEPkUQomStvQUtfbN 4BUsT3bNYBE4gSG23qJKRaA6IkwramwXSJiwZmwblTFi1NiQlTFC2NiQmTFq AamG3L3jxYvNzKASKm4zNmglVNqCSF3FcU85pI7jLGTEYvSGIfpVYZxlv3kd gGkdHMkHJCOSO0p+Onc1BKxbZBDOCpPYnitY1mH+DHT3rpRyg5Wo4tDQ2QXV zFOf5Wo4Tag7My5iGPsqLILbF0OVfZmpsXDZN1OVzdXjX6NeFF0tKHPDYD7r XTrmRH.oeID.wlpDBnhzKfHz4uvmkncAbScjq9RmmcGDn1kLCAHpUca57n8J nc2UPVyKyl5Umos6vXXEA7RqvfqlpSM8l5Tt5IKESQFf6Bl3JFc+1k7swoV2 5j0fAa5oSDUsC.YttuXQCHDQE0RzfQzidk5Fpp.y1mDYEGY4krdePTr0Z+7R FJ3QShMkU3pK6DPtr2bKB8bzFJyh2rIzegZsDxFYKQhZAqloVpNkwbMOR.qf AAjSYvgu1QPTlgK0N4jFTdcz1faA568nTt4N+bhb63LzkTVTYb7OMUlGSlr7 hd9pzsbZdax8uJMu+pz79qRy6LUZd2mDuM8yaWFGpRdmWUIx8VfJo3Q6pNsl hZhTtRjoZh8kCcmCYPDwoMLbv4SEGKbnP.iRgLhMzgg4HirSaAlO4VU8j8rJ xfMIxfDot9bBY9gEfeXgwqEFa7s1TGGFy1g4R4+zNOzLvawDaJhuiIniMA6d 4gT07FtOOYUOoE6IkyvHYSgnkdCgtXxi9sdIWsGhwdL1LE6gPlmpZ8PvNFOU DEqDQP.kwHvTg.02tbcaLeQ71kAQ9V7wnX9Vm8sJZLQpjJq0bZFblVvGIViW trFjHpeOmtw4QC5h36nJyhCbdoqBBTo+ELpflnAYM9fVGtTFjE6oTYCon2jX S3Mo.mDV3eJdSZba6c.j+Z3saRh2uiOKBnTeOPQ.EYB.U79AnNJ.ncV8MEca swBQS8C4BBGOsfXkpS6QbJZoyq1Jfn3dy38ad72lEcq89mz0EMzfKaPr7TkB 5VFIkihmhwJKfoAXFb64fIMoYeohKcs7Zp21cg9VIdY9V+cHcap0KdQt0tso +ipOesiOITK9s.G80fkwpDJ6KkfxTHXrVCNMLX8gW1jty3v0ryUhUNrZXkri RVLsRADLNIng2hPGc2yppzH6KqH87j1KJA8D0mE643oqOOl9qvwljXq5tjzz oxxn4qhDKsks.qm57qQs.pS8yEPqkVtL.vxwBZ0lOfD6IJDsx.lHZoHOEe.y mjdyXF0scIAQsFPEmwdZZouMh0QDmvRWN1A6Z867Nirkbl5t3jr1ZdMzwewY LULsTbBcIpu1KjfJ7lnW9l6aszqG+.vHhD3gyxrKHj5U4wbwZ0G4K7thuta9 F29WVewayS2A9e7M+61vP1TEOFjc0kbtPPwutHHBGPwTKtmzAgc.eSW3rDQU X3gy5rTS2DUqUSxok0y1f06h4K1HYELSlOtxdUl6g+24p3iUsBOyeSbbmLFw BLSYVa7qvLhxEu94rRkIHUm2wt.Jecx4rP9QLioBJN4sGOMPjxihmyhrFcAz DBJzigZT48sOHh.NEiat0FEcOeihE7NxL7Nxdj4cUaCF44ox3tFfxrFDM5UY LRmRydbQMjd8VEUAsmIkY7vN.c09b7VtCyIrDYFlfR0uzismkBp10DDxAWb5 4N2DTsOmfQhfgdAVcW9gVLfECYwHVLpEiYYCrrQV1DKaJ2VFjuHL1hXQapFv ZI+8Ycj.+kGIqBH.S5Km8Y8UZei8uGkhqS6pbmhcl7pqSSYTeyh1U6klyBYT +imYG6JmjAyBYT6B4WXDjHa6tW7EBJdnUv+DUInZIa.8axDjpMz1KXYC4pcq PQjbtRkuKZYS6yaZ4AjB6Br1jW0zgVLR6i00RstKii009j4lNyhQZe78VpMN Oj4lNxhQ5eNMK0RmGxbSsDFj1GH2BsWQ5OMWNvh6oFqIxFXhXyPPYxnay5op pa5bNFYplphzCSGF8OWG+w+44rO1+WW6spuolLwIaDAJyfoG+UiGKvXCO8CB Dk9hnf1cbTp+GT7H0eIrB733XcJQkFaj1GBpZacqyJu2qS.dcHDnOBAM.gbT fPTWCPHaEHDqVngOJf0meJCOkxfmDkYpPZL1.naAkfpPI3SkRLUfS6yw.o5j 17ijzoSpoSmTSlNolLcRMd5jZ7zI0nQyVEZzrUAUANMw50LfJThZBJo.grM. cnp3BBoYk.v4mxX2yg9GUE2gXDS.uJ4UhIT2nrwRIfRGKk.JYzFmvi13jJFf glvUbpJlEQlX2ETULKhcLAkTYXxPzo20tL.cHJY90DyvIpXIxDSFHpXHhZaJ J02nD0HCSpLuCZDzSESdDSLEmnhIOnQl5ohIOpionTuyHLhLohwUnIlkW3BD sOYBYJJw5iRPSQI69nDvTTxoO8IWSQIbeTxXyHP8QIponTe5SDronTu18L1b OReZtFatGDLJjRkczPLhQBkB1oIHjJ9QfLwJgXUVcGYD8IUVcGYh0mvprlKx HiSvQabBLZiSiTzWPti07AjyXMe.oTHO.lhR85smIlOfXS1q0RcRa7XEinSm TSmNolLcRMY5jZ7zI03oSpUZsKiXoWo2b.zTTpWqhlX8XkbwvD9bBUZYRSrj Rww1YuA9CYJJ0qLYhfh.UJxeFgRpDPNLwTTpWzyDaqGphMYnITmfpXGzDdy. U5MyZLJ06lEMhhqRwiyHJtpXIGZBOoUQjNcJtH62N53XImDGcLrbzQvxoG+J sezqb7wtRQQ611wsx0+90+ev94p1I -----------end_max5_patcher----------- </code></pre>

Arduino code:

#include <FastLED.h>

#define NUM_LEDS 30
#define ledPin0 13
#define ledPin1 12
#define ledPin2 11
#define ledPin3 10
#define ledPin4 9
#define padPin0 2
#define padPin1 3
#define padPin2 4
#define padPin3 5
#define padPin4 6

#define pink 230
#define cyan 130

#define purple 190
#define green 96

#define darkblue 160
#define orange 38

#define seafoam 105
#define red 250

#define pumpkin 20
#define yellow 72

CRGB ledStrip0[NUM_LEDS];
CRGB ledStrip1[NUM_LEDS];
CRGB ledStrip2[NUM_LEDS];
CRGB ledStrip3[NUM_LEDS];
CRGB ledStrip4[NUM_LEDS];

byte curr_v = 255;
int counter = 0;

int padRead0 = HIGH;
int padReadPrev0 = HIGH;
int padHue0 = pink;

int padRead1 = HIGH;
int padReadPrev1 = HIGH;
int padHue1 = purple;

int padRead2 = HIGH;
int padReadPrev2 = HIGH;
int padHue2 = darkblue;

int padRead3 = HIGH;
int padReadPrev3 = HIGH;
int padHue3 = seafoam;

int padRead4 = HIGH;
int padReadPrev4 = HIGH;
int padHue4 = pumpkin;

bool dir = true;

void setup() {
// put your setup code here, to run once:

pinMode(padPin0, INPUT_PULLUP);
pinMode(padPin1, INPUT_PULLUP);
pinMode(padPin2, INPUT_PULLUP);
pinMode(padPin3, INPUT_PULLUP);
pinMode(padPin4, INPUT_PULLUP);
Serial.begin(9600);
FastLED.addLeds<WS2812B, ledPin0, GRB>(ledStrip0, NUM_LEDS);
FastLED.addLeds<WS2812B, ledPin1, GRB>(ledStrip1, NUM_LEDS);
FastLED.addLeds<WS2812B, ledPin2, GRB>(ledStrip2, NUM_LEDS);
FastLED.addLeds<WS2812B, ledPin3, GRB>(ledStrip3, NUM_LEDS);
FastLED.addLeds<WS2812B, ledPin4, GRB>(ledStrip4, NUM_LEDS);
}


void loop() {
// put your main code here, to run repeatedly:

padRead0 = digitalRead(padPin0);
padRead1 = digitalRead(padPin1);
padRead2 = digitalRead(padPin2);
padRead3 = digitalRead(padPin3);
padRead4 = digitalRead(padPin4);

//////// PAD CONTROL //////////////

if (padRead0 == LOW || padRead1 == LOW || padRead2 == LOW || padRead3 == LOW || padRead4 == LOW) {
if (padRead0 == LOW) {
curr_v = 255;
padHue0 = cyan;

if (padRead0 != padReadPrev0) {
if (counter != 0 && (counter % 2 != 0)) {
Serial.println(70);
} else {
Serial.println(60);
}

}
}

if (padRead1 == LOW) {
curr_v = 255;
padHue1 = green;

if (padRead1 != padReadPrev1) {
if (counter != 0 && (counter % 2 != 0)) {
Serial.println(72);
} else {
Serial.println(62);
}
}
}

if (padRead2 == LOW) {
curr_v = 255;
padHue2 = orange;

if (padRead2 != padReadPrev2) {
if (counter != 0 && (counter % 2 != 0)) {
Serial.println(74);
} else {
Serial.println(64);
}
}
}

if (padRead3 == LOW) {
curr_v = 255;
padHue3 = red;

if (padRead3 != padReadPrev3) {
if (counter != 0 && (counter % 2 != 0)) {
Serial.println(75);
} else {
Serial.println(65);
}
}
}

if (padRead4 == LOW) {
curr_v = 255;
padHue4 = yellow;

if (padRead4 != padReadPrev4) {
Serial.println(counter);
counter ++;

}
}

} else {
padHue0 = pink;
padHue1 = purple;
padHue2 = darkblue;
padHue3 = seafoam;
padHue4 = pumpkin;

Serial.println(0);
}

padReadPrev0 = padRead0;
padReadPrev1 = padRead1;
padReadPrev2 = padRead2;
padReadPrev3 = padRead3;
padReadPrev4 = padRead4;

//////// LED CONTROL //////////////

fill_solid(ledStrip0, NUM_LEDS, CHSV(padHue0, 255, curr_v));
fill_solid(ledStrip1, NUM_LEDS, CHSV(padHue1, 255, curr_v));
fill_solid(ledStrip2, NUM_LEDS, CHSV(padHue2, 255, curr_v));
fill_solid(ledStrip3, NUM_LEDS, CHSV(padHue3, 255, curr_v));
fill_solid(ledStrip4, NUM_LEDS, CHSV(padHue4, 255, curr_v));
FastLED.show();

if (dir)
curr_v --;
else
curr_v ++;

if (curr_v == 0)
dir = false;
else if (curr_v == 255)
dir = true;

delay(5);

}