Salve a tutti, scrivo qui sperando di trovare aiuto.
Pultroppo io non sono troppo esperto di Arduino, diciamo che come autodidatta me la cavo, ma ultimamente sono venuto a scontrarmi con un problema che proprio non riesco a capire.
Ho creato un piccolo robot su 2 ruote che si muove usando un normale telecomando della tv, ora volevo attaccarci sopra un vecchio progetto di un braccio robotico ( mosso da servocomandi ).
Ovviamente ho cercato un programma che lo facesse muovere con l'uso di due bottoni, i programmi funzionano entrambi, ma quando li unisco non riesco più a far muovere il braccio.
il primo programma usato per il telecomando è questo:
#include <IRremote.h> // Includo la libreria.
#define P0 0x91D //rinomina codice per pulsante 0
#define P1 0x1D //rinomina codice per pulsante 1
#define P2 0x81D //rinomina codice per pulsante 2
#define P3 0x41D //rinomina codice per pulsante 3
#define P4 0xC1D //rinomina codice per pulsante 4
#define P5 0x21D //rinomina codice per pulsante 5
#define P6 0xA1D //rinomina codice per pulsante 6
#define P7 0x61D //rinomina codice per pulsante 7
#define P8 0xE1D //rinomina codice per pulsante 8
#define P9 0x11D //rinomina codice per pulsante 9#define PSX 0xAFD //rinomina codice per pulsante SINISTRA
#define PDX 0x2FD //rinomina codice per pulsante DESTRA
#define PUP 0x4FD //rinomina codice per pulsante SU
#define PDOWN 0xCFD //rinomina codice per pulsante GIU#define POK 0x6FD //rinomina codice per pulsante OK
#define PONOFF 0xA9D //rinomina codice per pulsante ON/OFF
#define EXIT 0xC7D //rinomina codice per EXIT#define PADD 0x9D //rinomina codice per PROGRAMMA+
#define PSUBTRACT 0x89D //rinomina codice per RPROGRAMMA-#define VADD 0x9FA96F //rinomina codice VOLUME+(1)
#define VADDTWO 0x9912B99A //rinomina codice VOLUME+(2)#define VSUBTRACT 0xBE15326E //rinomina codice VOLUME-(1)
#define VSUBTRACTTWO 0xDB9D3097 //rinomina codice VOLUME-(2)int RECV_PIN = 11; // Pin ricevitore Ir
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(9, OUTPUT); // Led 1
pinMode(10, OUTPUT); // Led 2
pinMode(13, OUTPUT); // Led di stato
irrecv.enableIRIn(); // Inizializza ricevitore Ir
Serial.begin (9600);
}void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX); //Risultato in esadecimale
irrecv.resume();
}
if(results.value == P1){
digitalWrite(13, HIGH);
}
if(results.value == P2){
digitalWrite(13, LOW);
}
}
Il secondo programma invece è questo :
#include <Servo.h>
Servo myservo;
#define leftPin 2
#define rightPin 3
int pos = 90;
int delayPeriod = 50; // increasing this slows down the servo movementvoid setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo.write(pos); // center the servo
pinMode(leftPin, HIGH); // turn on pullup resistors
pinMode(rightPin, HIGH);
}void loop()
{
if(digitalRead(leftPin) == LOW)
{
// in steps of 1 degree
if( pos > 0)
--pos;
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(delayPeriod);
}
if(digitalRead(rightPin) == LOW)
{
if( pos < 180)
++pos;
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(delayPeriod);
}
}
Allora entrambi presi singolarmente funzionano, ma quanto unisco quello del telecomando a quello del servocomando quest'ultimo non va più ( ovviamente cambio tutte le sigle per dirgli che i pulsanti sono es:P3 e P6 e non prendere l'ingresso dal pin 2e3 )
dove sbaglio ?