User avatar
seregus
Posts: 13
Joined: Wed Jul 18, 2012 1:29 pm
Contact: Website

Re: Driving multiple servos from the RaspberryPi

Sat Sep 15, 2012 9:59 pm

Hi,

Thanks a lot it did work wel!!!
Thank you very much!! Will see if I can drive servos without any additional Adafruit Board!

PS: I've just found a strange notice from another post here about "sed" command - it's a kind of "grep" - search and find text.

User avatar
davef21370
Posts: 874
Joined: Fri Sep 21, 2012 4:13 pm
Location: Earth But Not Grounded

Re: Driving multiple servos from the RaspberryPi

Tue Oct 02, 2012 4:50 pm

Could this be used for motor speed control ?

Thanks.
Apple say... Monkey do !!

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Tue Oct 02, 2012 6:53 pm

davef21370 wrote:Could this be used for motor speed control ?
Depends on what you really want. For example, you can get servos that are modified for continuous rotation, then the pulse width controls the speed/direction, rather than position. If you did that, then it'd do speed control for 8 motors. You might want some position/speed feedback though. This code effectively gives you 8 PWM outputs, with the restriction that only one can be active at a time, though if the code was a bit more intelligent it could allow for overlapping pulses. You'd still need all your PWMs to have the same frequency though, and just vary mark/space ratio. The best pulse width resolution you are going to get with this is approach is a few microseconds.

ToddFerrante
Posts: 19
Joined: Sun Sep 30, 2012 8:00 pm

Re: Driving multiple servos from the RaspberryPi

Thu Oct 04, 2012 2:53 am

I've been working on getting the servoblaster drivers up and running. I also was unsuccessful getting the files to load automatically, so I had to improvise. To start with, I made simple bash scripts to load and unload the driver. "sbload" works great, but "sbunload" doesn't completely unload the driver. I put these in my /usr/local/bin directory along with a copy of servoblaster.ko. After executing "sudo sbload", using the "echo servo=width > /dev/servoblaster" command sets the PWM pulse. I used the command line to drive a Jaguar motor controller used in the FIRST robotics competition. Video can be found here: http://www.youtube.com/watch?v=Uj7IhPEe3b4

For a little more useful user interface, I wrote up a longer bash script which gives a live display of the pulse widths of the 8 servos and allows adjustment using the arrow keys, page up and down keys, and number keys. The user can set values for the min, max, and neutral pulse width for each channel. The program initializes with the servos at their neutral values, so you don't break anything it these are hooked up to hardware. Pressing the up/down arrow keys adjusts the pulse width by the step increment (initially 100 uS). The step increment is adjusted with the page up/down keys. Initially the active channel is 0. The left/right arrow keys change the channel by one, or you can go directly to any channel by pressing its number key. The screen displays all the current PWM channel pulse widths, with the currently selected channel shown in red. The second line of text displays the step value for the active channel. Finally, pressing "x" resets all the servos to their neutral value, unloads the driver and exits the script.

Code follows. (Sorry about the formatting. Apparently tabs don't copy and paste well from leafpad to the forum.)
Todd F.

/usr/local/bin/sbload

Code: Select all

#!/bin/bash

echo "servoblaster loading"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
insmod $DIR/servoblaster.ko
major=$( sed -n 's/ servoblaster//p' /proc/devices )
[ "$major" ] && mknod -m 0666 /dev/servoblaster c $major 0
exit 0
/usr/local/bin/sbunload

Code: Select all

#!/bin/bash

echo "servoblaster unloading"
rm -f /dev/servoblaster
exit 0
/usr/local/bin/sbcontrol

Code: Select all

#!/bin/bash

#initialize arrays
min[0]=50
min[1]=50
min[2]=50
min[3]=50
min[4]=50
min[5]=50
min[6]=50
min[7]=50

max[0]=250
max[1]=250
max[2]=250
max[3]=250
max[4]=250
max[5]=250
max[6]=250
max[7]=250

neutral[0]=150
neutral[1]=150
neutral[2]=150
neutral[3]=150
neutral[4]=150
neutral[5]=150
neutral[6]=150
neutral[7]=150

inc[0]=10
inc[1]=10
inc[2]=10
inc[3]=10
inc[4]=10
inc[5]=10
inc[6]=10
inc[7]=10

red='\e[0;31m'
endColor='\e[0m'
active=0

#define functions

#display current pulse width values with active servo highlited
function prn_curr_pw {
active=$1
echo $active=${pw[$active]} > /dev/servoblaster
clear
for index in {0..7}
do
  if [ $index = $active ]; then
    echo -e ${red}$index":"${pw[$index]}0${endColor}" \c" 
  else
    echo -e $index":"${pw[$index]}"0 \c" 
  fi
done
echo " "
echo Servo $active pulse width increment ${inc[$active]}0 uS.
}

#main program
sudo sbload
clear
pw[0]=${neutral[0]}
echo 0=${pw[0]} > /dev/servoblaster
echo -e ${red}"0:"${pw[$active]}0${endColor}" \c"
for index in {1..7}
do
  pw[$index]=${neutral[$index]}         #set pulse width to neutral values
  echo $index=${pw[$index]} > /dev/servoblaster
  echo -e $index":"${pw[$index]}"0 \c"   #display initial values
done
echo " "
echo Servo $active pulse width increment ${inc[0]}0 uS.
while true				#read keypresses and act
do
  read -sn1 a
  case "$a" in				#number keypress sets active servo
    0)  prn_curr_pw $a
        active=$a;;
    1)  prn_curr_pw $a
        active=$a;;
    2)  prn_curr_pw $a
        active=$a;;
    3)  prn_curr_pw $a
        active=$a;;
    4)  prn_curr_pw $a
        active=$a;;
    5)  prn_curr_pw $a
        active=$a;;
    6)  prn_curr_pw $a
        active=$a;;
    7)  prn_curr_pw $a
        active=$a;;
    x)  clear
	for index in {0..7}
	do
  	  pw[$index]=${neutral[$index]}         #set pulse width to neutral values
  	  echo $index=${pw[$index]} > /dev/servoblaster
  	  echo -e $index":"${pw[$index]}"0 \c"   #display final values
	done
	echo " "	
	sudo sbunload
	exit
  esac
  test "$a" == `echo -en "\e"` || continue
  read -sn1 a
  test "$a" == "[" || continue
  read -sn1 a
  case "$a" in
    A)  let "new=${pw[$active]}+${inc[$active]}" 	#keypress up arrow
	if [ "$new" -le "${max[$active]}" ]; then	#increase width
	  let "pw[$active]=$new"
	fi
        prn_curr_pw $active;;
    B)  let "new=${pw[$active]}-${inc[$active]}"	#keypress up arrow
	if [ "$new" -ge "${min[$active]}" ]; then	#decrease width
	  let "pw[$active]=$new"
	fi
        prn_curr_pw $active;;
    C)  let "active=$active+1"				#keypress left arrow
	if [ "$active" -eq 8 ]; then			#previous servo number
	  active=0
	fi
	prn_curr_pw $active;;
    D)  let "active=$active-1"				#keypress right arrow
	if [ "$active" -eq -1 ]; then			#next servo number
	  active=7
	fi
	prn_curr_pw $active;;
    5)  let "inc[$active]=${inc[$active]}+1"		#keypress pageup
	prn_curr_pw $active;;				#increase step
    6)  let "new=${inc[$active]}-1"			#keypress pageup
	if [ "$new" -ge 1 ]; then			#decrease width
	  let "inc[$active]=$new"
	fi
        prn_curr_pw $active;;
  esac
done

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Thu Oct 04, 2012 6:04 am

ToddFerrante wrote:For a little more useful user interface, I wrote up a longer bash script which gives a live display of the pulse widths of the 8 servos and allows adjustment using the arrow keys, page up and down keys, and number keys.
That's a nice easy to use interface, thanks. Just one small comment, you should probably add "rmmod servoblaster" to your sbunload script.

ToddFerrante
Posts: 19
Joined: Sun Sep 30, 2012 8:00 pm

Re: Driving multiple servos from the RaspberryPi

Thu Oct 04, 2012 12:37 pm

Thanks, Richard. I'll add that line.

Any thoughts on how the turbo mode effects the output signals of servoblaster? I've got it disabled currently, but I'd like to enable it if won't mess with the signal timing. It seems to me that if the clock frequency can change to faster speeds to meet computational demand, this might lead to unpredictable pulse width changes on the output pulse train. Depending on what the PWM signals are driving, this could have potentially dangerous results.

For example, the Jaguar motor controllers I'm controlling are typically used for the drive motors for robots in the FIRST robotics competition. These robots weigh around 150 pounds and reach speeds ~15 ft/sec. A midrange pulse width of 1500uS is the neutral signal, giving the motors zero voltage. If the clock speed changed from 700MHz to 1000MHz and the pulse width changed from 1500uS to 1050uS, that would correspond to a ~50% speed command. Not a trivial thing.

If I'm right, it would make sense to make it clear in the README that turbo mode should be disabled when using servoblaster.

Todd F.

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Thu Oct 04, 2012 7:27 pm

ToddFerrante wrote:Any thoughts on how the turbo mode effects the output signals of servoblaster?
It shouldn't make any difference; servoblaster uses the PWM clock to pace itself and that is set up to run direct from the crystal oscillator. So Gert's comments say, anyway:

Code: Select all

   // Derive PWM clock direct from X-tal
   // thus any system auto-slow-down-clock-to-save-power does not effect it
   // The values below depends on the X-tal frequency!
   PWMCLK_DIV  = 0x5A000000 | (32<<12); // set pwm div to 32 (19.2/3 = 600KHz)
   PWMCLK_CNTL = 0x5A000011; // Source=osc and enable

bertr2d2
Posts: 89
Joined: Wed Aug 08, 2012 10:12 pm

Re: Driving multiple servos from the RaspberryPi

Fri Oct 05, 2012 10:37 am

Hi Gert,
Gert van Loo wrote:I received a question about the PWM clock frequency yesterday.
You are not the first to have an 'issue' where the clock/frequency/output signal are not what is expected.
I have not had time to look into the details. For my code I was relying in the data sheet and my general knowledge
how most circuits on the chip work.
I think the original designer of the PWM module no longer works with use which
means I have to delve deep into the Verilog code or run a simulation to see what is going on.
I am afraid it will be while before I have time for that.
Don't hesitate to poke me again in two weeks time if you have not received an answer.
The magic behind the clock and DMA/PWM is really interesting . IMHO this "framework" could be used to generate signals for a wide range of applications which needs exact timings (for PPM , stepper motor / LinuxCNC etc pp.) to get around the realtime constraints. Could you describe how to setup the timer for different time base ?

Regards

Gerd

ToddFerrante
Posts: 19
Joined: Sun Sep 30, 2012 8:00 pm

Re: Driving multiple servos from the RaspberryPi

Sat Oct 06, 2012 12:01 am

Video of the script user interface here.
http://youtu.be/oE-9DMR_x5Q
Todd F.

Smcintosh
Posts: 13
Joined: Tue Jul 31, 2012 11:37 am

Re: Driving multiple servos from the RaspberryPi

Sat Oct 13, 2012 8:32 pm

I have a big favour to ask. Please continue this development into an easily usable pack to get servos working direct from the Pi. I will explain my request...

I am a secondary school physics teacher who has used the Pi to launch a Computer science club after school... All is going well with getting started with programming and linux however (predictably) my attending students have a massive desire to start with robotics. Since we have 6 Pis available I am desperate to make servos run without additional hardware as this will enable me to get simple wheeled robots working and hopefully control them with Python.

bulldog5046's post was very helpful getting me started but I have been unsuccessful getting servos to run at this time. This may well be an issue with the voltage level from the GPIO however I am not sure as other have it working fine with 3.3v (will depend on servo I know and I guess this is my issue)

I am very interested In the additional interface code written by ToddFerrante for an interface however I have no idea how to make this work. I guess the code just needs to be executed in bash files but this is beyond my current knowledge.

I understand that this thread is ground floor up development but I post in the hope that I can communicate how much help this will be to help school kids get into computer science. This kind of thing is exactly what kids what to do. I will continue to try and learn how to get this working so I can make it accessible to the kids who come to my club but as a novice myself I am limited by my own ability.

I will skill myself up to make this work however it will take time. If anyone feels motivated to package this up in the most user friendly way possible please do, I can not express the impact it would have on teaching computer science and I am sure there are people here who can do it easily.

This is what the pi is for :D

ToddFerrante
Posts: 19
Joined: Sun Sep 30, 2012 8:00 pm

Re: Driving multiple servos from the RaspberryPi

Sat Oct 13, 2012 10:00 pm

Smcintosh,
Whereabouts in the world are you located?
Are you having trouble on the software end, or the hardware end of getting your servos working?
I just posed a new thread about a Python program I wrote that lets you control the servos with a joystick.
Todd F.

Smcintosh
Posts: 13
Joined: Tue Jul 31, 2012 11:37 am

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 8:14 am

I am in Hull/UK

I do not know if the problem is software or hardware, I currently have too many variables to be able to id where the problem is.

I have installed the PiBits/Servoblaster stuff and seem to be able to send commands to the file (echo 1-120 > etc etc) but I do know know if it is working as I can not run a servo from any of the GPIO pins.

The readme says "Please read the driver source for more details, such as which GPIO pin maps to
which servo number", I am unable to find that info to ensure I am connecting on the right pin so I currently have try them all. My only option at the moment is check each pin using an oscilloscope at work this week to identify which pins is which servo.

I am pretty sure I have the servo is wired correctly however I have ordered a servo driver just the check I have not bricked them.

This is why I posted above, I still have some avenues to explore but I am sure I will be making a novice mistake somewhere.

User avatar
joan
Posts: 12738
Joined: Thu Jul 05, 2012 5:09 pm
Location: UK

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 10:12 am

Smcintosh wrote:...
The readme says "Please read the driver source for more details, such as which GPIO pin maps to
which servo number", I am unable to find that info to ensure I am connecting on the right pin so I currently have try them all....
The relevant snippet of code is
// Map servo channels to GPIO pins
static uint8_t servo2gpio[] = {
4, // P1-7
17, // P1-11
18, // P1-12
21, // P1-13
22, // P1-15
23, // P1-16
24, // P1-18
25, // P1-22
};
This means servoblaster 0 is mapped to gpio4 which is physically connected to P1-7, ..., servoblaster 7 is mapped to gpio25 which is physically connected to P1-22.

See http://elinux.org/Rpi_Low-level_peripherals.

So

connect a servo control lead (typically white or yellow/orange) to P1-7,
connect a separate (not Pi) 5V power supply to the servo middle (red) lead,
connect the power supply's ground to the servos ground lead (typically black or brown)
connect the separate power supply's ground to the Pi's ground.

(If the servo is a miniature type you may be able to power it directly off the Pi's 5V pin for testing purposes. Your Pi, your risk.)

and then echo "0=150" >/dev/servoblaster etc.

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 11:23 am

Smcintosh wrote:seem to be able to send commands to the file (echo 1-120 > etc etc)
Hi, there is scope for confusion at this stage if you've not actually created the /dev/servoblaster device node correctly; you could just be writing "1=120" or whatever to a regular file in /dev. Below I load the module, I check with 'lsmod' that the module is indeed loaded, I look in /proc/devices to check the major number of the servoblaster device (it is 251 in my case), I use "ls -l" to examine the device node, and I echo a command to it. Note that the device node description displayed with "ls -l" starts with a 'c' for character device and it has major number 251 in my case to match what was in /proc/devices. If you can do all that without any error messages then you should definitely be able to see a continuous servo control pulse on the relevant GPIO pin. In my example I set servo 1, so you'd look for the pulse on GPIO 17 which is P1 pin 11. I used this servo http://www.hobbytronics.co.uk/robotics/ ... mall-servo connected directly to the Pi 5v and GPIO pins successfully, but as Joan says, you Pi, your risk :)

Code: Select all

root@raspberrypi:/home/richard/ServoBlaster# insmod ./servoblaster.ko 
root@raspberrypi:/home/richard/ServoBlaster# lsmod
Module                  Size  Used by
servoblaster            4040  0 
snd_bcm2835            20157  0 
snd_pcm                74834  1 snd_bcm2835
snd_page_alloc          4951  1 snd_pcm
snd_seq                52536  0 
snd_seq_device          6300  1 snd_seq
snd_timer              19698  2 snd_seq,snd_pcm
snd                    52489  5 snd_timer,snd_seq_device,snd_seq,snd_pcm,snd_bcm2835
8192cu                485042  0 
root@raspberrypi:/home/richard/ServoBlaster# grep servoblaster /proc/devices 
251 servoblaster
root@raspberrypi:/home/richard/ServoBlaster# ls -l /dev/servoblaster
crw-rw-rw- 1 root root 251, 0 Oct 14 12:02 /dev/servoblaster
root@raspberrypi:/home/richard/ServoBlaster# echo 1=120 > /dev/servoblaster
root@raspberrypi:/home/richard/ServoBlaster# 
One other thing to note, someone had problems with the pulse timing and they had to specify some parameters on the insmod line to get what they wanted. I don't know why only one person apparently had that issue but if you can get a 'scope on the GPIO pin you should see a 1.2ms pulse repeating every 20ms. If you see something other than that, let us know. Unfortunately I'm a long way from Hull or I'd happily call round to give you a hand.

ToddFerrante
Posts: 19
Joined: Sun Sep 30, 2012 8:00 pm

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 12:40 pm

I can never remember all the arbitrary pin numbers on the GPIO, so I just look at the picture of the GPIO pins (http://elinux.org/images/2/2a/GPIOs.png). Look at the dark green pins and count down from the top left. The top left green pin is servo 0. The next one down is servo 1. Moving to the right is servo2. And so on. I just keep that picture handy for quick reference. (Loading on your smartphone works.)
Todd F.

User avatar
joan
Posts: 12738
Joined: Thu Jul 05, 2012 5:09 pm
Location: UK

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 2:18 pm

rgh wrote:...If you can do all that without any error messages then you should definitely be able to see a continuous servo control pulse on the relevant GPIO pin. In my example I set servo 1, so you'd look for the pulse on GPIO 17 which is P1 pin 11...
A side effect of a gpio monitor I wrote to log input levels is that it also logs output levels. Source here http://www.raspberrypi.org/phpBB3/viewt ... 89#p193289
I used sudo ./gpio-monitor -m0-31 -s51 in combination with 0=249 and 7=249 to servoblaster.
It may be useful to those without scopes.

Smcintosh
Posts: 13
Joined: Tue Jul 31, 2012 11:37 am

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 2:42 pm

Thanks jone I know I am doing the hardware right now. It must be a software issue as I have no idea what I am doing. WIll check with a scope this week but Ill bet at this point I am not getting pulses.

I tried to emulate what you have done from your consol Todd but could not work out what
root@raspberrypi:/home/richard/ServoBlaster# ls -l /dev/servoblaster
crw-rw-rw- 1 root root 251, 0 Oct 14 12:02 /dev/servoblaster
is all about.

/dev/servoblaster is there so it has been created, should I see anything in the file if I open it with Pico say?

User avatar
joan
Posts: 12738
Joined: Thu Jul 05, 2012 5:09 pm
Location: UK

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 2:54 pm

Check my post above about gpio-monitor if you don't have a scope.

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Sun Oct 14, 2012 3:50 pm

Smcintosh wrote:/dev/servoblaster is there so it has been created, should I see anything in the file if I open it with Pico say?
No, it is not the sort of file you can open with a text editor. It represents an interface to the driver, and all you can do is write commands to it (echo 1=120 > /dev/servoblaster, for example). That string, "1=120", gets fed to the driver and the driver interprets it.

So far as the "ls -l /dev/servoblaster" part of my post is concerned, you need to type "ls -l /dev/servoblaster" at the command prompt and check you see similar output to me. You should get a line that starts "crw-rw-rw-" which says it is a character device and everyone has read/write permission, and the "251" is the major device number which should match the number you see for servoblaster in /proc/devices. I'm just suggesting some basic debug steps to make sure you really are talking to the driver correctly.

Richard (not Todd ;-))

Smcintosh
Posts: 13
Joined: Tue Jul 31, 2012 11:37 am

Re: Driving multiple servos from the RaspberryPi

Mon Oct 15, 2012 10:16 am

rgh wrote: So far as the "ls -l /dev/servoblaster" part of my post is concerned, you need to type "ls -l /dev/servoblaster" at the command prompt and check you see similar output to me. You should get a line that starts "crw-rw-rw-" which says it is a character device and everyone has read/write permission, and the "251" is the major device number which should match the number you see for servoblaster in /proc/devices. I'm just suggesting some basic debug steps to make sure you really are talking to the driver correctly.
Richard (not Todd ;-))
[/quote]

Sry Richard :D and thanks for your response.

Thats the problem then, I do not get that line in response (not sure what I got as it was yesterday and I am on a different Pi at work now). I will try reinstalling the drivers here and find where it goes wrong.

Ph1lj2
Posts: 35
Joined: Sat Oct 20, 2012 9:21 pm

Re: Driving multiple servos from the RaspberryPi

Mon Oct 22, 2012 6:11 pm

Help ....

After checking and rechecking my entered code all I get is

"bash: sudo sbload: command not found"

I'm running it from LXTerminal on 'whezzy', all the files are in the /usr/local/bin folder
servoblaster.ko, sbload, sbunload & sbcontrol.

The two files sbload & sbunload I created using leafpad, the sbcontrol I cut and pasted into a leafpad file, the servoblaster.ko I copied from the the PiBits folder

I have watched you video, and as far as I can tell I'm doing things correctly

what am I doing wrong

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Mon Oct 22, 2012 6:46 pm

Hi Ph1lj2, sounds like you may not have made the sbload script executable. Try "chmod +x /usr/local/bin/sbload". If that does work, maybe /usr/local/bin is not in your path, in which case try invoking it with an absolute path: sudo /usr/local/bin/sbload

Ph1lj2
Posts: 35
Joined: Sat Oct 20, 2012 9:21 pm

Re: Driving multiple servos from the RaspberryPi

Mon Oct 22, 2012 6:52 pm

rgh wrote:Hi Ph1lj2, sounds like you may not have made the sbload script executable. Try "chmod +x /usr/local/bin/sbload". If that does work, maybe /usr/local/bin is not in your path, in which case try invoking it with an absolute path: sudo /usr/local/bin/sbload
Ok so using chmod got me a stage further, but now after "sudo sbload" I get :-

servoblaster loading
Error could not insert module /usr/local/bin/servoblaster.ko: Invalid module format

with either absolute or direct addressing

any ideas

rgh
Posts: 211
Joined: Fri Nov 25, 2011 3:53 pm

Re: Driving multiple servos from the RaspberryPi

Mon Oct 22, 2012 7:36 pm

Ph1lj2 wrote: Error could not insert module /usr/local/bin/servoblaster.ko: Invalid module format
That most likely means the servoblaster.ko module needs rebuilding to match the kernel you are running. I'll update the one on github to match the latest kernel in a day or two.

Smcintosh
Posts: 13
Joined: Tue Jul 31, 2012 11:37 am

Re: Driving multiple servos from the RaspberryPi

Mon Oct 22, 2012 8:02 pm

I finally had time to try this all again and got it working. No idea what was wrong last time, I must have just messed something up.

Being on a roll I then tried to use python to send commands to servoblaster and it worked a treat. For anyone trying to do this themselves I used the subprocess module.

Code: Select all

from subprocess import call
from time import sleep

call (["echo 0=170 > /dev/servoblaster"], shell=True)
sleep(1)
call (["echo 0=130 > /dev/servoblaster"], shell=True)
Sleep(1)
call (["echo 0=150 > /dev/servoblaster"], shell=True)

Now if I can use python to load servoblaster I win! but its late so I will try another day.

Thanks to all who helped on this thread and sent extra info by email. If you interested heres a simplified set of instillation instructions I wrote for my club http://www.novitiate.co.uk/?p=72.

Return to “Automation, sensing and robotics”

Who is online

Users browsing this forum: No registered users and 23 guests