/**
* Servocontrol (derived from processing Mouse 1D example.)
*
* Updated 24 November 2007
*/
// Use the included processing code serial library
import processing.serial.*;
int gx = 15;
int gy = 35;
int spos=90;
float leftColor = 0.0;
float rightColor = 0.0;
Serial port; // The serial port
void setup()
{
size(720, 720);
colorMode(RGB, 1.0);
noStroke();
rectMode(CENTER);
frameRate(100);
println(Serial.list()); // List COM-ports
//select second com-port from the list
port = new Serial(this, Serial.list()[1], 19200);
}
void draw()
{
background(0.0);
update(mouseX);
fill(mouseX/4);
rect(150, 320, gx*2, gx*2);
fill(180 - (mouseX/4));
rect(450, 320, gy*2, gy*2);
}
void update(int x)
{
//Calculate servo postion from mouseX
spos= x/4;
//Output the servo position ( from 0 to 180)
port.write("s"+spos);
// Just some graphics
leftColor = -0.002 * x/2 + 0.06;
rightColor = 0.002 * x/2 + 0.06;
gx = x/2;
gy = 100-x/2;
}
now the problem is that only the servo on pin 9 works. the servo on pin 10 does not move at all.
i have also checked my connections by attaching the 2nd servo on pin 10 to pin 9 to see if the connections are wrong and it worked.
could you please help me get both servos working??
Once you have the servos happy you can either modify your Processing sketch to send Bitlash commands, or go back to the code you have in hand and continue debugging.
Switching the motors was smart. You proved the motor is wired right. Of course there could be some issue with pin 10 or using two adjacent pins.
The next clever thing to do is run the sketch from the Arduino serial monitor. Also have the sketch echo back what it is doing:
case 'w':
Serial.write("servo2.write("); Serial.write(v);Serial.writeln(");
servo2.write(v);
v = 0;
break;
Think of testing with the serial monitor as unit testing the Arduino sketch. You want to make sure that works as expected before introducing Processing. Check that the servo is attached to pin 10 and the value in Serial.write(v).
After this, I would try a different port or a different servo library. Define the ports at the top of your sketch so you can change them easily. But first make sure your Arduino and the library supports pwm on the pin. Early versions of Servo only supported pins 9 and 10.
Here is something: Arduino Playground - Ps2mouse. On that page it is written - "There are NO external components needed: you can wire the mouse directly to the arduino. "
I have an old optical mouse which i'd like to use... BUT i have heard, that Arduino can handle current max 40 mA. Behind my optical mouse there is written 5V - 100mA. So is it safe to connect it directly to Arduino?
Does anyone know if mice with ball consume less current (mA)?
Is it bad that everything is connected to the same 5V pin?
At the moment only 2 servos and mouse are connected..
The Arudino board can only supply 1/2 amp max when on USB power and maybe 700-800ma when using the boards external power connector. You load is probably too much for the board as many people find they can't even power two servos (it depends of the specific servos used and the amount of mechancial load on them) without having the board reset intermittenly due to power droop. You would be better off using an external regualted 5vdc supply rated at 2-3 amps to power all those loads.
Is it true, that when i add too many devices to Arduino it may stop working / overheat?
Yes it is. However not likely to cause permanent damage as the USB power is protected with a 500ma thermofuse and and when powered through the external power connector the internal 5volt regulator with go into shutdown mode automatically if too much current is drawn or if the package gets too hot.