const int thresh = 50; // light sensor thresh
const int power = 40; // motor power
const int factor = 2; // multiplicative sweep increase
const int overshoot = 20; // turn additional after line found
const int initialTurn = 8; // first sweep size
int spin_left(int deg) {
nSyncedTurnRatio = -100;
nMotorEncoderTarget[motorA] = deg;
motor[motorA] = power;
}
int spin_right(int deg) {
nSyncedTurnRatio = -100;
nMotorEncoderTarget[motorA] = -deg;
motor[motorA] = -power;
}
int straight() {
nSyncedTurnRatio = +100;
motor[motorA] = power;
}
void stop() {
motor[motorA] = 0;
}
bool online() {
return SensorValue(lightSensor) < thresh;
}
void resetMotorEncoder() {
nMotorEncoder[motorA] = 0;
}
bool stateIdle() {
return nMotorRunState[motorA] == runStateIdle;
}
task main()
{
bFloatDuringInactiveMotorPWM = false;
nSyncedMotors = synchAB;
int lastDir = 0;
while (true) {
while ( online() ) { straight(); }
stop();
resetMotorEncoder();
int turn = initialTurn;
for ( int i = lastDir; !online(); i++ ) {
lastDir = i%2;
for ( int j = turn; j && !online() ; j-- ) {
if ( lastDir ) { spin_left(1); }
else { spin_right(1); }
}
turn *= factor;
}
if ( lastDir ) { spin_left(overshoot); }
else { spin_right(overshoot); }
while ( !stateIdle() ) { wait1Msec(1); }
}
}
Wednesday, January 16, 2008
NXT Line Follower (via RobotC)
This time via RobotC (http://www.robotc.net)
Tuesday, January 15, 2008
transcoding for IPod Touch
$ ffmpeg.exe -y -i INPUT -f mp4 -vcodec libx264 -level 21 -s 480x266 -b 768k -bt 768k -bufsize 2000k -maxrate 768k -g 250 -coder 0 -threads auto -acodec libfaac -ac 2 -ab 128k OUTPUT
I think I used higher audio bitrate. Had to back it off to transcode video off my Olympus camera.
Monday, January 14, 2008
NXT Line Follower
Programmed with the NXT-G (LabView).
Cribbed from http://www.bnxt.com/paper/line_follower
NXT Marble Lift
Trying to figure out the Mindstorms / NXT. Simple robot to save Daniella and I from having to manually move the marbles to the top of the marble run set.
Subscribe to:
Posts (Atom)