wonderful! cant wait to see more of the evolution, thanks for sharing!
wonderful! cant wait to see more of the evolution, thanks for sharing!
Just discovered Modkit a graphical code editor. Could be useful. Here's their webpage. 50.00 to 'join', still in beta it seems. I think it could be just as helpful in learning to code by connecting modules and seeing how they are written out. They don't seem to have setup the free online version yet. I did find a desktop widget but launching it asks again to join for 50.00. I went ahead and did that and will give my impressions in a couple days.
Dan &others:
see: http://arduino.cc/blog/2010/10/05/vi...nd-the-others/
for a list of 'other' visual program tools.
for modkit in safari, this link http://www.modk.it/editor/preview/
is active.
hth
Having spent a couple whole days working with Modkit, Amici (won't run on Win 7 x64), Ardublock in Eclipse, I'm ready to say there's no advantage. The reason is that without a knowledge of control systems, functions, and general electronics you are left with a pretty looking GUI and nowhere to go. It's perfect for kids who are being told what to do, put this here, place that there, and Voila! But to get things done we need more knowledge. There's no getting around it. My secret hope was that one of these programs would allow to import an existing project and parse it out into visual blocks. None could, yet. Modkit did have the best experience, but I wouldn't shell out for it yet. There's the free Ardublock, which is much the same as the others if you're interested. To install it, you need to create the folder structure yourself. That means find the sketchbook location if not the default and make the folder there called "tools', and within it make another called "ArduBlockTool", and one more within that called "tool" and finally paste the downloaded "ardublock-all.jar" file within that.
Here's a test sketch to use with an Arduino and the Adafruit Motor Shield.
I am not a programmer! If I made mistakes, or if there's a better way to do it, please let me know. My steppers should be arriving later this week.
//DSLR XY Test Software V1
//
// X-motor hooked up to Adafruit Motor Shield M1+2
// Y-motor hooked up to M3+4
// Instead of taking an exposure, the program will
// print a message to the IDE Serial Monitor
//
// Image capture will go in the following order:
// 9|8|7
// 4|5|6
// 3|2|1
#include <AFMotor.h> //Load Adafruit Motor Library
AF-Stepper1(200,1) //X-axis stepper
AF-Stepper2(200,2) //Y-axis stepper
Void Setup()
{
Serial.begin(9600); //start serial communication
Serial.print("9 frame positioning test.");
Stepper1.setspeed(20); //A guess
Stepper2.setspeed(20); //Ditto
//if carrier isn't home, then move it home.
Stepper1.step(400,forward,single); //Move carrier left such that
//it's one frame to the right
//of the initial capture area.
//This is another guess.
Stepper2.step(400,forward,single); //Move carrier to the starting
//capture row.
int framenumber=0; //Frame Number Counter
}
Void loop()
{
framenumber=framenumber+1;
switch(frameNumber)
{
case 1:framenumber==1||2||3||8||9
stepper1.step(50,forward,single); //move carrier to next capture area
Stepper1.release(); //de-energize stepper 1 to minimize vibration
Stepper2.release(); //de-energize stepper 2 to minimize vibration
delay(1000); //pause 1 second.
Serial.println(framenumber); //sends the framenumber to the Serial Monitor
//Eventually this'll fire the camera shutter.
break;
case 2:framenumber==4||7
stepper2.step(80,forward,single) //move carrier up to the next row
stepper2.release;
delay(1000);
serial.println(framenumber;
break;
case 3:framenumber==5||6
stepper1.step(50,backward,single);
stepper1.release();
delay(1000);
serial.println(framenumber);
break;
case 4:framenumber==10
stepper1.step(500,backward,single); //start moving carrier home
stepper2.step(560,backward,single);
serial.print("Done!");
}
“You often feel tired, not because you've done too much, but because you've done too little of what sparks a light in you.”
― Alexander Den Heijer, Nothing You Don't Already Know
cool! Nice to see some code Peter!
I think its best to just jump in like you do and try stuff out. Probably you will find more stuff out when you have the motors driving your rig. A couple of things I would try if I were you is the accelstepper library also from ladyada http://www.ladyada.net/make/mshield/download.html If you have some easing in and out it will help with precision, things wont get jerked out of alignment so easily. You can also move faster between your frames. Another thing is to try and avoid using delay(). The reason is that the arduino is deaf and blind during the delay so if you press a button during a delay it just ignores it. Try and use IsTime() or some other solution instead.
http://www.uchobby.com/index.php/201...to-the-rescue/
Looking forward to see your rig in motion!
Thank you for the tips, Ludvig! I'm a complete beginner at this.
“You often feel tired, not because you've done too much, but because you've done too little of what sparks a light in you.”
― Alexander Den Heijer, Nothing You Don't Already Know
There's a thread on Flickr for a macro photography rig with a lot of good information. The code Richard (Really Small) is developing may have a lot of potential for this project.
//DSLR XY Test Software V1
//
// X-motor hooked up to Adafruit Motor Shield M1+2
// Y-motor hooked up to M3+4
// Instead of taking an exposure, the program will
// print a message to the IDE Serial Monitor
//
// Image capture will go in the following order:
// 9|8|7
// 4|5|6
// 3|2|1
#include <AFMotor.h> //Load Adafruit Motor Library
AF_Stepper Stepper1(48,1); //X-axis stepper
AF_Stepper Stepper2(200,2); //Y-axis stepper
int framenumber=0; //Frame Number Counter
void setup()
{
Serial.begin(9600); //start serial communication
Serial.print("9 frame positioning test.");
Stepper1.setSpeed(40); //A guess
Stepper2.setSpeed(40); //Ditto
//if carrier isn't home, then move it home.
Stepper1.step(400,FORWARD,SINGLE); //Move carrier left such that
//it's one frame to the right
//of the initial capture area.
//This is another guess.
Stepper2.step(400,FORWARD,SINGLE); //Move carrier to the starting
//capture row.
}
void loop()
{
framenumber=framenumber+1;
switch(framenumber)
{
case 1:framenumber==1;
Stepper1.step(50,FORWARD,SINGLE); //move carrier to next capture area
Stepper1.release(); //de-energize stepper 1 to minimize vibration
Stepper2.release(); //de-energize stepper 2 to minimize vibration
delay(1000); //pause 1 second.
Serial.println(framenumber); //sends the framenumber to the Serial Monitor
//Eventually this'll fire the camera shutter.
break;
case 2:framenumber==2;
Stepper1.step(50,FORWARD,SINGLE); //move carrier to next capture area
Stepper1.release(); //de-energize stepper 1 to minimize vibration
Stepper2.release(); //de-energize stepper 2 to minimize vibration
delay(1000); //pause 1 second.
Serial.println(framenumber); //sends the framenumber to the Serial Monitor
//Eventually this'll fire the camera shutter.
break;
case 3:framenumber==3;
Stepper1.step(50,FORWARD,SINGLE); //move carrier to next capture area
Stepper1.release(); //de-energize stepper 1 to minimize vibration
Stepper2.release(); //de-energize stepper 2 to minimize vibration
delay(1000); //pause 1 second.
Serial.println(framenumber); //sends the framenumber to the Serial Monitor
//Eventually this'll fire the camera shutter.
break;
case 4:framenumber==4;
Stepper2.step(80,FORWARD,SINGLE); //move carrier up to the next row
Stepper2.release();
delay(1000);
Serial.println(framenumber);
break;
case 5:framenumber==5;
Stepper1.step(50,BACKWARD,SINGLE);
Stepper1.release();
delay(1000);
Serial.println(framenumber);
break;
case 6:framenumber==6;
Stepper1.step(50,BACKWARD,SINGLE);
Stepper1.release();
delay(1000);
Serial.println(framenumber);
break;
case 7:framenumber==7;
Stepper2.step(80,FORWARD,SINGLE); //move carrier up to the next row
Stepper2.release();
delay(1000);
Serial.println(framenumber);
break;
case 8:framenumber==8;
Stepper1.step(50,FORWARD,SINGLE); //move carrier to next capture area
Stepper1.release(); //de-energize stepper 1 to minimize vibration
Stepper2.release(); //de-energize stepper 2 to minimize vibration
delay(1000); //pause 1 second.
Serial.println(framenumber); //sends the framenumber to the Serial Monitor
//Eventually this'll fire the camera shutter.
break;
case 9:framenumber==9;
Stepper1.step(50,FORWARD,SINGLE); //move carrier to next capture area
Stepper1.release(); //de-energize stepper 1 to minimize vibration
Stepper2.release(); //de-energize stepper 2 to minimize vibration
delay(1000); //pause 1 second.
Serial.println(framenumber); //sends the framenumber to the Serial Monitor
//Eventually this'll fire the camera shutter.
break;
case 10:framenumber==10;
Stepper1.step(500,BACKWARD,SINGLE); //start moving carrier home
Stepper2.step(560,BACKWARD,SINGLE);
Serial.print("Done!");
}
}
“You often feel tired, not because you've done too much, but because you've done too little of what sparks a light in you.”
― Alexander Den Heijer, Nothing You Don't Already Know
We've been making some progress on the programing front, but we're not ready for prime time just yet. That said, we have a name for our scanner control system: Scanduino.
“You often feel tired, not because you've done too much, but because you've done too little of what sparks a light in you.”
― Alexander Den Heijer, Nothing You Don't Already Know
Bookmarks