Section 2:
void loop()
{
colorWipe(Color(0,0,0), 50);
//If [1] pressed on remote, pause clock,
//retrieve Yahoo weather RSS, parse for
//weather code, play audio sample, run lights
if (irrecv.decode(&results)) {
if(results.value == 0xFF30CF)
{
connectAndRead(); //connect to the server and read the output
//track000 - track014 are used for clock chimes
byte trackNum = atoi(wCode) + 15;
itoa(trackNum, wCode, 10);
trackName[6] = wCode[0];
trackName[7] = wCode[1];
MP3player.playMP3(trackName);
//Large, extremely gimpy selection routine for selecting
//LED routine based on weather code. Weather code table at:
//http://developer.yahoo.com/weather/#codes
if((trackNum-15 < 5) ||
((trackNum-15 > 36) && (trackNum-15 < 40)))
{
stormLights;
}
else if((trackNum-15 == 5) ||
(trackNum-15 == 6) ||
((trackNum-15 > 7) && (trackNum-15 < 13)) ||
(trackNum-15 == 17) ||
(trackNum-15 == 35) ||
(trackNum-15 == 40) ||
(trackNum-15 == 45) ||
(trackNum-15 == 47))
{
rainLights();
}
else if((trackNum-15 == 7) ||
((trackNum-15 > 12) && (trackNum-15 < 17)) ||
(trackNum-15 == 18) ||
(trackNum-15 == 25) ||
((trackNum-15 > 40) && (trackNum-15 < 44)) ||
(trackNum-15 == 46))
{
snowLights();
}
else if((trackNum-15 == 19) ||
(trackNum-15 == 21) ||
(trackNum-15 == 22) ||
(trackNum-15 == 32) ||
(trackNum-15 == 34) ||
(trackNum-15 == 36))
{
sunLights();
}
else if((trackNum-15 == 20) ||
(trackNum-15 == 23) ||
(trackNum-15 == 24) ||
((trackNum-15 > 25) && (trackNum-15 < 31)) ||
(trackNum-15 == 44))
{
cloudLights();
}
else
{
nightLights();
}
//Reset LEDs, wait 3 secs before next possible
//weather request
colorWipe(Color(0,0,0), 50);
delay(3000);
}
irrecv.resume();
}
else
{
//Clock stuff
//check if MP3player is already playing back
result = MP3player.isPlaying();
//if not playing
if(result == 0)
{
//Get time from RN-XV
strTime = wifly.getTime(buf,sizeof(buf));
Serial.println(strTime);
currentMinute[0] = strTime[3];
currentMinute[1] = strTime[4];
currentMinute[2] = '\0';
//figure out what hour it is, translate
//24 hour clock value to one of 12 MP3 track names
if((currentMinute[0] == '0') && (currentMinute[1] == '0'))
{
if((currentMinute[0] != lastPlayed[0]) || (currentMinute[1] != lastPlayed[1]))
{
currentHour[0] = strTime[0];
currentHour[1] = strTime[1];
currentHour[2] = '\0';
if(atoi(currentHour) < 12)
{
trackName[6] = currentHour[0];
trackName[7] = currentHour[1];
}
else if((atoi(currentHour) >= 12) && (atoi(currentHour) <20))
{
trackName[6] = currentHour[0] - 1;
trackName[7] = currentHour[1] - 2;
}
else if((atoi(currentHour) >= 20) && (atoi(currentHour) <22))
{
trackName[6] = currentHour[0] - 2;
trackName[7] = currentHour[1] + 8;
}
else if((atoi(currentHour) >= 21) && (atoi(currentHour) <24))
{
trackName[6] = currentHour[0] - 1;
trackName[7] = currentHour[1] - 2;
}
lastPlayed[0] = currentMinute[0];
lastPlayed[1] = currentMinute[1];
MP3player.playMP3(trackName);
//TODO: Implement hour chimes/LED routine
threeQuarterHourLights();
}
}
//Quarter hour chime
else if((currentMinute[0] == '1') && (currentMinute[1] == '5'))
{
if((currentMinute[0] != lastPlayed[0]) || (currentMinute[1] != lastPlayed[1]))
{
lastPlayed[0] = currentMinute[0];
lastPlayed[1] = currentMinute[1];
trackName[6] = '1';
trackName[7] = '3';
MP3player.playMP3(trackName);
quarterLights();
}
}
//Half hour chime
else if((currentMinute[0] == '3') && (currentMinute[1] == '0'))
{
if((currentMinute[0] != lastPlayed[0]) || (currentMinute[1] != lastPlayed[1]))
{
lastPlayed[0] = currentMinute[0];
lastPlayed[1] = currentMinute[1];
trackName[6] = '1';
trackName[7] = '2';
MP3player.playMP3(trackName);
halfLights();
}
}
//Three quarter hour chime
else if((currentMinute[0] == '4') && (currentMinute[1] == '5'))
{
if((currentMinute[0] != lastPlayed[0]) || (currentMinute[1] != lastPlayed[1]))
{
lastPlayed[0] = currentMinute[0];
lastPlayed[1] = currentMinute[1];
trackName[6] = '1';
trackName[7] = '4';
MP3player.playMP3(trackName);
threeQuarterLights();
}
}
}
//Wait 1 sec between clock updates
delay(1000);
}
}