Differences mbed.org project, and git project for laser f... ยป differences.diff
laser/LaosMotion/LaosMotion.cpp | ||
---|---|---|
PwmOut pwm(p22); // O1: PWM (Yellow)
|
||
DigitalOut laser_enable(p21); // O2: enable laser
|
||
DigitalOut o3(p6); // 03: NC
|
||
DigitalOut *laser = NULL; // O4: (p5) LaserON (White)
|
||
DigitalOut laser(p5); // O4: (p5) LaserON (White)
|
||
// Analog in/out (cover sensor) + NC
|
||
DigitalIn cover(p19);
|
||
... | ... | |
#endif
|
||
pwm.period(1.0 / cfg->pwmfreq);
|
||
pwm = cfg->pwmmin/100.0;
|
||
if ( laser == NULL ) laser = new DigitalOut(LASER_PIN);
|
||
*laser = LASEROFF;
|
||
mark_speed = cfg->speed;
|
||
//start.mode(PullUp);
|
||
... | ... | |
{
|
||
step = command = xstep = xdir = ystep = ydir = zstep = zdir = 0;
|
||
ofsx = ofsy = ofsz = 0;
|
||
*laser = LASEROFF;
|
||
laser = LASEROFF;
|
||
enable = cfg->enable;
|
||
cover.mode(PullUp);
|
||
}
|
||
... | ... | |
**/
|
||
void LaosMotion::write(int i)
|
||
{
|
||
static int x=0,y=0,z=0,power=10000;
|
||
static int x,y,z,power=10000;
|
||
//if ( plan_queue_empty() )
|
||
//printf("Empty\n");
|
||
if ( step == 0 )
|
||
... | ... | |
case 2:
|
||
action.target.y = i/1000.0;;
|
||
step=0;
|
||
action.target.z = 0;
|
||
action.param = power;
|
||
action.ActionType = (command ? AT_LASER : AT_MOVE);
|
||
if ( bitmap_enable && action.ActionType == AT_LASER)
|
||
... | ... | |
switch(step)
|
||
{
|
||
case 1:
|
||
step = 0;
|
||
z = action.target.z = i/1000.0;;
|
||
action.param = power;
|
||
action.ActionType = AT_MOVE;
|
||
action.target.feed_rate = 60.0 * cfg->speed;
|
||
plan_buffer_line(&action);
|
||
z = i;
|
||
step = 0;
|
||
break;
|
||
}
|
||
case 4: // set x,y,z (absolute)
|
||
... | ... | |
}
|
||
else // copy data
|
||
{
|
||
if ( step-2 == bitmap_size ) // last dword received
|
||
if ( step-2 == bitmap_size )
|
||
{
|
||
step = 0;
|
||
printf("Bitmap: received %d dwords\n\r", bitmap_size);
|
||
... | ... | |
laser/LaosMotion/grbl/stepper.c | ||
---|---|---|
{
|
||
xdir = ( (direction_bits & (1<<X_DIRECTION_BIT))? 0 : 1 );
|
||
ydir = ( (direction_bits & (1<<Y_DIRECTION_BIT))? 0 : 1 );
|
||
zdir = ( (direction_bits & (1<<Z_DIRECTION_BIT))? 0 : 1 );
|
||
// zdir = ( (direction_bits & (1<<Z_DIRECTION_BIT))?0:1);
|
||
// edir = ( (direction_bits & (1<<E_DIRECTION_BIT))?0:1);
|
||
}
|
||
... | ... | |
{
|
||
xstep = ( (bits & (1<<X_STEP_BIT))?1:0 );
|
||
ystep = ( (bits & (1<<Y_STEP_BIT))?1:0 );
|
||
zstep = ( (bits & (1<<Z_STEP_BIT))?1:0 );
|
||
// zstep = ( (bits & (1<<Z_STEP_BIT))?1:0 );
|
||
// estep = ( (bits & (1<<E_STEP_BIT))?1:0 );
|
||
}
|
||
... | ... | |
|
||
xstep =( (step_inv & (1<<X_STEP_BIT)) ? 1 : 0 );
|
||
ystep =( (step_inv & (1<<Y_STEP_BIT)) ? 1 : 0 );
|
||
zstep =( (step_inv & (1<<Z_STEP_BIT)) ? 0 : 1 );
|
||
// zstep =( (step_inv & (1<<Z_STEP_BIT)) ? 0 : 1 );
|
||
// estep =( (step_inv & (1<<E_STEP_BIT)) ? 0 : 1 );
|
||
}
|
||
... | ... | |
timer.detach();
|
||
running = 0;
|
||
clear_all_step_pins();
|
||
*laser = LASEROFF;
|
||
laser = LASEROFF;
|
||
pwm = cfg->pwmmax / 100.0; // set pwm to max;
|
||
//printf("idle()..\n");
|
||
}
|
||
... | ... | |
{
|
||
if ( current_block->options & OPT_BITMAP )
|
||
{
|
||
*laser = ! (bitmap[pos_l / 32] & (1 << (pos_l % 32)));
|
||
laser = ! (bitmap[pos_l / 32] & (1 << (pos_l % 32)));
|
||
counter_l += bitmap_width;
|
||
// printf("%d %d %d: %d\n\r", bitmap_len, pos_l, counter_l, (bitmap[pos_l / 32] & (pos_l % 32) ? 1 : 0 ) );
|
||
if (counter_l > 0)
|
||
... | ... | |
}
|
||
else
|
||
{
|
||
*laser = ( current_block->options & OPT_LASER_ON ? LASERON : LASEROFF);
|
||
laser = ( current_block->options & OPT_LASER_ON ? LASERON : LASEROFF);
|
||
}
|
||
|
||
if (current_block->action_type == AT_MOVE)
|
||
... | ... | |
while(plan_get_current_block()) { sleep_mode(); }
|
||
}
|
||
laser/LaosMotion/pins.h | ||
---|---|---|
extern PwmOut pwm; // O1: PWM (Yellow)
|
||
extern DigitalOut laser_enable; // O2: enable laser
|
||
extern DigitalOut o3; // 03: NC
|
||
#define LASER_PIN p5 // note: we define the laser pin here and do not allocate the laser DigitalOut()
|
||
extern DigitalOut *laser; // O4: LaserON (White), do not statically allocte: because this will cause the laser to switch on at reboot
|
||
extern DigitalOut laser; // O4: LaserON (White)
|
||
// Analog in/out (cover sensor) + NC
|
laser/main.cpp | ||
---|---|---|
|
||
if ( cfg->autohome )
|
||
{
|
||
printf("WAIT FOR COVER...\n");
|
||
printf("HOME...\n");
|
||
wait(1);
|
||
|
||
mnu->SetScreen("HOME....");
|
||
|
||
// Start homing
|
||
mnu->SetScreen("WAIT FOR COVER....");
|
||
//if ( cfg->waitforstart )
|
||
while ( !mot->isStart() );
|
||
mnu->SetScreen("HOME....");
|
||
printf("HOME...\n");
|
||
|
||
while ( !mot->isStart() );
|
||
mot->home(cfg->xhome,cfg->yhome, cfg->zhome);
|
||
// if ( !mot->isHome ) exit(1);
|
||
printf("HOME DONE. (%d,%d, %d)\n",cfg->xhome,cfg->yhome,cfg->zhome);
|