Thomas Morris
/
PROJ324_Final
Proj 324 Final
Fork of ELEC351_Group_T by
Diff: main.cpp
- Revision:
- 46:bd9e7e40b3f9
- Parent:
- 45:875f7e18a386
- Child:
- 47:6d128e500875
diff -r 875f7e18a386 -r bd9e7e40b3f9 main.cpp --- a/main.cpp Mon Jan 08 18:43:58 2018 +0000 +++ b/main.cpp Mon Jan 08 19:03:49 2018 +0000 @@ -62,11 +62,11 @@ Thread::wait(Sample_Rate*1000); //Waits until a new is taken before checking again if(Write_Pointer == mailsize - 1) { - if(Log_Value==1){pc.printf("In SD_Card Thread\n\r");} + if(Log_Value==1){pc.printf("In SD_Card Thread\n");} //Open to WRITE FILE* fp = fopen("/sd/test.csv","a"); - if(Log_Value==1){pc.printf("File Opened\n\r");} + if(Log_Value==1){pc.printf("File Opened\n");} for(int SD_Card_Data_Pointer = 0; SD_Card_Data_Pointer != mailsize; SD_Card_Data_Pointer++) { @@ -89,9 +89,9 @@ fprintf(fp, "Temperature: %1.1f,",temp_temperature);//Temperature fprintf(fp, "Pressure: %1.1f,",temp_pressure);//Pressure fprintf(fp, "Light: %5.3f,",temp_light);//Light - fprintf(fp, "End of Data \n\r");//End of data + fprintf(fp, "End of Data \n");//End of data } - if(Log_Value==1){pc.printf("Dumped data to SD Card\n\r");} + if(Log_Value==1){pc.printf("Dumped data to SD Card\n");} //Close File fclose(fp); } @@ -120,7 +120,7 @@ while(1) { Thread::wait(NetworkWait);//Waits Network Wait amount of time - if(Log_Value==1){pc.printf("In Network Thread\n\r");} + if(Log_Value==1){pc.printf("In Network Thread\n");} time_t Time = Data_Buffer[(Write_Pointer - 1)].get_time(); tm* Time_Pointer = localtime(&Time); @@ -143,12 +143,12 @@ void LCD_Write_Year() { Time_Lock_Main.lock();//Appling lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Year Time lock taken\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Year Time lock taken\n");} time_t Time = time(NULL); tm* Time_Pointer = localtime(&Time); int Years = 1900 + Time_Pointer->tm_year; Time_Lock_Main.unlock();//Releasing lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Year Time lock released\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Year Time lock released\n");} stringstream ss; ss << Years; string Year_String = ss.str(); @@ -160,12 +160,12 @@ void LCD_Write_Month() { Time_Lock_Main.lock();//Appling lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Month Time lock taken\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Month Time lock taken\n");} time_t Time = time(NULL); tm* Time_Pointer = localtime(&Time); int Months = 1 + Time_Pointer->tm_mon; Time_Lock_Main.unlock();//Releasing lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Month Time lock released\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Month Time lock released\n");} stringstream ss; ss << Months; string Month_String = ss.str(); @@ -177,12 +177,12 @@ void LCD_Write_Day() { Time_Lock_Main.lock();//Appling lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Day Time lock taken\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Day Time lock taken\n");} time_t Time = time(NULL); tm* Time_Pointer = localtime(&Time); int Days = Time_Pointer->tm_mday; Time_Lock_Main.unlock();//Releasing lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Day Time lock released\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Day Time lock released\n");} stringstream ss; ss << Days; string Day_String = ss.str(); @@ -194,12 +194,12 @@ void LCD_Write_Hour() { Time_Lock_Main.lock();//Appling lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Hour Time lock taken\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Hour Time lock taken\n");} time_t Time = time(NULL); tm* Time_Pointer = localtime(&Time); int Hours = Time_Pointer->tm_hour; Time_Lock_Main.unlock();//Releasing lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Hour Time lock released\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Hour Time lock released\n");} stringstream ss; ss << Hours; string Hour_String = ss.str(); @@ -211,12 +211,12 @@ void LCD_Write_Minute() { Time_Lock_Main.lock();//Appling lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Minute Time lock taken\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Minute Time lock taken\n");} time_t Time = time(NULL); tm* Time_Pointer = localtime(&Time); int Minutes = Time_Pointer->tm_min; Time_Lock_Main.unlock();//Releasing lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Minute Time lock released\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Minute Time lock released\n");} stringstream ss; ss << Minutes; string Minute_String = ss.str(); @@ -228,12 +228,12 @@ void LCD_Write_Seconds() { Time_Lock_Main.lock();//Appling lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Seconds Time lock taken\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Seconds Time lock taken\n");} time_t Time = time(NULL); tm* Time_Pointer = localtime(&Time); int Seconds = Time_Pointer->tm_sec; Time_Lock_Main.unlock();//Releasing lock for critial section - if(Log_Value == 1){pc.printf("In LCD_Write_Seconds Time lock released\n\r");} + if(Log_Value == 1){pc.printf("In LCD_Write_Seconds Time lock released\n");} stringstream ss; ss << Seconds; string Second_String = ss.str(); @@ -250,24 +250,24 @@ Thread::wait(10);//Small wait if(mode == 0)//Default mode { - if(Log_Value == 1){pc.printf("In mode 0 \n\r");} + if(Log_Value == 1){pc.printf("In mode 0 \n");} Thread::wait(Default_Mode_Toggle_Time);//Wait for this amount of time - if(Log_Value == 1){pc.printf("Writing Data to LCD\n\r");} - sprintf (LCD_buffer, "%1.1f %1.1f %1.1f",Data_Active.get_temperature(),Data_Active.get_pressure(),Data_Active.get_light());//Used for converting to a sting + if(Log_Value == 1){pc.printf("Writing Data to LCD\n");} + sprintf (LCD_buffer, "%1.1f %1.0f %1.2f",Data_Active.get_temperature(),Data_Active.get_pressure(),Data_Active.get_light());//Used for converting to a sting LCD.DDRAM_Address(0x00); - LCD.Write_String("Temp Pres li"); + LCD.Write_String("Temp Pres Lite"); LCD.DDRAM_Address(0x40); LCD.Write_String(LCD_buffer);//Print out current data values to the LCD Thread::wait(Default_Mode_Toggle_Time); //Wait for this amount of time - if(Log_Value == 1){pc.printf("Writing Time and Date to LCD\n\r");} + if(Log_Value == 1){pc.printf("Writing Time and Date to LCD\n");} Time_Lock_Main.lock();//lock Time_lock for critial section time_t Time = Data_Active.get_time(); tm* Time_Pointer = localtime(&Time); LCD.Display_Clear(); - sprintf (LCD_buffer, "%02d:%02d %02d,%d",Time_Pointer->tm_hour,Time_Pointer->tm_min,(Time_Pointer->tm_mon+1),(Time_Pointer->tm_year+1900));//Used for converting to a sting + sprintf (LCD_buffer, "%02d:%02d %02d,%d",Time_Pointer->tm_hour,Time_Pointer->tm_min,(Time_Pointer->tm_mon+1),(Time_Pointer->tm_year+1900));//Used for converting to a sting Time_Lock_Main.unlock();//unlock Time_lock for critial section LCD.DDRAM_Address(0x00); @@ -275,7 +275,7 @@ LCD.DDRAM_Address(0x40); LCD.Write_String(LCD_buffer);//Print the current time to the LCD - if(Log_Value == 1){pc.printf("Checking Switches for next mode\n\r");} + if(Log_Value == 1){pc.printf("Checking Switches for next mode\n");} if(SW1.read() & SW2.read() == 1) { mode = 1; @@ -283,7 +283,7 @@ } else if(mode == 1)//Choose either date setting or time setting { - if(Log_Value == 1){pc.printf("In Mode 1\n\r");} + if(Log_Value == 1){pc.printf("In Mode 1\n");} LCD.Display_Clear(); while(1) { @@ -292,13 +292,13 @@ LCD.DDRAM_Address(0x40); LCD.Write_String("< >"); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 to go to Date setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to go to Date setting\n");} if(SW1.read() == 1 & SW2.read() == 0) { mode = 2;//Date Setting break; } - if(Log_Value == 1){pc.printf("Checking SW2 to go to Time setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW2 to go to Time setting\n");} if(SW2.read() == 1 & SW1.read() == 0) { mode = 5;//Time Setting @@ -308,24 +308,24 @@ } else if(mode == 2)//Set the Year { - if(Log_Value == 1){pc.printf("In Mode 2\n\r");} + if(Log_Value == 1){pc.printf("In Mode 2\n");} LCD.Display_Clear(); while(1) { LCD_Write_Year(); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go to Month setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go to Month setting\n");} if(SW1.read() & SW2.read() == 1) { mode = 3; break; } - if(Log_Value == 1){pc.printf("Checking SW1 to add Year\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to add Year\n");} if(SW1.read() == 1 & SW2.read() == 0) { Add_Year(); } - if(Log_Value == 1){pc.printf("Checking SW2 to subtract Year\n\r");} + if(Log_Value == 1){pc.printf("Checking SW2 to subtract Year\n");} else if(SW2.read() == 1 & SW1.read() == 0) { Subtract_Year(); @@ -335,24 +335,24 @@ } else if(mode == 3)//Set the Month { - if(Log_Value == 1){pc.printf("In Mode 3\n\r");} + if(Log_Value == 1){pc.printf("In Mode 3\n");} LCD.Display_Clear(); while(1) { LCD_Write_Month(); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go to Day setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go to Day setting\n");} if(SW1.read() & SW2.read() == 1) { mode = 4; break; } - if(Log_Value == 1){pc.printf("Checking SW1 to add Month\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to add Month\n");} if(SW1.read() == 1 & SW2.read() == 0) { Add_Month(); } - if(Log_Value == 1){pc.printf("Checking SW2 to subtract Month\n\r");} + if(Log_Value == 1){pc.printf("Checking SW2 to subtract Month\n");} else if(SW2.read() == 1 & SW1.read() == 0) { Subtract_Month(); @@ -362,24 +362,24 @@ } else if(mode == 4)//Set the Day { - if(Log_Value == 1){pc.printf("In Mode 4\n\r");} + if(Log_Value == 1){pc.printf("In Mode 4\n");} LCD.Display_Clear(); while(1) { LCD_Write_Day(); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Default setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Default setting\n");} if(SW1.read() & SW2.read() == 1) { mode = 0; break; } - if(Log_Value == 1){pc.printf("Checking SW1 to add Day\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to add Day\n");} if(SW1.read() == 1 & SW2.read() == 0) { Add_Day(); } - if(Log_Value == 1){pc.printf("Checking SW2 to subtract Day\n\r");} + if(Log_Value == 1){pc.printf("Checking SW2 to subtract Day\n");} else if(SW2.read() == 1 & SW1.read() == 0) { Subtract_Day(); @@ -388,24 +388,24 @@ } else if(mode == 5)//Set the Hour { - if(Log_Value == 1){pc.printf("In Mode 5\n\r");} + if(Log_Value == 1){pc.printf("In Mode 5\n");} LCD.Display_Clear(); while(1) { LCD_Write_Hour(); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Minute setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Minute setting\n");} if(SW1.read() & SW2.read() == 1) { mode = 6; break; } - if(Log_Value == 1){pc.printf("Checking SW1 to add Hour\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to add Hour\n");} if(SW1.read() == 1 & SW2.read() == 0) { Add_Hour(); } - if(Log_Value == 1){pc.printf("Checking SW2 to subtract Hour\n\r");} + if(Log_Value == 1){pc.printf("Checking SW2 to subtract Hour\n");} else if(SW2.read() == 1 & SW1.read() == 0) { Subtract_Hour(); @@ -414,24 +414,24 @@ } else if(mode == 6)//Set the Minute { - if(Log_Value == 1){pc.printf("In Mode 6\n\r");} + if(Log_Value == 1){pc.printf("In Mode 6\n");} LCD.Display_Clear(); while(1) { LCD_Write_Minute(); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Seconds setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Seconds setting\n");} if(SW1.read() & SW2.read() == 1) { mode = 7; break; } - if(Log_Value == 1){pc.printf("Checking SW1 to add Minute\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to add Minute\n");} if(SW1.read() == 1 & SW2.read() == 0) { Add_Minute(); } - if(Log_Value == 1){pc.printf("Checking SW2 to subtract Minute\n\r");} + if(Log_Value == 1){pc.printf("Checking SW2 to subtract Minute\n");} else if(SW2.read() == 1 & SW1.read() == 0) { Subtract_Minute(); @@ -440,24 +440,24 @@ } else if(mode == 7)//Set the Seconds { - if(Log_Value == 1){pc.printf("In Mode 7\n\r");} + if(Log_Value == 1){pc.printf("In Mode 7\n");} LCD.Display_Clear(); while(1) { LCD_Write_Seconds(); Thread::wait(1000); - if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Default setting\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 and SW2 to go Default setting\n");} if(SW1.read() & SW2.read() == 1) { mode = 0; break; } - if(Log_Value == 1){pc.printf("Checking SW1 to add Second\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to add Second\n");} if(SW1.read() == 1 & SW2.read() == 0) { Add_Second(); } - if(Log_Value == 1){pc.printf("Checking SW1 to subtract Second\n\r");} + if(Log_Value == 1){pc.printf("Checking SW1 to subtract Second\n");} else if(SW2.read() == 1 & SW1.read() == 0) { Subtract_Second(); @@ -466,7 +466,7 @@ } else { - if(Log_Value == 1){pc.printf("Mode Error occured mode now set to 0\n\r");} + if(Log_Value == 1){pc.printf("Mode Error occured mode now set to 0\n");} mode = 0; } } @@ -476,17 +476,17 @@ char input[100]; while(1) { - if(Log_Value == 1){pc.printf("In Serial_Commands\n\r");} + if(Log_Value == 1){pc.printf("In Serial_Commands\n");} for (int x = 0; x < 100; x++){input[x] = ' ';}; - pc.printf("Please type in a command\n\r");//Log this + pc.printf("Please type in a command\n");//Log this cin.getline(input,sizeof(input),'\r'); //READ ALL if(input[0] == 'R' & input[1] == 'E' & input[2] == 'A' & input[3] == 'D' & input[4] == ' ' & input[5] == 'A' & input[6] == 'L' & input[7] == 'L') { - if(Log_Value == 1){pc.printf("READ ALL Confirmed\n\r");} + if(Log_Value == 1){pc.printf("READ ALL Confirmed\n");} Data_Buffer_Lock.lock();//Lock data buffer due to critical section int Start_Address_Read_All = Write_Pointer; @@ -506,7 +506,7 @@ pc.printf("Time = %02d:%02d:%02d ,\t", Time_Pointer->tm_hour, Time_Pointer->tm_min, Time_Pointer->tm_sec); //Print the string formatted time pc.printf("Temperature = %f ,\t", Serial_Read_Data.get_temperature()); //Print Temperature pc.printf("Pressure = %f ,\t", Serial_Read_Data.get_pressure()); //Print Pressure - pc.printf("Light = %f ,\n\r", Serial_Read_Data.get_light()); //Print Light + pc.printf("Light = %f ,\n", Serial_Read_Data.get_light()); //Print Light if(x_Read_All == mailsize - 1){x_Read_All = 0;} else {x_Read_All = x_Read_All + 1;} @@ -516,7 +516,7 @@ //DELETE ALL FIX THIS - Might need to disable sampling during the delete else if(input[0] == 'D' & input[1] == 'E' & input[2] == 'L' & input[3] == 'E' & input[4] == 'T' & input[5] == 'E' & input[6] == ' ' & input[7] == 'A' & input[8] == 'L' & input[9] == 'L') { - if(Log_Value == 1){pc.printf("DELETE ALL Confirmed\n\r");} + if(Log_Value == 1){pc.printf("DELETE ALL Confirmed\n");} Data_Buffer_Lock.lock(); int Start_Address = Write_Pointer; @@ -533,7 +533,7 @@ else {x_Delete_All = x_Delete_All + 1;} } - pc.printf("DELETED %d RECORDS\n\r",mailsize); + pc.printf("DELETED %d RECORDS\n",mailsize); } //READ @@ -550,7 +550,7 @@ NumberToRead = mailsize; } - if(Log_Value == 1){pc.printf("Getting Data\n\r");} + if(Log_Value == 1){pc.printf("Getting Data\n");} Data_Buffer_Lock.lock();//Lock data buffer due to critical section int Start_Address = Write_Pointer; @@ -570,12 +570,12 @@ pc.printf("Time = %02d:%02d:%02d ,\t", Time_Pointer->tm_hour, Time_Pointer->tm_min, Time_Pointer->tm_sec); //Print the string formatted time pc.printf("Temperature = %f ,\t", Serial_Read_Data.get_temperature()); //Print Temperature pc.printf("Pressure = %f ,\t", Serial_Read_Data.get_pressure()); //Print Pressure - pc.printf("Light = %f ,\n\r", Serial_Read_Data.get_light()); //Print Light + pc.printf("Light = %f ,\n", Serial_Read_Data.get_light()); //Print Light if(x == mailsize - 1){x = 0;} else {x = x + 1;} } - if(Log_Value == 1){pc.printf("Read %d samples\n\r",NumberToRead);} + if(Log_Value == 1){pc.printf("Read %d samples\n",NumberToRead);} } @@ -592,7 +592,7 @@ { NumberToDelete = mailsize; } - if(Log_Value == 1){pc.printf("Deleted %d samples\n\r",NumberToDelete);} + if(Log_Value == 1){pc.printf("Deleted %d samples\n",NumberToDelete);} Data_Buffer_Lock.lock(); int Start_Address = Write_Pointer; @@ -609,8 +609,8 @@ else {x_Delete = x_Delete + 1;} } - pc.printf("DELETED %d RECORDS\n\r",NumberToDelete); - if(Log_Value == 1){pc.printf("Deleted %d samples\n\r",NumberToDelete);} + pc.printf("DELETED %d RECORDS\n",NumberToDelete); + if(Log_Value == 1){pc.printf("Deleted %d samples\n",NumberToDelete);} } //STATE @@ -622,9 +622,9 @@ stringstream Number(StateNumber); Number >> NumberToState; - if(NumberToState==0) {Sampling_Timer.detach(); Console_Output_Timer.detach(); pc.printf("SAMPLING 0\n\r");}//Stop Sampling - else if(NumberToState==1) {Sampling_Timer.attach(&Sampling_ISR,Sample_Rate); pc.printf("SAMPLING 1\n\r");}//Start Sampling - else {pc.printf("Invalid State\n\r");} + if(NumberToState==0) {Sampling_Timer.detach(); Console_Output_Timer.detach(); pc.printf("SAMPLING 0\n");}//Stop Sampling + else if(NumberToState==1) {Sampling_Timer.attach(&Sampling_ISR,Sample_Rate); pc.printf("SAMPLING 1\n");}//Start Sampling + else {pc.printf("Invalid State\n");} } @@ -648,7 +648,7 @@ Number_3 >> NumberToYear; set_new_date(NumberToDay,NumberToMonth,NumberToYear); - pc.printf("DATE UPDATED TO %02d %02d %d\n\r",NumberToDay,NumberToMonth,NumberToYear); + pc.printf("DATE UPDATED TO %02d %02d %d\n",NumberToDay,NumberToMonth,NumberToYear); } //SETTIME @@ -671,7 +671,7 @@ Number_3 >> NumberToSecond; set_new_time(NumberToHour,NumberToMinute,NumberToSecond); - pc.printf("TIME UPDATED TO %02d %02d %02d\n\r",NumberToHour,NumberToMinute,NumberToSecond); + pc.printf("TIME UPDATED TO %02d %02d %02d\n",NumberToHour,NumberToMinute,NumberToSecond); } //SETT @@ -711,12 +711,12 @@ if(NumberToSett >= 0.1 & NumberToSett <= 60) { Sample_Rate = NumberToSett; - pc.printf("T UPDATED TO %1.1f \n\r",NumberToSett); + pc.printf("T UPDATED TO %1.1f \n",NumberToSett); } else { Sample_Rate = Sample_Rate;//No change - pc.printf("OUT OF RANGE"); + pc.printf("OUT OF RANGE\n"); } Sampling_Timer.detach(); @@ -736,7 +736,7 @@ NumberToLogging = 0; } Log_Value = NumberToLogging; - pc.printf("LOGGING %d\n\r",NumberToLogging); + pc.printf("LOGGING %d\n",NumberToLogging); } //HELP @@ -746,7 +746,7 @@ } else { - pc.printf("Please enter an acceptable command\n\r"); + pc.printf("Please enter an acceptable command\n"); } } } @@ -759,7 +759,7 @@ while(1) { Thread::signal_wait(SamplingTime); //Set the time between samples - if(Log_Value == 1){pc.printf("Sample Time\n\r");} + if(Log_Value == 1){pc.printf("Sample Time\n");} Data_Active.set_temperature(sensor.getTemperature()); //Read Temperature Data_Active.set_pressure(sensor.getPressure()); //Read Pressure Data_Active.set_light(adcIn.read()); //Read Light @@ -773,7 +773,7 @@ Red_led.flash(0.02);//ahh he saved everyone of us Write_Pointer = Write_Data(Data_Active,Write_Pointer); t1.signal_set(NotSamplingTime); - if(Log_Value == 1){pc.printf("New Sample avaliable\n\r");} + if(Log_Value == 1){pc.printf("New Sample avaliable\n");} t2.signal_set(SD_Data_Ready); } } @@ -856,7 +856,7 @@ LCD.DDRAM_Address(0x40); LCD.Write_String("Unmounted"); LCD.DDRAM_Address(0x00); - pc.printf("SD Card Unmounted\n\r"); + pc.printf("SD Card Unmounted\n"); Green_led.switchOn(); } }