So, i was making this but that code makes the servo to get back (0 to 120, then 120 to 0) but i need it to stay in 120 and when i press again, it go to 0. its that possible? if yes, please help me
This is the current code: `
#include "IRremote.h"
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int receiver = 11;
int pos = 0; // variable to store the servo position
int boardPin = 13;
int powerButton = 0;
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
void translateIR() // takes action based on IR code received
// describing Remote IR codes
{
switch(results.value)
{
case 0x807FAA55: Serial.println("POWER"); powerButton = 1; break;
case 0xFFE21D: Serial.println("FUNC/STOP"); break;
case 0xFF629D: Serial.println("VOL+"); break;
case 0xFF22DD: Serial.println("FAST BACK"); break;
case 0xFF02FD: Serial.println("PAUSE"); break;
case 0xFFC23D: Serial.println("FAST FORWARD"); break;
case 0xFFE01F: Serial.println("DOWN"); break;
case 0xFFA857: Serial.println("VOL-"); break;
case 0xFF906F: Serial.println("UP"); break;
case 0xFF9867: Serial.println("EQ"); break;
case 0xFFB04F: Serial.println("ST/REPT"); break;
case 0xFF6897: Serial.println("0"); break;
case 0xFF30CF: Serial.println("1"); break;
case 0xFF18E7: Serial.println("2"); break;
case 0xFF7A85: Serial.println("3"); break;
case 0xFF10EF: Serial.println("4"); break;
case 0xFF38C7: Serial.println("5"); break;
case 0xFF5AA5: Serial.println("6"); break;
case 0xFF42BD: Serial.println("7"); break;
case 0xFF42BB: Serial.println("8"); break;
case 0x807F02FD: Serial.println("9"); break;
case 0xFFFFFFFF: Serial.println(" REPEAT");break;
default:
Serial.println(" other button : ");
Serial.println(results.value);
}// End Case
delay(500); // Do not get immediate repeat
} //END translateIR
void setup() {
irrecv.enableIRIn(); // Start the receiver
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo.write(0);
pinMode (boardPin,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // have we received an IR signal
{
translateIR();
if (powerButton) {
turnOffSwitch();
}
turnOffSwitch(); // remove this if you only want power button to activate the servo.
irrecv.resume();
}
}
void turnOffSwitch () {
myservo.write(120);
delay(100;
myservo.write(0);
powerButton = 0; //resets powerButton to reset servo
// turnOffNoise = 1;
}
Your topic has been moved to a more suitable location on the forum. Installation and Troubleshooting is not for problems with (nor for advice on) your project.
Please post your code here (don't forget to use code tags) so people don't have to visit another site.
Hi
your code does not compile,
got a syntax error on line 84:
wrong delay(100; correct delay(100);
The servo is doing exactly what you tell it to do.
You tell the servo to go to 120, do a delay of 100 msec, and then send it to 0.
You send the servo to 120, see if this code helps:
(I just wrote, I didn't testify).
#include "IRremote.h"
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int receiver = 11;
int pos = 0; // variable to store the servo position
int boardPin = 13;
int powerButton = 0;
bool tag = false;
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
void translateIR() // takes action based on IR code received
// describing Remote IR codes
{
switch (results.value)
{
case 0x807FAA55: Serial.println("POWER"); powerButton = 1; break;
case 0xFFE21D: Serial.println("FUNC/STOP"); break;
case 0xFF629D: Serial.println("VOL+"); break;
case 0xFF22DD: Serial.println("FAST BACK"); break;
case 0xFF02FD: Serial.println("PAUSE"); break;
case 0xFFC23D: Serial.println("FAST FORWARD"); break;
case 0xFFE01F: Serial.println("DOWN"); break;
case 0xFFA857: Serial.println("VOL-"); break;
case 0xFF906F: Serial.println("UP"); break;
case 0xFF9867: Serial.println("EQ"); break;
case 0xFFB04F: Serial.println("ST/REPT"); break;
case 0xFF6897: Serial.println("0"); break;
case 0xFF30CF: Serial.println("1"); break;
case 0xFF18E7: Serial.println("2"); break;
case 0xFF7A85: Serial.println("3"); break;
case 0xFF10EF: Serial.println("4"); break;
case 0xFF38C7: Serial.println("5"); break;
case 0xFF5AA5: Serial.println("6"); break;
case 0xFF42BD: Serial.println("7"); break;
case 0xFF42BB: Serial.println("8"); break;
case 0x807F02FD: Serial.println("9"); break;
case 0xFFFFFFFF: Serial.println(" REPEAT"); break;
default:
Serial.println(" other button : ");
Serial.println(results.value);
}// End Case
delay(500); // Do not get immediate repeat
} //END translateIR
void setup() {
irrecv.enableIRIn(); // Start the receiver
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo.write(0);
pinMode (boardPin, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // have we received an IR signal
{
translateIR();
if (powerButton) {
tag = !tag;
turnOffSwitch();
}
//turnOffSwitch(); // remove this if you only want power button to activate the servo.
irrecv.resume();
}
}
void turnOffSwitch () {
if (tag == true)
{
myservo.write(120);
}
else {
myservo.write(0);
}
powerButton = 0; //resets powerButton to reset servo
// turnOffNoise = 1;
}