I'm trying to create a small laser "turret" with x-axis control. The arduino receives input through IR sensor. I'm having a problem where my servo will preform my up and reset function(moves and prints as intended), but When i preform the down function the servo does not move. I believe the function is executing (it outputs angle to LCD and text to serial monitor) but there is no movement. Any help would be greatly appreciated!
#include <IRremote.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
int IRPIN = 3;
int angle = 0;
int test = 0;
IRrecv irrecv(IRPIN);
decode_results results;
Servo spinnything;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
irrecv.enableIRIn();
lcd.begin(16, 2);
lcd.backlight();
spinnything.attach(5);
spinnything.write(angle);
lcd.setCursor(0, 0);
lcd.print("WARNING");
lcd.setCursor(2, 1);
lcd.print("!!!LASER!!!");
delay(1500);
lcd.clear();
}
void loop()
{
if (irrecv.decode(&results)) {
irrecv.resume();
}
if (results.value == 0xE172C837) {
up();
results.value = 0x00000000;
}
if (results.value == 0xE17228D7) {
down();
results.value = 0x00000000;
}if (results.value == 0xE1724CB3) {
reset();
results.value = 0x00000000;
}
lcd.setCursor(0,0);
delay(10);
}
void up() {
if (angle < 180) {
angle = angle + 18;
spinnything.write(angle);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Current Angle");
lcd.setCursor(3, 1);
lcd.print("=");
lcd.setCursor(5, 1);
lcd.print(angle);
Serial.print("up");
}
}
void down() {
if (angle > -180) {
angle = angle - 18;
spinnything.write(angle);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Current Angle");
lcd.setCursor(3, 1);
lcd.print("=");
lcd.setCursor(5, 1);
lcd.print(angle);
Serial.print("down");
}
}
int reset() {
angle = 0;
spinnything.write(angle);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Current Angle");
lcd.setCursor(3, 1);
lcd.print("=");
lcd.setCursor(5, 1);
lcd.print(angle);
Serial.print("reset");
}