Welcome to Mirrorcle Docs#
Mirrorcle offers a comprehensive Application Programming Interface (API) for full control of Mirrorcle’s MEMS mirrors and electronics.
The Mirrorcle API allows for generation of content (MEMS positions and correlated digital outputs), control and streaming of content, reading of analog inputs, synchronization with additional Controllers or peripherals, tracking, etc. This allows users to integrate Mirrorcle’s beam-steering solutions into any system and for any application.
Mirrorcle’s software development kits (SDKs) are available in multiple languages and on various platforms:
C++ (Windows and Linux)
LabVIEW (Windows)
Matlab (Windows)
Python (Windows and Linux)
Java (Android)
For more information on Mirrorcle’s software products, including the Mirrorcle Software Suite and its numerous applications and SDKs, please visit https://www.mirrorcletech.com/wp/products/software/
Highlighted Video Guide: Three Modes of Operation#
In this video, we explain several methods of operating Mirrorcle’s Dual-Axis MEMS Mirrors and demonstrate the necessary setup steps to achieve each mode.
New Major Release 11.1#
Latest Mirrorcle API update#
11.1.1.0#
Release Date 2024-10-23
MirrorcleDraw
Added option to reset controller (MCU) in MirrorcleDraw menu
Added modulation down to resolution of 0.25Hz for lissajous pattern in Signal Generator program mode
Added option to use enumerated strings defined as PlotType for external plot type in mirrrocledraw.ini
Fixed bug in MirrorcleDraw causing wrong external plot name after changing the plot type
MirrorcleLinearRaster
Added calculation to use new parameter in LinearRasterPattern() function, dRatio, more explicitely. Value is calculated larger for fast scans that utilize more bandwidth and smaller for slower scans that do not challenge the available bandwidth.
Fixed bug causing blank screen when no device is connected (adds message)
MTIDevice-Demo
Added more explicit use of all the parameters in SendDataStream() calls to clarify different uses of delaySamples, minimizeJump, and compensateFilterDelay parameters
Improved the UI in tracking and RGB examples
Updated delaySamples parameter in both raster demos LinearRasterDemo() and RQWaveformDemo().
Updated all tracking example function names to be more descriptive, matching what happens inside
Fixed bug causing delay in SingleTargetTracking_StreamingData_Lissajous() tracking example, previous function name was DataMode7Raster()
Fixed bug causing issue with digital (M) Data rotation in LinearRasterDemo() when using LinearRasterPattern with unlimited streaming
C++ SDK
Added dRatio parameter to LinearRasterPattern() with deafult value of 0.08f. Allows users to control how much of a given scan distance to allocate to the turning (decellerate and accelerate) portion of the scan. Previously was internally set to 0.05f.
Updated comments for many functions in MTIDevice.h to better describe functionality and parameters
Updated RQWaveform() alghorithm to optimize sample rate and npts, and allowing any waveform length
Updated how internal values for last outputted sample are obtained. Now GetXStop(), GetYStop(), GetMStop(), and GetIStop() functions return last outputted sample position after StopDataStream(), as well as after any SendDataStream() and ResetDevicePositions() Updated API includes an update to the internal values inside of SendDataStream(), such that the last sample sent to Controller after a SendDataStream(), or after StopDataStream(), or ResetDevicePosition() will return as the ‘last outputted sample’. These internal values are utilized to rotate new data in SendDataStream if ‘minimizeJump’ parameter is true, or by user to query where beam is pointing after they stop controller sampling.
Fixed bug causing wrong modulation frequency in LissajousWaveform, and allow xFreq, yFreq, modFreq resolution of 0.25Hz
Fixed bug causing visible returning point in LinearRasterPattern function
Mirrorcle MEMS Controller Bootloader Application
Updated the application version to V1.3. This version can replace the firmware more quickly and easily without requiring unplugging the controller cable to reset the controller. New version sends ResetDevice() command to reboot the controller into bootloader mode and then connects to controller bootloader firmware.