snip–><–snip

Uncategorized

long time no post.

by on Aug.26, 2012, under Uncategorized

since may the ultimaker has taken over my life. which is not a bad thing. im going to be putting all the 3d printing exploits on a new blog here.

 

Leave a Comment more...

PySide in maya 2010.

by on Jan.01, 2012, under Uncategorized

The last time i tired this it broke and it broke good, but this time when i installed pyside, i made sure it was the 64bit version from:

http://developer.qt.nokia.com/wiki/PySide_Binaries_Windows

maya 2010 uses python 2.6, so make sure you have that installed and then install pyside on that.

Getting pyside to lauch in maya was as easy as:

**EDIT: Forgot to check to the instance..
Checking for the instance gets rid of this error:
# Error: RuntimeError: A QApplication instance already exists. #

<br />
import sys<br />
sys.path.append('C:/Python26/Lib/site-packages/')# this is where python and pyside exist.<br />
#from PySide import QtCore, QtGui<br />
from PySide.QtCore import *<br />
from PySide.QtGui import *<br />
# Create a Qt applicatio<br />
app = QApplication.instance()<br />
if app == None:<br />
    app = QApplication(sys.argv)<br />
# Create a Label and show it<br />
label = QLabel("Hello World")<br />
label.show()<br />
# Enter Qt application main loop<br />
app.exec_()<br />
sys.exit()<br />

That loads hello world.

Next up, so you can load the .ui file in a python app with out having to compile the file.
Nathan Horne wrote a nice wrapper:
PySide_loadUiType.py

So then you can do this:

<br />
&amp;amp;amp;lt;pre&amp;amp;amp;gt;from PySide import QtCore, QtGui<br />
from PySide_loadUiType import loadUiType<br />
form_class,base_class = loadUiType('C:/temp/sgToolCreator02.ui')<br />
class AssetTaskCreator(form_class, base_class):<br />
    def __init__(self, parent=None):<br />
        super(AssetTaskCreator, self).__init__(parent)<br />
        self.setupUi(self)<br />
        #i have a button in the ui, i can now assign it a function that exist out side the ui:<br />
        # in the qt designer, i have called my button: createButton<br />
        # so if i want to assign something, i do it like this:<br />
        self.createButton.clicked.connect(self.onCreateButton)<br />

Then the rest of the ui goes below this point.
So if i make any changes to the layout of the ui, as long as i dont change the names of the ui elements that i have already assigned functions.
everything will work fine.

2 Comments more...

ThemGreeks

by on Jul.24, 2011, under Uncategorized

Since April 2011 i have been activley involved with the animated short film called ThemGreeks.

What interests me most about the film is that everyone is working remotely, so there is a huge technology and infrastructure that has to be worked out to make this work.

 

 

 

Leave a Comment more...

arduino cont.

by on Jan.12, 2011, under Arduino, Coding, Electronics, Uncategorized

Some photos of the prototyping with the lcd and relay replacing the transistor, as well as my workspace:

arduino__cont_001arduino__cont_003arduino__cont_005

arduino__cont_008arduino__cont_010arduino__cont_012

arduino__cont_013

More Photos and code soon.

Leave a Comment :, , , more...

Jump in to Arduino 002

by on Dec.10, 2010, under Uncategorized

I have been crazy busy at the moment with work  and organising for christmas holidays.

I have been hanging out every thursday at the site3 lab (makerspace) here in toronto. There are some good friendly folks here. I could learn alot from them.

I havent spent much time on the hardware, thou i have found a small box i want to try and fit the project in.

I have done a ton of code work, because i can do that on any computer i have access to with out the arduino connected.

Here is my latest iteration:

</code>
/*
simple program for setting my canon cameras shutter time.

I do long welding glass exposures and this will come in handy so i wont need to hold the trigger down for too long.
The arduino will do that for me.

*/
//start includes
//http://www.arduino.cc/en/Reference/LiquidCrystal
#include <LiquidCrystal.h>
//end includes
//
// start shutter pins
#define SHUTTER 12    //definesthe shutter control
#define TRIGGER 11    // defines the trigger button
#define UP      10    // defines the +1 second button
#define DOWN    9    // defines the -1 second button
#define MODE    8     // defines the -1 second button
#define SECOND  1000  // defines how long a second is
// end shutter pins
//
// start shutter vars
long curTime = 1000; // sets the current time to be one second at the start of the program
int val = 0;           // this is the trigger button control
int modeButton = 0;
int upButton = LOW;
int downButton = LOW;
int currentMode = 0; // modes 1:,2:,3:
// end shutter vars
// shutter timing //
int idx = 15;
int lastMode = 99;
//
//backup
//String shutterSettings[]   = {"10'","9'30\"","9'","8'30\"","8'","7'30\"","7'","6'30\"","6'","5'30\"","5'","4'30","4'","3'30\"","3'","2'30\"","2'","1'30\"","1'","55\"","50\"","45\"","40\"","35\"","30\"","25\"","20\"","15\"","13\"","10\"","8\"","6\"","5\"","4\"","3\"2","2\"5","2\"","1\"6","1\"3","1","0\"8","0\"6","0\"5","0\"4","0\"3","NONE","4","5","6","8","10","13","15","20","25","30","40","50","60","80","100","125","160","200","250","320","400","500","640","800","1000","1250","1600","2000","2500","3200","4000","5000","6400","8000"};
String shutterSettings[]   = {"10'","9'30\"","9'","8'30\"","8'","7'30\"","7'","6'30\"","6'","5'30\"","5'","4'30","4'","3'30\"","3'","2'30\"","2'","1'30\"","1'","55\"","50\"","45\"","40\"","35\"","30\"","25\"","20\"","15\"","13\"","10\"","8\"","6\"","5\"","4\"","3\"","2\"","1\""};
//long delaySettings[]       = {600000000, 570000000, 540000000, 510000000, 480000000, 450000000, 420000000, 390000000, 360000000, 330000000, 300000000, 0, 240000000, 210000000, 180000000, 150000000, 120000000, 90000000, 60000000, 55000000, 50000000, 45000000, 40000000, 35000000, 30000000, 25000000, 20000000, 15000000, 13000000, 10000000, 8000000, 6000000, 5000000, 4000000, 3000000, 2000000, 1000000};
long delaySettings[]       = {600000, 570000, 540000, 510000, 480000, 450000, 420000, 390000, 360000, 330000, 300000, 0, 240000,210000, 180000, 150000, 120000, 90000, 60000, 55000, 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 13000, 10000, 8000, 6000, 5000, 4000, 3000, 2000, 1000};
//
// start lcd setup
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// end lcd setup
//
// setup
void setup()
{
 pinMode(SHUTTER,OUTPUT);
 pinMode(TRIGGER,INPUT);
 pinMode(UP,INPUT);
 pinMode(DOWN,INPUT);
 pinMode(MODE,INPUT);
 //
 //
 Serial.begin(9600);      // open the serial port at 9600 bps:
 //                       // so we can see what the arduino is doing before we attach the lcd screen later.
 //lcd pins
 //
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
 lcd.clear();
 // Print a message to the LCD.
 //lcd.print("Shutter Cnt v004");
 printFirstRow("Shutter Cnt v004");
}
//
//  fuction to clear the whole first row.
//
void clearFirstRow()
{
 lcd.setCursor(0, 0);
 lcd.print("                ");
}
//
//  fuction to clear the whole second row.
//
void clearSecondRow()
{
 lcd.setCursor(0, 1);
 lcd.print("                ");
}
//
//    a function fo print stuff on the first line
//
void printFirstRow(String toPrint)
{
 clearFirstRow();
 lcd.setCursor(0, 0);
 lcd.print(toPrint);
}
//
//    a function fo print stuff on the second line
//
void printSecondtRow(String toPrint)
{
 clearSecondRow();
 lcd.setCursor(0, 1);
 lcd.print(toPrint);
}
//
//  pull the delay and the lcd text from the arrays using the index.
//
long setLCDReturnDelay(int id)
{
 //
 String displayTime = shutterSettings[id];
 long delayTime = delaySettings[id];
 //
 //  convert the time to something easy to understand on the lcd
 displayTime = displayTime.replace("'","m");
 displayTime = displayTime.replace("\"","sec");
 printSecondtRow(displayTime);
 String strid = id;
 Serial.print("DEBUG: index:"+strid+"\n");
 Serial.print("DEBUG: lcd print:"+displayTime+"\n");
 //Serial.print("DEBUG: delay time:"+delayTime+"\n");
 return delayTime;
}
/*
TODO:

 get modes working.
 // long exposure
 // time lapse
 // time lapse + long exposure
 // sound trigger?
 maybe:
 single exposure
 time lapse + multi exposure
 sound trigger

 frre mode to set the trigger time, or canon defualt:
 30",25",20",15",13",10",8",6",5",4, 3"2,2"5,2",1"6,1"3,1" 0"8,0"6,0"5,0"4,0"3,,4,5,6,8,10,13,15,20,25,30,40,50,60,80,100,125,160,200,250,320,400,500,640,800,
 1000,1250,1600,2000,2500,3200,4000,5000,6400,8000,
 extras:
 40",45",50", 55",1', 1'30",2',2'30",3',3'30",4',4'30,5',5'30",6',6'30",7',7'30",8',8'30",9',9'30,10'
 String shutterSettings[] = {"10'","9'30","9'","8'30"","8'","7'30"","7'","6'30"","6'","5'30"","5'","4'30","4'","3'30"","3'","2'30"","2'","1'30"","1'","55"","50"","45"","40"","35"","30"","25"","20"","15"","13"","10"","8"","6"","5"","4"," 3"2","2"5","2"","1"6","1"3","1" 0"8","0"6","0"5","0"4","0"3","NONE","4","5","6","8","10","13","15","20","25","30","40","50","60","80","100","125","160","200","250","320","400","500","640","800","1000","1250","1600","2000","2500","3200","4000","5000","6400","8000"};

 get down/ negative time sorted out
 //  currently if it is less than 1000 it become a negative.
 // cant delay in negative time.
 //
 get counter working for trigger delay
 // currently delay = curtime.
 // should be a for loop ,
 // for every second
 print curseccond of total time
 delay second

 // display mode and times in real world seconds.
 // display high speed in mili seconds and canon shutter settings.
 // 1000 ms  || 1sec
 // 1ms || 1000/sec

*/
// the loop function
void loop()
{
 // get the vars.
 upButton = digitalRead(UP);
 downButton = digitalRead(DOWN);
 val = digitalRead(TRIGGER);
 modeButton = digitalRead(MODE);
 //
 //
 // mode settings:
 //
 if (modeButton == HIGH)
 {
 if (currentMode >= 2)  // 2 is currently the highest setting.
 {
 currentMode = 0;
 }
 else
 {
 currentMode++;
 }
 //
 //
 //
 if ( currentMode != lastMode)
 {
 if (currentMode == 0)
 {
 printFirstRow("1:Single Exp");
 }
 else if (currentMode == 1)
 {
 printFirstRow("2:Time Lapse");
 }
 else if (currentMode == 2)
 {
 printFirstRow("3:Sound Trigger");
 }
 lastMode = currentMode;
 String strCurMode = lastMode;
 Serial.print("DEBUG: current Mode:"+strCurMode+"\n");
 }
}
 //
 if (upButton == HIGH)
 {
 // adds one second on to current time
 //
 curTime = curTime + SECOND;
 //
 Serial.print("DEBUG: up button in high\n");
 //
 if (idx != 36)
 {
 idx++;
 }
 else
 {
 idx = 36;
 }
 Serial.print(idx);
 curTime = setLCDReturnDelay(idx);
 delay(200);
 }
 if (downButton == HIGH)
 {
 /* a little more complex.
 the shutter doesnt understand negative numbers.... doesnt work like that
 */
 Serial.print("DEBUG: down button high\n");
 //
 if (idx != 0)
 {
 idx--;
 }
 else
 {
 idx = 0;
 }
 Serial.print(idx);
 Serial.print(curTime);
 Serial.print("\n");
 //lcd.setCursor(0, 1);
 //lcd.print(curTime);
 curTime = setLCDReturnDelay(idx);
 delay(200);
 }
 //
 if (val == HIGH)
 {
 Serial.print("DEBUG: value is high\n");
 // takes the photo.
 String secConvert = (curTime /1000);
 lcd.setCursor(0, 1);
 lcd.print("open for "+secConvert+"s");
 Serial.print(curTime);
 Serial.print("\n");
 Serial.print(secConvert);
 Serial.print("\n");
 digitalWrite(SHUTTER,HIGH);
 //need to convert to milliseconds in stead of micro seconds, some numbers too high.
 delay(curTime);
 digitalWrite(SHUTTER,LOW);
 //
 lcd.setCursor(0, 1);
 lcd.print("shutter closed");
 delay(500);
 curTime = setLCDReturnDelay(idx);
 }
 // delays the loop for a tad
 delay(200);
 //Serial.print("DEBUG: end loop\n");
}
<code>

I have added some functions to help with clearing and adding data to my lcd.

Also 2 arrays that i treat like a python dictonary, like a key / value system.

Thanks to the folks on the arduino forum for the help.
I set up shutter times for everthing over a second, because those are the most usefull to me a t the moment.

Im going to start looking at the Aiko library for the next iteration.

.

.

I will try in the next few days to post some new photos.

Leave a Comment more...

Gnomeo and Juiliet

by on Oct.13, 2010, under Uncategorized

Finally they posted a trailer for the movie i have been working on for the last year and a half.

Here is a link to the hd video:

http://www.youtube.com/watch?v=7_L_5vrHoWQ

Will have to add it to my demo reel at some point.

Leave a Comment more...

Carcassonne – Links to the different rules

by on Apr.22, 2010, under Uncategorized

Love this game.

I found a link to all the different rule pdf’s on “Rio Grande“‘ website here:

List of set i have:

Carcassonne

Carcassonne: River I – (There arn’t really any different rules to this)

Carcassonne: River II

Carcassonne Inns & Cathedrals

Carcassonne Traders & Builders  –  (I still don’t quite understand the rules for this)

Carcassonne The Princess & The Dragon

Leave a Comment more...

10 Simple Google Search Tricks – NewYorkTimes

by on Apr.14, 2010, under Uncategorized

I found this really useful, to get the answers from that i want.

10 Simple Google Search Tricks

Leave a Comment : more...

24th Sketch Crawl, Toronto

by on Sep.28, 2009, under Uncategorized

Last weekend was the 24th Sketch Crawl , I hung out with the guys and took some photos of them doing there stuff and finding bees.

http://www.flickr.com/photos/prottiwatts/sets/72157622413636658/

19_09_09_01219_09_09_01919_09_09_02119_09_09_01019_09_09_01519_09_09_00519_09_09_032Group

Leave a Comment :, , more...

python commands.getouput vs subprocess.Popen

by on Jul.02, 2009, under Uncategorized

I have been using the commands module for quite some time, purely because it is simple to use.
Now that i have to go to writing code to work on windows, its time to start using the suproccess module. Also to make it easier for the other hard core programmers i will be working with to read my code.

Using the commands module to get the output of a command:

</code>

import commands
output = commands.getoutput('ls -lah /home/')
outputList = output.split('\n')

print outputList
["kym.watts","guest"]

<pre><code>

The command that is run by Popen, needs to be supplied to the command as a list, no spaces.

Using subproccess command:

</code>
<pre class="c:firstline[1]">import subprocess
output = subprocess.Popen(["ls","-lah","/home/"], stdout=subprocess.PIPE).communicate()[0]
outputList = output.split('\n')

print outputList
["kym.watts","guest"]</pre>
<pre><code>

Im pretty sure that in a few months time i will have forgotten about this way of working.

Leave a Comment :, , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!