-
Posts
1,281 -
Joined
-
Last visited
-
Days Won
71
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by Phatline
-
MB606 (TR606-Clone-Midification) any Info to this?
Phatline replied to Phatline's topic in MIDIfication
FInally the used Accent(Velocity) circuit.- 1 reply
-
- 1
-
-
From the album: TR-606-Midification
it is nessesery to "tune" the accent stages.... -
From the album: TR-606-Midification
-
thx for the info, i finally have done it with a simple bc337 and a 680ohm resistor, finally unipolar ;-)
-
From the album: TR-606-Midification
a bc337 and a 680Ohm resistor do the job.... -
thx...by the next order i have some MCP6002!..... whats about the unused Side of the TL72? in the 606 i dont need -15V in there... but i thought of a MS20 filter on the master times bevore ,...and then i would need it again.... but no 7915 @ home... arghlxwahh ...
-
what type of rail to rail op amp - is common? (so i can easy buy it by going to conrad, or to the local radio shop?) i think it will end by building a bipolar supply, since it turned out that op amps are a own sience...
-
http://ucapps.de/mbhp/mbhp_aout_lc.pdf >> This Circuit is made for a Bipolar-PowerSupply but how looks a unipolar powered Version? the comes out that a simple bc337 can do the job (idea from the core backlight shematic ;-) ) see this: one problem that i have to solve is the logaritmic... a linear scale with all the same 10k resistors in a network, dont sound very accourate... How to handle the unused side of the OP-AMP? Whats about the Offset-section? > No -15V there... so clamp to ground? Is there something else to change. how to make a logaritmic variant? i have built the circuit above on vectorboard, and it act a bit strange when switching between DOUT-Pin 0 and 1 -pin 0 make louder sound then 1 >>> Pin 2-7 acting normal (Volume gets higher) 0>1 (wrong) 1<2 (right) 2<3 (right) 3<4 (right) 4<5 (right) ...
-
From the album: TR-606-Midification
draft for a 606 accent CV - and 8xTrigger -
does anybody know more about this, the forum search give me absulutly nothing about this.... he built all of this without asking a single question to his quest... well then he is a master.... or maybe the forum lost data (alexandria...) why i ask. yes my 606 is dead, precisely my midi-retrofit is broken... but like most all other 606 links also my retrofit supllyers website from when vienna is dead. (Called MIDI606), it was fully velocity sensitive. where the individual trigger should come i know... where to connect the accent also... also i know that the individual triggers are 1ms pulse time.... since the accent is also a sequencer track on the same type of output i guess it is also 1ms time... but i must guess, because the orginal CPU of the device is not into the machine anymore.... i cant measure. ---I also think i found the accent-amount- the retrofit removes the bridge left to D8 and wire it to some pins to the retrofit-PIC (i think it was a pic... the data is filed away....) may he used some onboard DAC (on a 40pin PIC?) anyway, off but also ON-Topic >>>i hate that >>> of course of MONEY and PROFIT THINKING - and so on, information gots lost, or never get free.... 80% of them retrofits where for money, and now nolonger exist - so nobody makes money with it, but in the other side - the information how they done that devices is not here > LOST... this was a good example for that. a other one: i had a website with 100th of mine free songs online (all of mine, and a few other artists)... but i have to pay for that server year for year for year., then they said i had no payed, (i dont get no warning or so) and the ereased all of it, and then the want MONEY FROM ME.... they dont get them shit anyway.. since 2 years my website no longer exist...a example for information got lost. UPDATE: multiplicate the triggertime by velocity value change the sound and the loudness a bit, or more then a bit: // a midi note comes in and trigger the following events...: TrgTmp[0]=1; //Trig-State - flag... TrigDecayValue[0] = velocity*10; //calculate Trigger-Time via Velocity > 1000us = 1ms MIOS32_DOUT_PinSet(40, 1); //Trigger-Velocity-Pin-Out //The real accent layer "common" -0-15V TrgTmp[8]=1; //initalize Accent-Trigger-Layer TrigDecayValue[8] = velocity*20; if(TrigDecayValue[8] < 1000) {TrigDecayValue[8]=1000;} //1000us = 1ms if (AccentStage == 0) {MIOS32_DOUT_PinSet(32, 1);} if (AccentStage == 1) {MIOS32_DOUT_PinSet(33, 1);} if (AccentStage == 2) {MIOS32_DOUT_PinSet(34, 1);} if (AccentStage == 3) {MIOS32_DOUT_PinSet(35, 1);} if (AccentStage == 4) {MIOS32_DOUT_PinSet(36, 1);} if (AccentStage == 5) {MIOS32_DOUT_PinSet(37, 1);} if (AccentStage == 6) {MIOS32_DOUT_PinSet(38, 1);} if (AccentStage == 7) {MIOS32_DOUT_PinSet(39, 1);}} //now the decay counter ---DOUT-hi-state-time static void TASK_Trigger_Decay(void *pVParameters){//Trigger > Note OFF portTickType xLastExecutionTime; xLastExecutionTime = xTaskGetTickCount(); // Initialise the xLastExecutionTime variable on task entry while( 1 ) { if (TrgTmp[8]==1) { //is the Trigger state HI (ON)? 8 = ACCENT LAYER TrigDecayCount[8]++; if(TrigDecayCount[8] >= TrigDecayValue[8]){TrigDecayCount[8] = 0; //Reset Counter TrgTmp[8] = 0; //Reset the Trigger State > avoid endless loops MIOS32_DOUT_PinSet(32, 0),MIOS32_DOUT_PinSet(33, 0),MIOS32_DOUT_PinSet(34, 0), MIOS32_DOUT_PinSet(35, 0),MIOS32_DOUT_PinSet(36, 0),MIOS32_DOUT_PinSet(37, 0), MIOS32_DOUT_PinSet(38, 0),MIOS32_DOUT_PinSet(39, 0);} } //Decay-Time > TrigTmp-State > DOUT-State if (TrgTmp[0]==1) { //is the Trigger state HI (ON)? TrigDecayCount[0]++; if(TrigDecayCount[0] >= TrigDecayValue[0]){TrigDecayCount[0] = 0; //Reset Counter TrgTmp[0] = 0; //Reset the Trigger State > avoid endless loops MIOS32_DOUT_PinSet(40, 0);//OUT Trigger > LO MIOS32_DOUT_PinSet(48, 0);}} //OUT Trigger Indicator > LO}}
-
Alternative to LED encoder rings: illuminated red-green encoders?
Phatline replied to latigid on's topic in Design Concepts
great idea... that would make a lot of easier....maybe not on the programming side... i think as soon you learn how to read that colours it works great. as expirience the alps caps are a bit big... so the saved space between the encs is away, but have no alternative in moment. -
BLM 16x16+X PCB and case order [CLOSED/waitlist]
Phatline replied to latigid on's topic in Bulk Orders
Name PCB BLM PCB miniCore Case Shift button M2 hardware 4xLED availability 9 9 - 12 9 20 latigid on 1 1 1 1 1 1 Rowan 1 1 1 1 1 1 Phatline 2 2 1 1 1 1 Total 4 4 3 3 3 3 Great work! -
stm32f4 compiling errors > USB (ubuntu 14)
Phatline replied to Phatline's topic in MIOS programming (C)
hallo thorsten - thx for looking in where did you identify my gcc version? Anyway i did it, downloaded the toolchain copied the files, proved the envirnoment variables... > exactly the same warnings. bevore i used the lpc17.... i only changed now to STM32F4 for a other project... my environment variables now are, maybe copyied a false syntax for family processor and board, which was a result from a forum search...: -
by compiling this code: note2light-withoutDMX.zip i got errors see below...
-
A Midi Note has a frequency, this frequency octaved to a visible spectrum is colour... the goal is to connect a RGBW-LED-DMX-Light via a DMX cable to the midibox Platform (Core32 LPC17). Software Side the octaving and the RGBW (4x 0-255) is handeld...
-
From the album: Notes2Light (DMX-RGBW-LED-Based)
swapping from LPC17 to STM32F4 dont bring DMX to live -
sound 2 light converter (rgb-DMX-based)
Phatline replied to Phatline's topic in MIDIbox User Projects
I use now STM32F4 ... but still compiling error the orginal DMX code was written for a STM32F1 (i think that was i read...) but that board i dont have @ home so i switched my setup to a CORE_STM32F4... in the hope that it would run on it... No it dont compile. how ever my test-code >>note2light-withDMX.zip << with the DMX-Parts activatet - which give me following compiling errors: -for controll this is my code without DMX-Code in it:>> note2light-withoutDMX.zip<< by the way when i try to compile examples/dmx - code i got following compiling errors: -
note to frequency calculation (core32) -SOLVED
Phatline replied to Phatline's topic in MIOS programming (C)
THANKZ @ TK and THANKZ @ Peter - you made my day - [note]2[hz] is up and running! ----so the first conversions from the first part of [sound]2[light] is done... and i learned a bit math - what a day. ---I updated the first postt and the code >>> SOLVED! -
note to frequency calculation (core32) -SOLVED
Phatline replied to Phatline's topic in MIOS programming (C)
hi, no - i setuped this linux pc 2015, the actual toolchain is 2013 I also opened Tutorial 1 and i made a simple operation: #include <mios32.h> #include "app.h" #include <math.h> float midi[127] = {}; //represent Midinote 0-127 - and its value is a Frequency in [hz] u32 actualnote = 69; // where 69 is A3 named A (which is tuned with "tuning" Variable above) s32 notecount = 0; // only a counter variable to calculate the note frequencys. float tuning = 431; //represent the tuning of "Kammerton A3" float finetuning = 0.95; //represent the floating point of tuning (eg.: 431,095hz) void APP_Init(void){} void APP_Background(void){} void APP_Tick(void){} void APP_MIDI_Tick(void){} void APP_MIDI_NotifyPackage(mios32_midi_port_t port, mios32_midi_package_t midi_package) { notecount = tuning * pow(2, 2); //for (notecount = 0; notecount < 127; ++notecount) //{midi[notecount] = tuning * pow(2, (float)(notecount - 69)/12);} } void APP_SRIO_ServicePrepare(void){} void APP_SRIO_ServiceFinish(void){} void APP_DIN_NotifyToggle(u32 pin, u32 pin_value){} void APP_ENC_NotifyChange(u32 encoder, s32 incrementer){} void APP_AIN_NotifyChange(u32 pin, u32 pin_value){} which is compiling without problems but by using again your code line: #include <mios32.h> #include "app.h" #include <math.h> float midi[127] = {}; //represent Midinote 0-127 - and its value is a Frequency in [hz] u32 actualnote = 69; // where 69 is A3 named A (which is tuned with "tuning" Variable above) s32 notecount = 0; // only a counter variable to calculate the note frequencys. float tuning = 431; //represent the tuning of "Kammerton A3" float finetuning = 0.95; //represent the floating point of tuning (eg.: 431,095hz) void APP_Init(void){} void APP_Background(void){} void APP_Tick(void){} void APP_MIDI_Tick(void){} void APP_MIDI_NotifyPackage(mios32_midi_port_t port, mios32_midi_package_t midi_package) { //notecount = tuning * pow(2, 2); for (notecount = 0; notecount < 127; ++notecount) {midi[notecount] = tuning * pow(2, (float)(notecount - 69)/12);} } void APP_SRIO_ServicePrepare(void){} void APP_SRIO_ServiceFinish(void){} void APP_DIN_NotifyToggle(u32 pin, u32 pin_value){} void APP_ENC_NotifyChange(u32 encoder, s32 incrementer){} void APP_AIN_NotifyChange(u32 pin, u32 pin_value){} i got the known error message: make (im Verzeichnis: /home/tekkstar/mios32/trunk/apps/tutorials/001_forwarding_midi) rm -f project.hex Creating object file for app.c /usr/lib/gcc/arm-none-eabi/4.8/../../../arm-none-eabi/lib/armv7-m/libm.a(lib_a-w_pow.o): In function `pow': /build/buildd/newlib-2.1.0+git20140818.1a8323b/build/arm-none-eabi/armv7-m/newlib/libm/math/../../../../../../newlib/libm/math/w_pow.c:210: undefined reference to `__errno' /build/buildd/newlib-2.1.0+git20140818.1a8323b/build/arm-none-eabi/armv7-m/newlib/libm/math/../../../../../../newlib/libm/math/w_pow.c:164: undefined reference to `__errno' /build/buildd/newlib-2.1.0+git20140818.1a8323b/build/arm-none-eabi/armv7-m/newlib/libm/math/../../../../../../newlib/libm/math/w_pow.c:120: undefined reference to `__errno' Kompilierung fehlgeschlagen. /home/tekkstar/mios32/trunk/include/makefile/common.mk:139: recipe for target 'project_build/project.elf' failed /build/buildd/newlib-2.1.0+git20140818.1a8323b/build/arm-none-eabi/armv7-m/newlib/libm/math/../../../../../../newlib/libm/math/w_pow.c:207: undefined reference to `__errno' collect2: error: ld returned 1 exit status make: *** [project_build/project.elf] Error 1 strange. -
note to frequency calculation (core32) -SOLVED
Phatline replied to Phatline's topic in MIOS programming (C)
hi peter, thank you for watching in. for POW i had to add first: #include <stdio.h> #include <math.h> i got then following compiling error with your line: (app.c:21:1: was there bevore and has something to do what that dmx stuff...that i "//" out @ the moment) -
note to frequency calculation (core32) -SOLVED
Phatline replied to Phatline's topic in MIOS programming (C)
THX TK! - worked! - have updatet the code above...i think there are better way to show floating in LCD, but thats the workaround i can do (which much code lines extra.) now i see what the code does... and it does not right: the calculation from midi notes to frequency, is based on tuning of note Number 69 (A3): for example @ 432hz the formular on the internet give me this: freq = 430 * 2^((n-69)/12) where 'n' is the MIDI note number (2) i progrommed this: for (notecount = 0; notecount < 127; ++notecount) {midi[notecount] = tuning * (2 ^ ((notecount-69) / 12));} it should fill a 127 wide array with Frequencys corresponding to its note numbers. the formular make something wrong because the outputs are wrong: when i put in Note Nr 33, i get -14hz (A0) should be 54 when i put in Note Nr 45, i get -17hz (A1) should be 107 when i put in Note Nr 57, i get -12hz (A2) should be 215 when i put in Note Nr 69, i get 866hz (A3) should be 431 when i put in Note Nr 61, i get 129hz (A4) should be 862 when i put in Note Nr 93, i get 0hz (A5) should be 1724 -
is following pinout correct?:
-
From the album: Notes2Light (DMX-RGBW-LED-Based)
is this the correct pinout???? -
the calculation from midi notes to frequency, is based on tuning of note Number A3: eg. 430-450hz the formular on the internet give me this: //Calculate Frequencys 4 notes... for (notecount = 0; notecount < 127; ++notecount) { midi[notecount] = tuning * pow(2, (float)(notecount - 69)/12); } it should fill an 127 wide array with Frequencys corresponding to its note numbers. the formular make something wrong: --- SOLVED - i updetate the working code > THX to Peter when i put in Note Nr 33, i get -14hz (A0) when i put in Note Nr 45, i get -17hz (A1) when i put in Note Nr 57, i get -12hz (A2) when i put in Note Nr 69, i get 866hz (A3) when i put in Note Nr 61, i get 129hz (A4) when i put in Note Nr 93, i get 0hz (A5) I put in: actualnote: 69 (which is A3 >>> Kammerton A) tuning: 431 (A3 = 431hz) it should put out: midi[actualnote]=431 but on the LCD i prints out:1079427072 --- and this is not right >> SOLVED: write (float) in front of a Variable if you want to print it >>> thx to TK WORKING CODE: #include <mios32.h> #include <FreeRTOS.h> #include <task.h> #include "tasks.h" #include "file.h" #include "app.h" #include <portmacro.h> #include <queue.h> #include <semphr.h> #include <string.h> #include "mios32_timer.h" #include "float.h" #include <stdio.h> #include <math.h> //#include "dmx.h" //DMX: typedef struct { int normal_access : 3; int single_bit_bb : 1; } __attribute__((bitband)) my_struct; my_struct phil; #define NUM_ENCODERS 9 //5 Menue Encoders are connectet const mios32_enc_config_t encoders[NUM_ENCODERS] = {//(SR begin with 1, ENC with 0) // setup the Pinout of that Encoders { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=1, .cfg.pos=0 }, //Menue Encoder 0 - only virtual, since they are mapped to differnt Variables... { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=1, .cfg.pos=2 }, //Menue Encoder 1 - ...if "Menue Page Encoder" has changed { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=1, .cfg.pos=4 }, //Menue Encoder 2 { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=1, .cfg.pos=6 }, //Menue Encoder 3 { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=2, .cfg.pos=0 }, //Menue Encoder 4 { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=2, .cfg.pos=2 }, //Menue Encoder 5 { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=2, .cfg.pos=4 }, //Menue Encoder 6 { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=2, .cfg.pos=6 }, //Menue Encoder 7 { .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=4, .cfg.sr=3, .cfg.pos=0 },}; //Menue Page Encoder xSemaphoreHandle xLCDSemaphore; // take and give access to LCD u32 MenueUpdateCount = 0; //to calculate the LCD-Menue-Update-Rate float value = 0; //Encoder calculation... u32 i = 0; //Encoder calcualtion //DMX u8 RGBWdmx[4]={0, 0, 0, 250}; //RGBW values u8 RGBWenc[4]={0, 0, 0, 250}; //RGBW values u8 count = 0; //to count thru the rgbw-channels while sending DMX... //note2sound u32 nm = 10; u32 rpm = 25680; u32 time = 2161; //setup timer time u32 timecount = 0; u32 hzcount = 0; u32 decaytime = 128; float tuning = 431; //represent the tuning of "Kammerton A3" float finetuning = 0.95; //represent the floating point of tuning (eg.: 431,095hz) u32 finetuningLCD = 95; //float of tuning - to calculate to show on display float midi[127] = {}; //represent Midinote 0-127 - and its value is a Frequency in [hz] u32 actualnote = 69; // where 69 is A3 named A (which is tuned with "tuning" Variable above) s32 notecount = 0; // only a counter variable to calculate the note frequencys. //MidiSetup u8 midich = Chn9; u8 midiport= 32; //Midi-Melody Input, [32=UART0=Midi1, 33=UART1=Midi2 on LPC17core] //Task Prioritys #define MUTEX_LCD_TAKE { while( xSemaphoreTakeRecursive(xLCDSemaphore, (portTickType)0) != pdTRUE ); } //a Mutex reserve a Resoure (LCD or SD-Card) for a task, until it is given away... #define MUTEX_LCD_GIVE { xSemaphoreGiveRecursive(xLCDSemaphore); } #define PRIORITY_StoreLoad ( tskIDLE_PRIORITY + 2 ) //3:Mios standart static void StoreLoad(u8 tick, u16 order); void APP_Init(void){ MIOS32_BOARD_LED_Init(0xffffffff); //initialize all LEDs xLCDSemaphore = xSemaphoreCreateRecursiveMutex(); //create Mutex for LCD access //initialize encoders i = counter for(i=0; i<NUM_ENCODERS; ++i) MIOS32_ENC_ConfigSet(i, encoders[i]); //initialize encoders //DMX_Init(0); } void APP_Background(void){ //DMX: // endless loop /* while(1) { for (count=0;count<4;count++) { if (RGBWdmx[count]!=RGBWenc[count]) //if something has changed - send the value via DMX! { RGBWdmx[count]=RGBWenc[count]; DMX_SetChannel(count,(u8)RGBWdmx[count]);} } } */ } void APP_Tick(void) { //1ms Event Triggering MenueUpdateCount = MenueUpdateCount + 1; if(MenueUpdateCount > 650){MenueUpdateCount = 0; StoreLoad(0, 0);}} //update the Menue void APP_MIDI_Tick(void){} void APP_MIDI_NotifyPackage(mios32_midi_port_t port, mios32_midi_package_t midi_package){ if(port==midiport && midi_package.chn == midich && midi_package.type == NoteOn) {actualnote=midi_package.note;}} void APP_SRIO_ServicePrepare(void){} void APP_SRIO_ServiceFinish(void){} void APP_DIN_NotifyToggle(u32 pin, u32 pin_value){} void APP_ENC_NotifyChange(u32 encoder, s32 incrementer){ if(encoder == 1){ value = tuning + incrementer; //tuning of note A-3 if(value < 430) {value = 450;} if(value > 450) {value = 430;} tuning = value; //Calculate Frequencys 4 notes... for (notecount = 0; notecount < 127; ++notecount) {midi[notecount] = tuning * pow(2, (float)(notecount - 69)/12);} //{midi[notecount] = tuning * (2 ^ ((notecount-69) / 12));} } if(encoder == 2){ value = finetuning + ((float)incrementer/1000); // finetune if(value < 0.001) {value = 0;} if(value > 1) {value = 1;} finetuning = value; tuning=tuning + finetuning; if(tuning < 430) {tuning = 430;} if(tuning > 450) {tuning = 450;} finetuningLCD = finetuning*1000; } if(encoder == 3){ value = RGBWenc[0] + incrementer; //RED if(value < 0) {value = 255;} if(value > 255) {value = 0;} RGBWenc[0] = value; } if(encoder == 4){ value = RGBWenc[1] + incrementer; //GREEN if(value < 0) {value = 255;} if(value > 255) {value = 0;} RGBWenc[1] = value; } if(encoder == 5){ value = RGBWenc[2] + incrementer; //BLUE if(value < 0) {value = 255;} if(value > 255) {value = 0;} RGBWenc[2] = value; } if(encoder == 6){ value = RGBWenc[3] + incrementer; //White if(value < 0) {value = 255;} if(value > 255) {value = 0;} RGBWenc[3] = value; } } void APP_AIN_NotifyChange(u32 pin, u32 pin_value){} static void StoreLoad(u8 tick, u16 order){ //Display MENUE if(tick == 0){//Menue tick MUTEX_LCD_TAKE; //request LCD access MIOS32_LCD_Clear(); //clear screen //1st Line = Encoder Variables....change something! MIOS32_LCD_CursorSet(0, 0); MIOS32_LCD_PrintFormattedString("%u", actualnote); MIOS32_LCD_CursorSet(4, 0); MIOS32_LCD_PrintFormattedString("%d", (int)tuning); MIOS32_LCD_CursorSet(7, 0); if (finetuningLCD>=100) {MIOS32_LCD_PrintFormattedString("%s" "%d", ".", finetuningLCD);} if (finetuningLCD< 100 && finetuningLCD>=10) {MIOS32_LCD_PrintFormattedString("%s" "%d", ".0", finetuningLCD);} if (finetuningLCD< 10) {MIOS32_LCD_PrintFormattedString("%s" "%d", ".00", finetuningLCD);} MIOS32_LCD_CursorSet(16, 0); MIOS32_LCD_PrintFormattedString("%d", RGBWenc[0]); MIOS32_LCD_CursorSet(21, 0); MIOS32_LCD_PrintFormattedString("%d", RGBWenc[1]); MIOS32_LCD_CursorSet(27, 0); MIOS32_LCD_PrintFormattedString("%d", RGBWenc[2]); MIOS32_LCD_CursorSet(32, 0); MIOS32_LCD_PrintFormattedString("%d", RGBWenc[3]); MIOS32_LCD_CursorSet(37, 0); MIOS32_LCD_PrintFormattedString("%d", (int)midi[actualnote]); //2nd Line = Menue Describtio MIOS32_LCD_CursorSet(0, 1); MIOS32_LCD_PrintFormattedString("%s", "nte "); MIOS32_LCD_CursorSet(4, 1); MIOS32_LCD_PrintFormattedString("%s", "tune"); MIOS32_LCD_CursorSet(16, 1); MIOS32_LCD_PrintFormattedString("%s", "red "); MIOS32_LCD_CursorSet(21, 1); MIOS32_LCD_PrintFormattedString("%s", "gren "); MIOS32_LCD_CursorSet(27, 1); MIOS32_LCD_PrintFormattedString("%s", "blue "); MIOS32_LCD_CursorSet(32, 1); MIOS32_LCD_PrintFormattedString("%s", "whit "); MIOS32_LCD_CursorSet(37, 1); MIOS32_LCD_PrintFormattedString("%s", "frq"); MUTEX_LCD_GIVE;}} // release LCD access for other tasks &