#include <Adafruit_NeoPixel.h>
#include <Wire.h>
const byte DS1307 = 0x68;
const byte NumberOfFields = 7;
int ss, mm, hh, d, w, m, y, an;
byte R, G, B, a, s;
#define PIN 13
Adafruit_NeoPixel strip = Adafruit_NeoPixel(149, PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
Wire.begin();
//setTime(22, 46, 00, 1, 23, 5, 21); // 12:30:45 CN 08-02-201
Serial.begin(115200);
strip.begin();
strip.show();
}
void loop()
{
for (int i = 0; i < 1536; i++)
{
an = map(analogRead (A1), 0, 1023, 0, 255);
readDS1307();
//digitalClockDisplay();
showRGB(i);
strip.setPixelColor(0, R, G, B);
strip.setPixelColor(1, R, G, B);
strip.setPixelColor(2, R, G, B);
strip.setPixelColor(3, R, G, B);
showRGB((i+an*1)%1536);
strip.setPixelColor(4, R, G, B);
strip.setPixelColor(5, R, G, B);
strip.setPixelColor(6, R, G, B);
strip.setPixelColor(7, R, G, B);
strip.setPixelColor(8, R, G, B);
showRGB((i+an*2)%1536);
strip.setPixelColor(9, R, G, B);
strip.setPixelColor(10, R, G, B);
strip.setPixelColor(11, R, G, B);
strip.setPixelColor(12, R, G, B);
strip.setPixelColor(13, R, G, B);
strip.setPixelColor(14, R, G, B);
showRGB((i+an*3)%1536);
strip.setPixelColor(15, R, G, B);
strip.setPixelColor(16, R, G, B);
strip.setPixelColor(17, R, G, B);
strip.setPixelColor(18, R, G, B);
strip.setPixelColor(19, R, G, B);
strip.setPixelColor(20, R, G, B);
strip.setPixelColor(21, R, G, B);
showRGB((i+an*4)%1536);
strip.setPixelColor(22, R, G, B);
strip.setPixelColor(23, R, G, B);
strip.setPixelColor(24, R, G, B);
strip.setPixelColor(25, R, G, B);
strip.setPixelColor(26, R, G, B);
strip.setPixelColor(27, R, G, B);
strip.setPixelColor(28, R, G, B);
showRGB((i+an*5)%1536);
strip.setPixelColor(29, R, G, B);
strip.setPixelColor(30, R, G, B);
strip.setPixelColor(31, R, G, B);
strip.setPixelColor(32, R, G, B);
strip.setPixelColor(33, R, G, B);
strip.setPixelColor(34, R, G, B);
strip.setPixelColor(35, R, G, B);
showRGB((i+an*6)%1536);
strip.setPixelColor(36, R, G, B);
strip.setPixelColor(37, R, G, B);
strip.setPixelColor(38, R, G, B);
strip.setPixelColor(39, R, G, B);
strip.setPixelColor(40, R, G, B);
strip.setPixelColor(41, R, G, B);
strip.setPixelColor(42, R, G, B);
showRGB((i+an*7)%1536);
strip.setPixelColor(43, R, G, B);
strip.setPixelColor(44, R, G, B);
strip.setPixelColor(45, R, G, B);
strip.setPixelColor(46, R, G, B);
strip.setPixelColor(47, R, G, B);
strip.setPixelColor(48, R, G, B);
strip.setPixelColor(49, R, G, B);
showRGB((i+an*8)%1536);
strip.setPixelColor(50, R, G, B);
strip.setPixelColor(51, R, G, B);
strip.setPixelColor(52, R, G, B);
strip.setPixelColor(53, R, G, B);
strip.setPixelColor(54, R, G, B);
strip.setPixelColor(55, R, G, B);
strip.setPixelColor(56, R, G, B);
showRGB((i+an*9)%1536);
strip.setPixelColor(57, R, G, B);
strip.setPixelColor(58, R, G, B);
strip.setPixelColor(59, R, G, B);
strip.setPixelColor(60, R, G, B);
strip.setPixelColor(61, R, G, B);
strip.setPixelColor(62, R, G, B);
strip.setPixelColor(63, R, G, B);
showRGB((i+an*10)%1536);
strip.setPixelColor(64, R, G, B);
strip.setPixelColor(65, R, G, B);
strip.setPixelColor(66, R, G, B);
strip.setPixelColor(67, R, G, B);
strip.setPixelColor(68, R, G, B);
strip.setPixelColor(69, R, G, B);
strip.setPixelColor(70, R, G, B);
showRGB((i+an*11)%1536);
strip.setPixelColor(71, R, G, B);
strip.setPixelColor(72, R, G, B);
strip.setPixelColor(74, R, G, B);
strip.setPixelColor(76, R, G, B);
strip.setPixelColor(77, R, G, B);
if (millis()%1000 < 500)
{
strip.setPixelColor(73, 255, 255, 255);
strip.setPixelColor(75, 255, 255, 255);
}
else
{
strip.setPixelColor(73, R, G, B);
strip.setPixelColor(75, R, G, B);
}
showRGB((i+an*12)%1536);
strip.setPixelColor(78, R, G, B);
strip.setPixelColor(79, R, G, B);
strip.setPixelColor(80, R, G, B);
strip.setPixelColor(81, R, G, B);
strip.setPixelColor(82, R, G, B);
strip.setPixelColor(83, R, G, B);
strip.setPixelColor(84, R, G, B);
showRGB((i+an*13)%1536);
strip.setPixelColor(85, R, G, B);
strip.setPixelColor(86, R, G, B);
strip.setPixelColor(87, R, G, B);
strip.setPixelColor(88, R, G, B);
strip.setPixelColor(89, R, G, B);
strip.setPixelColor(90, R, G, B);
strip.setPixelColor(91, R, G, B);
showRGB((i+an*14)%1536);
strip.setPixelColor(92, R, G, B);
strip.setPixelColor(93, R, G, B);
strip.setPixelColor(94, R, G, B);
strip.setPixelColor(95, R, G, B);
strip.setPixelColor(96, R, G, B);
strip.setPixelColor(97, R, G, B);
strip.setPixelColor(98, R, G, B);
showRGB((i+an*15)%1536);
strip.setPixelColor(99, R, G, B);
strip.setPixelColor(100, R, G, B);
strip.setPixelColor(101, R, G, B);
strip.setPixelColor(102, R, G, B);
strip.setPixelColor(103, R, G, B);
strip.setPixelColor(104, R, G, B);
strip.setPixelColor(105, R, G, B);
showRGB((i+an*16)%1536);
strip.setPixelColor(106, R, G, B);
strip.setPixelColor(107, R, G, B);
strip.setPixelColor(108, R, G, B);
strip.setPixelColor(109, R, G, B);
strip.setPixelColor(110, R, G, B);
strip.setPixelColor(111, R, G, B);
strip.setPixelColor(112, R, G, B);
showRGB((i+an*17)%1536);
strip.setPixelColor(113, R, G, B);
strip.setPixelColor(114, R, G, B);
strip.setPixelColor(115, R, G, B);
strip.setPixelColor(116, R, G, B);
strip.setPixelColor(117, R, G, B);
strip.setPixelColor(118, R, G, B);
strip.setPixelColor(119, R, G, B);
showRGB((i+an*18)%1536);
strip.setPixelColor(120, R, G, B);
strip.setPixelColor(121, R, G, B);
strip.setPixelColor(122, R, G, B);
strip.setPixelColor(123, R, G, B);
strip.setPixelColor(124, R, G, B);
strip.setPixelColor(125, R, G, B);
strip.setPixelColor(126, R, G, B);
showRGB((i+an*19)%1536);
strip.setPixelColor(127, R, G, B);
strip.setPixelColor(128, R, G, B);
strip.setPixelColor(129, R, G, B);
strip.setPixelColor(130, R, G, B);
strip.setPixelColor(131, R, G, B);
strip.setPixelColor(132, R, G, B);
strip.setPixelColor(133, R, G, B);
showRGB((i+an*20)%1536);
strip.setPixelColor(134, R, G, B);
strip.setPixelColor(135, R, G, B);
strip.setPixelColor(136, R, G, B);
strip.setPixelColor(137, R, G, B);
strip.setPixelColor(138, R, G, B);
strip.setPixelColor(139, R, G, B);
showRGB((i+an*21)%1536);
strip.setPixelColor(140, R, G, B);
strip.setPixelColor(141, R, G, B);
strip.setPixelColor(142, R, G, B);
strip.setPixelColor(143, R, G, B);
strip.setPixelColor(144, R, G, B);
showRGB((i+an*22)%1536);
strip.setPixelColor(145, R, G, B);
strip.setPixelColor(146, R, G, B);
strip.setPixelColor(147, R, G, B);
strip.setPixelColor(148, R, G, B);
ra (hh/10, 16);
ra (hh%10, 44);
ra (mm/10, 86);
ra (mm%10, 114);
strip.show();
delayMicroseconds(map(analogRead(A0), 0, 1023, 0, 50000));
}
}void showRGB(int color)
{
if (color <= 255)
{
R = color;
G = 0;
B = 255;
}
else if (color <= 511)
{
R = 255;
G = 0;
B = 511 - color;
}
else if (color <= 767)
{
R = 255;
G = color - 512;
B = 0;
}
else if (color <= 1023)
{
R = 1023 - color;
G = 255;
B = 0;
}
else if (color <= 1279)
{
R = 0;
G = 255;
B = color - 1024;
}
else
{
R = 0;
G = 1535 - color;
B = 255;
}
//for (int j = 0; j < 149; j++)
//strip.setPixelColor(j, R, G, B);
}
void ra (byte t, byte z)
{
switch (t)
{
case 0:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(1 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(3 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 1:
{
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 2:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(3 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 3:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 4:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(1 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 5:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(1 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 6:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(1 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(3 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 7:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 8:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(1 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(3 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
case 9:
{
strip.setPixelColor(0 + z, 255, 255, 255);
strip.setPixelColor(1 + z, 255, 255, 255);
strip.setPixelColor(2 + z, 255, 255, 255);
strip.setPixelColor(4 + z, 255, 255, 255);
strip.setPixelColor(7 + z, 255, 255, 255);
strip.setPixelColor(9 + z, 255, 255, 255);
strip.setPixelColor(11 + z, 255, 255, 255);
strip.setPixelColor(14 + z, 255, 255, 255);
strip.setPixelColor(15 + z, 255, 255, 255);
strip.setPixelColor(16 + z, 255, 255, 255);
strip.setPixelColor(17 + z, 255, 255, 255);
strip.setPixelColor(18 + z, 255, 255, 255);
}; break;
}
}
void readDS1307()
{
Wire.beginTransmission(DS1307); Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(DS1307, NumberOfFields);
ss = bcd2dec(Wire.read() & 0x7f);
mm = bcd2dec(Wire.read());
hh = bcd2dec(Wire.read() & 0x3f);
w = bcd2dec(Wire.read());
d = bcd2dec(Wire.read());
m = bcd2dec(Wire.read());
y = 2000 + bcd2dec(Wire.read());
}
int bcd2dec(byte num) {return ((num/16 * 10) + (num % 16));}
int dec2bcd(byte num) {return ((num/10 * 16) + (num % 10));}
void digitalClockDisplay() {printDigits(hh); Serial.print(":"); printDigits(mm); Serial.print(":"); printDigits(ss); Serial.print(", "); Serial.print(w); Serial.print(", "); Serial.print(d); Serial.print("/"); Serial.print(m); Serial.print("/"); Serial.print(y); Serial.println();}
void printDigits(int digits) {if (digits < 10) Serial.print('0'); Serial.print(digits);}
void setTime(byte hr, byte min, byte sec, byte wd, byte d, byte mth, byte yr) {Wire.beginTransmission(DS1307); Wire.write(byte(0x00)); Wire.write(dec2bcd(sec)); Wire.write(dec2bcd(min)); Wire.write(dec2bcd(hr)); Wire.write(dec2bcd(wd)); Wire.write(dec2bcd(d)); Wire.write(dec2bcd(mth)); Wire.write(dec2bcd(yr)); Wire.endTransmission();}