jantje wrote:Hi velvetpig
Can you copy the code for the arduino you are using (or provide a direct link). Because when I look at the code I have just downloaded from the forum I do not understand how the program can generate the output you are giving.
Best regards.
Jantje
[quote]
#include <AFMotor.h>
[color=#7E7E7E]//program to control rig by david laserscanner[/color]
[color=#7E7E7E]//likely to change[/color]
const [color=#CC6600]int[/color] CamScanningSteps = 900; [color=#7E7E7E]//The number of steps to do while adjusting scanning camera settings[/color]
const [color=#CC6600]int[/color] CamScanningMotorSpeed = 20; [color=#7E7E7E]// Speed used while adjusting scanning camera settings[/color]
const [color=#CC6600]int[/color] CamPositioningSpeed = 200; [color=#7E7E7E]// Speed used when positioning the cam[/color]
const [color=#CC6600]int[/color] StepperSteps = 200; [color=#7E7E7E]// the steps on your stepper[/color]
const [color=#CC6600]int[/color] StepperPort =1; [color=#7E7E7E]//The port your stepper is connected to[/color]
const [color=#CC6600]int[/color] LaserMotor =4; [color=#7E7E7E]//The port your laser is connected to[/color]
const [color=#CC6600]int[/color] LightMotor =3; [color=#7E7E7E]//The port the light is connected to[/color]
#define LASER_ON Laser.[color=#CC6600]run[/color]([color=#006699]FORWARD[/color]); [color=#7E7E7E]//instead of activating the line below consider switching the cables[/color]
[color=#7E7E7E]//#define LASER_ON Laser.run(BACKWARD);[/color]
#define LIGHT_ON Light.[color=#CC6600]run[/color]([color=#006699]FORWARD[/color]); [color=#7E7E7E]//instead of activating the line below consider switching the cables[/color]
[color=#7E7E7E]//#define LIGHT_ON Light.run(BACKWARD);[/color]
[color=#7E7E7E]//You should not change the code below when you use the code as a user.[/color]
[color=#CC6600]AF_Stepper[/color] motor(StepperSteps, StepperPort);
[color=#CC6600]AF_DCMotor[/color] Laser(LaserMotor);
[color=#CC6600]AF_DCMotor[/color] Light(LightMotor,MOTOR12_1KHZ);
[color=#CC6600]char[/color] DavidMessage = [color=#006699]' '[/color];
uint16_t ScanStepsDone=0;
#define LASER_OFF Laser.[color=#CC6600]run[/color]([color=#006699]RELEASE[/color])
#define LIGHT_OFF Light.[color=#CC6600]run[/color]([color=#006699]RELEASE[/color])
#define DO_NOT_REPEAT [color=#CC6600]false[/color]
#define DO_REPEAT [color=#CC6600]true[/color]
#define _MICROSTEPS 16 [color=#7E7E7E]//If the AF Motor library is compiled with 16 microsteps[/color]
[color=#CC6600]void[/color] [color=#CC6600][b]setup[/b][/color]() {
[color=#CC6600][b]Serial[/b][/color].[color=#CC6600]begin[/color](9600); [color=#7E7E7E]// set up Serial library at 9600 bps[/color]
[color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]"David controlled Rig"[/color]);
Laser.[color=#CC6600]setSpeed[/color](255); [color=#7E7E7E]//no pwm for laser[/color]
Light.[color=#CC6600]setSpeed[/color](255); [color=#7E7E7E]//no pwm for laser[/color]
motor.[color=#CC6600]setSpeed[/color](CamScanningMotorSpeed);
}
[color=#CC6600]void[/color] [color=#CC6600][b]loop[/b][/color]()
{
[color=#CC6600]boolean[/color] remember=[color=#CC6600]false[/color];
[color=#CC6600]if[/color] ([color=#CC6600][b]Serial[/b][/color].[color=#CC6600]available[/color]() > 0)
{
[color=#7E7E7E]// read the incoming byte[/color]
DavidMessage = [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]read[/color]();
[color=#CC6600][b]Serial[/b][/color].[color=#CC6600]print[/color]([color=#006699]"recieved "[/color]);
[color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]( DavidMessage);
}
[color=#CC6600]switch[/color] (DavidMessage)
{
[color=#CC6600]case[/color] [color=#006699]'1'[/color]: remember=ModeCalib(); [color=#CC6600]break[/color];
[color=#CC6600]case[/color] [color=#006699]'2'[/color]: remember=ModeScan();[color=#CC6600]break[/color];
[color=#CC6600]case[/color] [color=#006699]'3'[/color]: remember=ModeTexture(); [color=#CC6600]break[/color];
[color=#CC6600]case[/color] [color=#006699]'U'[/color]: remember=SetupCamScanning();[color=#CC6600]break[/color];
[color=#CC6600]case[/color] [color=#006699]'S'[/color]: remember=StartScanning(); [color=#CC6600]break[/color];
[color=#CC6600]case[/color] [color=#006699]'T'[/color]: remember=StopScanning(); [color=#CC6600]break[/color];
[color=#CC6600]case[/color] [color=#006699]'M'[/color]: remember=DoAScanStep(); [color=#CC6600]break[/color];
};
[color=#CC6600]if[/color] (remember==DO_NOT_REPEAT) [color=#7E7E7E]//When you are in scan camera setting you want the laser to keep going up and down[/color]
{
DavidMessage=[color=#006699]' '[/color];
}
}
[color=#CC6600]boolean[/color] StartScanning()
{
LASER_ON;
LIGHT_OFF;
ScanStepsDone=0;
[color=#CC6600]return[/color] DO_NOT_REPEAT;
}
[color=#CC6600]boolean[/color] SetupCamScanning()
{
LASER_ON;
LIGHT_OFF;
motor.[color=#CC6600]setSpeed[/color](CamScanningMotorSpeed);
motor.[color=#CC6600]step[/color](CamScanningSteps, [color=#006699]BACKWARD[/color], [color=#006699]SINGLE[/color]);
motor.[color=#CC6600]step[/color](CamScanningSteps, [color=#006699]FORWARD[/color], [color=#006699]SINGLE[/color]);
[color=#CC6600]return[/color] DO_REPEAT;
}
[color=#CC6600]boolean[/color] DoAScanStep()
{
motor.[color=#CC6600]onestep[/color]([color=#006699]BACKWARD[/color], [color=#006699]MICROSTEP[/color]);
[color=#CC6600]delay[/color](10); [color=#7E7E7E]//is not absolutely needed but if omitted the step may not have been done physically[/color]
ScanStepsDone+=1;
[color=#CC6600]return[/color] DO_NOT_REPEAT;
}
[color=#CC6600]boolean[/color] StopScanning()
{
LASER_OFF;
[color=#7E7E7E]// Serial.print("Need to go back ");[/color]
[color=#7E7E7E]// Serial.print(ScanStepsDone);[/color]
[color=#7E7E7E]// Serial.println(" steps");[/color]
[color=#CC6600]while[/color] ( (ScanStepsDone % _MICROSTEPS ) > 0)
{
motor.[color=#CC6600]onestep[/color]( [color=#006699]FORWARD[/color], [color=#006699]MICROSTEP[/color]);
[color=#CC6600]delay[/color](10);
ScanStepsDone-=1;
}
motor.[color=#CC6600]setSpeed[/color](CamPositioningSpeed);
motor.[color=#CC6600]step[/color](ScanStepsDone / _MICROSTEPS , [color=#006699]FORWARD[/color], [color=#006699]SINGLE[/color]);
ScanStepsDone=0;
motor.[color=#CC6600]release[/color](); [color=#7E7E7E]//So you can position it by hand[/color]
[color=#CC6600]return[/color] DO_NOT_REPEAT;
}
[color=#CC6600]boolean[/color] ModeTexture()
{
LASER_OFF;
LIGHT_ON;
[color=#CC6600]return[/color] DO_NOT_REPEAT;
}
[color=#CC6600]boolean[/color] ModeCalib()
{
[color=#CC6600]return[/color] ModeTexture(); [color=#7E7E7E]//calibration uses the same settings as texture grabbing[/color]
}
[color=#CC6600]boolean[/color] ModeScan()
{
motor.[color=#CC6600]release[/color]();
LASER_OFF;
LIGHT_OFF;
[color=#CC6600]return[/color] DO_NOT_REPEAT;
}
[/quote]Return to Laser and Camera Hardware
Users browsing this forum: No registered users and 0 guests