Building an IR tracked vehicle with a robotic arm and when the servo is attached to pin in void setup, motor shield stops responding. Still shows lights indicating directional change, just no output, as if the brake is not being released.
take out "s1.attach(3);" and motorshield runs fine but without servo.
any sudgestions?
here is the code....
#include <Servo.h>
#include <IRremote.h>
#include <IRremoteInt.h>
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo s1;
int angle1 = 160;
int angle2 = 10;
const int one = 0x8;
const int two = 0x808;
const int three = 0x408;
const int four = 0xC08;
const int five = 0x208;
const int six = 0xA08;
const int seven = 0x608;
const int eight = 0xE08;
const int nine = 0x108;
const int zero = 0x908;
const int enter = 0xD08;
const int on = 0xED;
const int off = 0x40ED;
const int up = 0x20ED;
const int down = 0x60ED;
int pinI1=8;
int pinI2=11;
int speedpinA=9;
int pinI3=12;
int pinI4=13;
int speedpinB=10;
int speada =250;
int speadb =125;
int speadc =90;
int ledpin=7;
void setup()
{
Serial.begin(9600);
s1.attach(3);
irrecv.enableIRIn();
pinMode(ledpin,OUTPUT);
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpinA,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpinB,OUTPUT);
}
void backward()
{
analogWrite(speedpinA,speada);
analogWrite(speedpinB,speada);
digitalWrite(pinI4,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI2,LOW);
digitalWrite(pinI1,HIGH);
}
void forward()
{
analogWrite(speedpinA,speada);
analogWrite(speedpinB,speada);
digitalWrite(pinI4,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI1,LOW);
}
void backwards()
{
analogWrite(speedpinA,speadc);
analogWrite(speedpinB,speadc);
digitalWrite(pinI4,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI2,LOW);
digitalWrite(pinI1,HIGH);
}
void forwardss() //SS=super slow
{
analogWrite(speedpinA,speadc);
analogWrite(speedpinB,speadc);
digitalWrite(pinI4,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI1,LOW);
}
void forwards()
{
analogWrite(speedpinA,speadb);
analogWrite(speedpinB,speadb);
digitalWrite(pinI4,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI1,LOW);
}
void left()
{
analogWrite(speedpinA,speada);
analogWrite(speedpinB,speada);
digitalWrite(pinI4,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI1,LOW);
}
void right()
{
analogWrite(speedpinA,speada);
analogWrite(speedpinB,speada);
digitalWrite(pinI4,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinI1,HIGH);
}
void lefts()
{
analogWrite(speedpinA,speadb);
analogWrite(speedpinB,speadb);
digitalWrite(pinI4,HIGH);
digitalWrite(pinI3,LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI1,LOW);
}
void rights()
{
analogWrite(speedpinA,speadb);
analogWrite(speedpinB,speadb);
digitalWrite(pinI4,LOW);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinI1,HIGH);
}
void leftss()
{
analogWrite(speedpinA,speadb);
digitalWrite(pinI4,HIGH);
digitalWrite(pinI3,LOW);
}
void rightss()
{
analogWrite(speedpinB,speadb);
digitalWrite(pinI2,LOW);
digitalWrite(pinI1,HIGH);
}
void stop()
{
digitalWrite(speedpinA,LOW);
digitalWrite(speedpinB,LOW);
}
void loop() {
if (irrecv.decode(&results)) {
if(results.value == one) {
right();
delay(200);
stop();
}
if(results.value == two) {
forward();
delay(1000);
stop();
}
if(results.value == three) {
left();
delay(200);
stop();
}
if(results.value == four) {
rights();
delay(200);
stop();
}
if(results.value == five) {
forward();
delay(200);
stop();
}
if(results.value == six) {
lefts();
delay(200);
stop();
}
if(results.value == seven) {
leftss();
delay(200);
stop();
}
if(results.value == eight) {
forwardss();
delay(200);
stop();
}
if(results.value == nine) {
rightss();
delay(200);
stop();
}
if(results.value == zero) {
backwards();
delay(200);
stop();
}
if(results.value == enter) {
backward();
delay(200);
stop();
}
if(results.value == on) {
digitalWrite(ledpin,HIGH);
}
if(results.value == off) {
digitalWrite(ledpin,LOW);
}
if(results.value == up) {
s1.write(angle1);
delay(100);
}
if(results.value == down) {
s1.write(angle2);
delay(100);
}
irrecv.resume();
}
}