
Test for mike
Dependencies: mbed DevInterfaces MCP4728 MCP4728setaddr I2Cinterfaces
Revision 8:abdd660056fb, committed 2019-02-20
- Comitter:
- kstokely
- Date:
- Wed Feb 20 14:53:58 2019 +0000
- Parent:
- 7:e649bb2b6187
- Child:
- 9:2d70aa45f16e
- Commit message:
- Clone from MCP4728 Test 2-20-19;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Feb 04 14:24:10 2019 +0000 +++ b/main.cpp Wed Feb 20 14:53:58 2019 +0000 @@ -81,6 +81,71 @@ DigitalOut m4x5CLK(p20); +DigitalOut mRefShutters(p30); + +bool Shut1 = 0; +bool Shut2 = 0; +bool Shut3 = 0; +bool Shut4 = 0; + + + + +int DACSetChannel( int chan, MCP4728* dac) +{ + int ret = 0; + char z; + float voltage = 0; + string instr; + + printf("\n\rEnter Voltage \n\r"); + while (ret == 0) + { + + z = pc.getc(); + + + if( z == 13 ) + { + voltage = atof( instr.c_str() ); + + if( voltage > Vdd || voltage < 0) + { + pc.printf("\n\r Voltage Entered Higher than Vdd Setting Voltage to Maximum\n\r"); + } + else + { + if ( dac->setVoltage(voltage,chan) ) + { + printf("failed to set dac value %f for channel %d\n\r",voltage,chan); + } + //pc.printf("Voltage set to %3fV\n\r", voltage); + if( dac->update() ) + { + printf("\n\rfailed to readback channel info \n\r"); + } + else + { + (void)dac->getVoltage(voltage,chan);//no need to test done with updat + printf(" CH%d %f[V]",chan,voltage); + printf("\n\r"); + + } + + } + + instr.clear(); + ret = 1; + } + else + { + pc.printf("%c",z); + instr.push_back(z); + } + } + return 1; +} + @@ -99,15 +164,18 @@ int cnt=0; + mRefShutters = 1; -pc.printf("\n\rEnter Voltage and Press Enter\n\r"); pc.printf("Agiltron Serial Control Program\n\r"); -pc.printf("Left Square Bracket to control 4x4 Swtiching [\n\r"); -pc.printf("Right Square Bracket to control 4x5 Swtiching ]\n\r"); -pc.printf("1, 2, 3, 4 Control Shutters on 4x5 Module\n\r"); -pc.printf("DAC control press Comma\n\r"); +pc.printf("'[' 4x4 Swtiching \n\r"); +pc.printf("']' 4x5 Swtiching\n\r"); +pc.printf("1, 2, 3, 4 Toggle Single Shutters\n\r"); +pc.printf("'o' Opens all Shutters\n\r"); +pc.printf("'r' Closes all Shutters \n\r"); +pc.printf("',' 4 Channel DAC Control \n\r"); +pc.printf("'.' Single Channel DAC Control \n\r"); //Set up dac for external voltage dac.setRefExtern(); @@ -116,10 +184,7 @@ //Intialize shutters Shutter SH; SH.init( &SH1_1, &SH1_2, &SH2_1, &SH2_2, &SH3_1, &SH3_2, &SH4_1, &SH4_2 ); - bool Shut1 = 0; - bool Shut2 = 0; - bool Shut3 = 0; - bool Shut4 = 0; + SH.writeShutters(Shut1,Shut2,Shut3,Shut4); @@ -128,7 +193,7 @@ DigitalOut* Arr_4x5[5] = {&m4x5TTL1, &m4x5TTL2, &m4x5TTL3, &m4x5TTL4, &m4x5TTL5 }; - //Set straight pipes intial state + //Set straight pipes initial state m4x5TTL1 = 1; m4x4TTL1 = 1; @@ -163,8 +228,35 @@ SH.writeShutters(Shut1,Shut2,Shut3,Shut4); } + else if( c == 'u') + { + mRefShutters = 0; + } - else if( c == 91 ) //Left square bracket [ + else if( c == 'y') + { + mRefShutters = 1; + } + + else if(c == 'o') //Open All Shutters + { + Shut1 = 1; + Shut2 = 1; + Shut3 = 1; + Shut4 = 1; + SH.writeShutters(1,1,1,1); + } + + else if(c == 'r') //Close All Shutters + { + Shut1 = 0; + Shut2 = 0; + Shut3 = 0; + Shut4 = 0; + SH.writeShutters(0,0,0,0); + } + + else if( c == 91 ) //Left square bracket [ 4x4 Control { //Get 5 1's or 0's for binary number int count = 0; @@ -192,7 +284,7 @@ - else if( c == 93 ) //Right square bracket ] + else if( c == 93 ) //Right square bracket ] 4x5 Control { //Get 5 1's or 0's for binary number int count = 0; @@ -218,66 +310,91 @@ pc.printf("Optical Path set to : %d%d%d%d%d\n\r", m4x5TTL1.read(), m4x5TTL2.read(), m4x5TTL3.read(), m4x5TTL4.read(), m4x5TTL5.read() ); //Confirm the correct output is set } -else if( c == ',' ) -{ - pc.printf("4 Channel DAC Control Enter voltage and Press Enter\n\r"); - int ret = 0; - while( ret == 0 ) - { - char z = pc.getc(); - - if( z == 13 ) + else if( c == ',' ) //4 Channel DAC Control { - voltage = atof( instr.c_str() ); - - if( voltage == 0 || voltage > 5.0 ) + pc.printf("4 Channel DAC Control Enter voltage and Press Enter\n\r"); + int ret = 0; + int chan = 0; + while( ret ==0 && chan < 4) { - pc.printf("ERROR\n\r"); - } + char z = pc.getc(); + if( z == 13 ) + { + voltage = atof( instr.c_str() ); + + if( voltage == 0 || voltage > 5.0 ) + { + pc.printf("ERROR\n\r"); + } + else + { + if ( dac.setVoltage(voltage,chan) ) + { + printf("failed to set dac value %d for channel %d\n\r",cnt,chan); + } + //pc.printf("Voltage set to %3fV\n\r", voltage); + if( dac.update() ) + { + printf("\n\rfailed to readback channel info \n\r"); + } + else + { + (void)dac.getVoltage(voltage,chan);//no need to test done with updat + printf(" CH%d %f[V]",chan,voltage); + printf("\n\r"); + chan++; + } + + } + if( chan == 4) + { + ret = 1; + wait_ms(100); + } + instr.clear(); + + } + + else if( z == ']') + { + for ( int cc =0 ; cc <4 ; cc++) + { + if ( dac.setDACvalue(4095,cc) ) + { + printf("failed to set dac value %d for channel %d\n\r",cnt,cc); + } + } + printf("All Channels Set to 5V /n/r"); + ret = 1; + } + + else + { + pc.printf("%c",z); + instr.push_back(z); + } + } +} + + + else if( c == '.' ) //Single Channel DAC Control + { + pc.printf("Single Channel DAC Control Press Channel Number\n\r"); + char z = pc.getc(); + + if( z == '1' || z== '2' || z == '3' || z == '4' ) + { + pc.printf("Channel %c Selected",z); + DACSetChannel( atoi(&z) , &dac); + } else { - for ( int cc =0 ; cc <4 ; cc++) { - if ( dac.setVoltage(voltage,cc) ) - printf("failed to set dac value %d for channel %d\n\r",cnt,cc); - } - //pc.printf("Voltage set to %3fV\n\r", voltage); - if(dac.update()) printf("\n\rfailed to readback channel info \n\r"); - else { - for ( int cc =0 ; cc <4 ; cc++) { - (void)dac.getVoltage(voltage,cc);//no need to test done with updat - printf(" CH%d %f[V]",cc,voltage); - } - printf("\n\r"); - + pc.printf("ERROR"); } - } - - instr.clear(); - wait_ms(1200); - ret = 1; - } - - else if( z == ']') - { - for ( int cc =0 ; cc <4 ; cc++) { - if ( dac.setDACvalue(4095,cc) ) - printf("failed to set dac value %d for channel %d\n\r",cnt,cc); - } - ret = 1; - } - - else - { - pc.printf("%c",z); - instr.push_back(z); - } - } - } - - // never reach this } - - return 1; -} \ No newline at end of file + //Never Reach This + return 1; +} + \ No newline at end of file