Alvaro Cassinelli
/
laserScannerControl_FRDMK64F
Example controlling galvanomirrors (X and Y) using the spi DAC MCP4922 and the new platform FRDM_K64F
Diff: laserProjectorHardware/laserProjectorHardware.cpp
- Revision:
- 3:89f592efbe84
- Parent:
- 2:383b2acec6e4
- Child:
- 4:1428775752f7
--- a/laserProjectorHardware/laserProjectorHardware.cpp Mon May 26 08:37:38 2014 +0000 +++ b/laserProjectorHardware/laserProjectorHardware.cpp Wed Jun 04 09:47:04 2014 +0000 @@ -8,15 +8,20 @@ SPI spiDAC(MOSI_PIN, MISO_PIN, SCK_PIN); // mosi, miso, sclk DigitalOut csDAC(CS_DAC_MIRRORS); - - DigitalOut Laser_Red(LASER_RED_PIN); // NOTE: this is NOT the lock in sensing laser (actually, not used yet) + + PwmOut Laser_Lockin(LASER_LOCKIN_PIN); + DigitalOut Laser_Red(LASER_RED_PIN); DigitalOut Laser_Green(LASER_GREEN_PIN); DigitalOut Laser_Blue(LASER_BLUE_PIN); void HardwareIO::init(void) { - Laser_Red = 1; // note: this is not the lockin-laser! it is also negated - Laser_Green = 0; - Laser_Blue = 0; + + setLockinFreq(LOCKIN_FREQUENCY); + setLockinPower(1); + + setRedPower(0); + setGreenPower(0); + setBluePower(0); //Serial Communication setup: pc.baud(115200);// @@ -60,12 +65,21 @@ csDAC = 1; } +void HardwareIO::setLockinFreq(int valueHz) { +Laser_Lockin.period_ms(int(1000.0/valueHz)); +} + +void HardwareIO::setLockinPower(int value) { //note: 0 means off, and 1 or >0 means 50% + if (value>0) Laser_Lockin.write(0.5); + else Laser_Lockin.write(0); +} + void HardwareIO::setRedPower(int powerValue){ if(powerValue > 0){ - Laser_Red = 0; // att! it's negated for the laser diode module "vector" + Laser_Red = 1; } else{ - Laser_Red = 1; + Laser_Red = 0; } } void HardwareIO::setGreenPower(int powerValue){ @@ -86,7 +100,7 @@ } void HardwareIO::setRGBPower(unsigned char color) { //lockin.setLaserPower(color&0x04>0? false : true); - Laser_Red=color&0x04>>2; + Laser_Red=(color&0x04)>>2; Laser_Green=(color&0x02)>>1; Laser_Blue =color&0x01; }