can you help me to shorten this code to minimize memory availability?
I am working with a Time Alarm for our school that will alarm (1 hr. every MWF) and (1 hr and 30 mins every TTH) with speaking clock every 30 mins. But the output of the sound of the alarm is a tone and the SD card module use as the storage.
I done compiling it but not yet uploaded it to the arduino. when im compiling it, it is okay but "Low memory available, stability problems may occur." appeard.
I am using:
- DS1307 RTC module for the clock
- Arduino Uno
- SD Card Module as the storage.
this is my code:
#include <TimeAlarms.h>
#include <Time.h>
#include <SD.h>
#include <SPI.h>
#define SD_ChipSelectPin 4
#include <TMRpcm.h>
#include <Wire.h>
#include <DS1307RTC.h>
TMRpcm tmrpcm;
//unsigned long time = 0;
void setup() {
// pinMode (2, OUTPUT);
Serial.begin(9600);
while (!Serial) ;
setSyncProvider(RTC.get);
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
tmrpcm.speakerPin = 9;
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
tmrpcm.volume(1);
tmrpcm.play("att.wav");
Alarm.alarmRepeat(dowMonday,8,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,9,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,10,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,11,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,12,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,1,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,2,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,3,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,4,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,5,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowMonday,6,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,7,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,9,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,10,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,12,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,13,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,14,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,15,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,16,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowTuesday,17,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,8,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,9,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,10,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,11,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,12,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,13,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,14,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,15,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,16,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,17,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowWednesday,18,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,7,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,9,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,10,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,12,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,13,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,14,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,15,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,16,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowThursday,17,30,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,8,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,9,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,10,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,11,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,12,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,13,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,14,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,15,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,16,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,17,0,0,WeeklyAlarm);
Alarm.alarmRepeat(dowFriday,18,0,0,WeeklyAlarm);
Alarm.alarmRepeat(7,30,0,seventhirty);
Alarm.alarmRepeat(8,0,0,eight);
Alarm.alarmRepeat(8,30,0,eightthirty);
Alarm.alarmRepeat(9,0,0,nine);
Alarm.alarmRepeat(9,30,0,ninethirty);
Alarm.alarmRepeat(10,0,0,ten);
Alarm.alarmRepeat(10,30,0,tent);
Alarm.alarmRepeat(11,0,0,eleven);
Alarm.alarmRepeat(11,30,0,elevent);
Alarm.alarmRepeat(12,0,0,twelve);
Alarm.alarmRepeat(13,0,0,one);
Alarm.alarmRepeat(13,30,0,onet);
Alarm.alarmRepeat(14,0,0,two);
Alarm.alarmRepeat(14,30,0,twot);
Alarm.alarmRepeat(15,0,0,three);
Alarm.alarmRepeat(15,30,0,threet);
Alarm.alarmRepeat(16,0,0,four);
Alarm.alarmRepeat(16,30,0,fourt);
Alarm.alarmRepeat(17,0,0,five);
Alarm.alarmRepeat(17,30,0,fivet);
Alarm.alarmRepeat(18,0,0,six);
}
void loop()
{
if (timeStatus() == timeSet) {
digitalClockDisplay();
} else {
Serial.println("The time has not been set. Please run the Time");
Serial.println("TimeRTCSet example, or DS1307RTC SetTime example.");
Serial.println();
delay(4000);
}
delay(1000);
{
digitalClockDisplay();
Alarm.delay(1000);
}}
void digitalClockDisplay(){
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
void WeeklyAlarm(){
tmrpcm.play("open.wav"); }
void seventhirty(){
tmrpcm.play("730.wav"); }
void eight(){
tmrpcm.play("8.wav"); }
void eightthirty(){
tmrpcm.play("830.wav"); }
void nine(){
tmrpcm.play("9.wav"); }
void ninethirty(){
tmrpcm.play("930.wav"); }
void ten(){
tmrpcm.play("10.wav"); }
void tent(){
tmrpcm.play("1030.wav"); }
void eleven(){
tmrpcm.play("11.wav"); }
void elevent(){
tmrpcm.play("1130.wav"); }
void twelve(){
tmrpcm.play("speak 12.wav"); }
void one(){
tmrpcm.play("1.wav"); }
void onet(){
tmrpcm.play("130.wav"); }
void two(){
tmrpcm.play("2.wav"); }
void twot(){
tmrpcm.play("230.wav"); }
void three(){
tmrpcm.play("3.wav"); }
void threet(){
tmrpcm.play("330.wav"); }
void four(){
tmrpcm.play("4.wav"); }
void fourt(){
tmrpcm.play("430.wav"); }
void five(){
tmrpcm.play("5.wav"); }
void fivet(){
tmrpcm.play("530.wav"); }
void six(){
tmrpcm.play("6.wav"); }
thank you and hoping that you can help me with this. More power to all!!!