Dear DAVID Community,

As you are probably aware, the entire DAVID company, team and product range has been integrated into HP Inc.
This forum is now read-only. Relevant content has been migrated to HP and merged into HP's Support Forums on November 1, 2016.

To start new discussions for 3D Scanning, please register and post your new topic at the HP Support Forums

turntable with fabscan shield

turntable with fabscan shield

Postby hyppyayo » Tue Feb 18, 2014 5:20 pm

hello Guys!

i recieved from a friend a fabscan shield with arduino uno, i'd like to build a turntable to scan with laser.

shield has 2 pololu stepper, and also the pin for the laser, i'd like to set up for swap laser with one motor and with the second motor control the turntable.

anyone could help me to write the code? i'm a dummy in programming.

thanks!

Nicola
Windows 7 pc
Acer P1165 projector + Logitech C920 cam
Black & Decker Laser Line Level
hyppyayo
 
Posts: 41
Joined: Fri Oct 26, 2012 3:02 pm
Location: Riccione (italy)

Re: turntable with fabscan shield

Postby hyppyayo » Tue Feb 18, 2014 5:25 pm

this is the code for the fabscan scanner




// FabScan - http://hci.rwth-aachen.de/fabscan
//
// Created by Francis Engelmann on 7/1/11.
// Copyright 2011 Media Computing Group, RWTH Aachen University. All rights reserved.
// Last Modifcation: R. Bohne 29.01.2013: changed pin mapping to Watterott FabScan Arduino Shield

#define LIGHT_PIN 17
#define LASER_PIN 18
#define MS_PIN 19

//Stepper 1 as labeled on Shield, Turntable
#define ENABLE_PIN_0 2
#define STEP_PIN_0 3
#define DIR_PIN_0 4

//Stepper 2, Laser Stepper
#define ENABLE_PIN_1 5
#define STEP_PIN_1 6
#define DIR_PIN_1 7

//Stepper 3, currently unused
#define ENABLE_PIN_2 11
#define STEP_PIN_2 12
#define DIR_PIN_2 13

#define TURN_LASER_OFF 200
#define TURN_LASER_ON 201
#define PERFORM_STEP 202
#define SET_DIRECTION_CW 203
#define SET_DIRECTION_CCW 204
#define TURN_STEPPER_ON 205
#define TURN_STEPPER_OFF 206
#define TURN_LIGHT_ON 207
#define TURN_LIGHT_OFF 208
#define ROTATE_LASER 209
#define FABSCAN_PING 210
#define FABSCAN_PONG 211
#define SELECT_STEPPER 212
#define LASER_STEPPER 11
#define TURNTABLE_STEPPER 10
//the protocol: we send one byte to define the action what to do.
//If the action is unary (like turnung off the light) we only need one byte so we are fine.
//If we want to tell the stepper to turn, a second byte is used to specify the number of steps.
//These second bytes are defined here below.

#define ACTION_BYTE 1 //normal byte, first of new action
#define LIGHT_INTENSITY 2
#define TURN_TABLE_STEPS 3
#define LASER1_STEPS 4
#define LASER2_STEPS 5
#define LASER_ROTATION 6
#define STEPPER_ID 7

int incomingByte = 0;
int byteType = 1;
int currStepper;

void step()
{
if(currStepper == TURNTABLE_STEPPER){
digitalWrite(STEP_PIN_0, 0);
}else if(currStepper == LASER_STEPPER){
digitalWrite(STEP_PIN_1, 0);
}

delay(3);
if(currStepper == TURNTABLE_STEPPER){
digitalWrite(STEP_PIN_0, 1);
}else if(currStepper == LASER_STEPPER){
digitalWrite(STEP_PIN_1, 1);
}
delay(3);
}

void step(int count)
{
for(int i=0; i<count; i++){
step();
}
}

void setup()
{
// initialize the serial port
Serial.begin(9600);
pinMode(LASER_PIN, OUTPUT);
pinMode(LIGHT_PIN, OUTPUT);

pinMode(MS_PIN, OUTPUT);
digitalWrite(MS_PIN, HIGH); //HIGH for 16microstepping, LOW for no microstepping

pinMode(ENABLE_PIN_0, OUTPUT);
pinMode(DIR_PIN_0, OUTPUT);
pinMode(STEP_PIN_0, OUTPUT);

pinMode(ENABLE_PIN_1, OUTPUT);
pinMode(DIR_PIN_1, OUTPUT);
pinMode(STEP_PIN_1, OUTPUT);

pinMode(ENABLE_PIN_2, OUTPUT);
pinMode(DIR_PIN_2, OUTPUT);
pinMode(STEP_PIN_2, OUTPUT);

//enable turntable and laser steppers
digitalWrite(ENABLE_PIN_0, HIGH); //LOW to turn
digitalWrite(ENABLE_PIN_1, HIGH); //LOW to turn
digitalWrite(ENABLE_PIN_2, LOW); //LOW to turn off

digitalWrite(LIGHT_PIN, 0); //turn light off

digitalWrite(LASER_PIN, 1); //turn laser on
Serial.write(FABSCAN_PONG); //send a pong back to the computer so we know setup is done and that we are actually dealing with a FabScan

currStepper = TURNTABLE_STEPPER; //turntable is default stepper
}

void loop()
{

if(Serial.available() > 0){

incomingByte = Serial.read();

switch(byteType){
case ACTION_BYTE:

switch(incomingByte){ //this switch always handles the first byte
//Laser
case TURN_LASER_OFF:
digitalWrite(LASER_PIN, LOW); // turn the LASER off
break;
case TURN_LASER_ON:
digitalWrite(LASER_PIN, HIGH); // turn the LASER on
break;
case ROTATE_LASER: //unused
byteType = LASER_ROTATION;
break;
//TurnTable
case PERFORM_STEP:
byteType = TURN_TABLE_STEPS;
break;
case SET_DIRECTION_CW:
if(currStepper == TURNTABLE_STEPPER){
digitalWrite(DIR_PIN_0, 1);
}else if(currStepper == LASER_STEPPER){
digitalWrite(DIR_PIN_1, 1);
}
break;
case SET_DIRECTION_CCW:
if(currStepper == TURNTABLE_STEPPER){
digitalWrite(DIR_PIN_0, 0);
}else if(currStepper == LASER_STEPPER){
digitalWrite(DIR_PIN_1, 0);
}
break;
case TURN_STEPPER_ON:
if(currStepper == TURNTABLE_STEPPER){
digitalWrite(ENABLE_PIN_0, 0);
}else if(currStepper == LASER_STEPPER){
digitalWrite(ENABLE_PIN_1, 0);
}
break;
case TURN_STEPPER_OFF:
if(currStepper == TURNTABLE_STEPPER){
digitalWrite(ENABLE_PIN_0, 1);
}else if(currStepper == LASER_STEPPER){
digitalWrite(ENABLE_PIN_1, 1);
}
break;
case TURN_LIGHT_ON:
byteType = LIGHT_INTENSITY;
break;
case TURN_LIGHT_OFF:
digitalWrite(LIGHT_PIN, 0);
break;
case FABSCAN_PING:
delay(1);
Serial.write(FABSCAN_PONG);
break;
case SELECT_STEPPER:
byteType = STEPPER_ID;
break;
}

break;
case LIGHT_INTENSITY: //after this point we take care of the second byte if one is sent
analogWrite(LIGHT_PIN, incomingByte);
byteType = ACTION_BYTE; //reset byteType
break;
case TURN_TABLE_STEPS:
step(incomingByte);
byteType = ACTION_BYTE;
break;
case STEPPER_ID:
Serial.write(incomingByte);
currStepper = incomingByte;
byteType = ACTION_BYTE;
break;
}
}
}
Windows 7 pc
Acer P1165 projector + Logitech C920 cam
Black & Decker Laser Line Level
hyppyayo
 
Posts: 41
Joined: Fri Oct 26, 2012 3:02 pm
Location: Riccione (italy)

Re: turntable with fabscan shield

Postby hyppyayo » Tue Feb 25, 2014 5:46 pm

no one can help me?
Windows 7 pc
Acer P1165 projector + Logitech C920 cam
Black & Decker Laser Line Level
hyppyayo
 
Posts: 41
Joined: Fri Oct 26, 2012 3:02 pm
Location: Riccione (italy)


Return to Hardware

Who is online

Users browsing this forum: No registered users and 2 guests

cron