Salve a tutti!
All'università sto facendo un progetto che implica l'utilizzo di Arduino e sono alle prime armi
Avrei bisogno di sapere se è possibile mettere un trasmettitore e un ricevitore IR sulla stessa scheda Arduino (sto usando Arduino Uno), in quanto ho bisogno di elaborare i dati ricevuti che quelli trasmessi nello stesso momento.
Il professore ci ha detto che è possibile e ci ha detto semplicemente di accodare il codice del ricevitore a quello del trasmettitore nel loop, solo che non funziona. Sul monitor seriale, mi appare solo il trasmettitore.
Se dovessi invece separare i codici mettendoli su sketch diversi mi funzionano, quindi non saprei proprio.
Ho provato pure con altro codice ancora, che vi riporto qui in basso. Spero mi possiate essere d'aiuto! Grazie mille in anticipo
#include <IRremote.h>
// INFRAROSSI
int RECV_PIN = 11;
IRsend irsend;
IRrecv irrecv(RECV_PIN);
decode_results res;
// HARDWARE
int buttonPin = 5;
int ledPin = 9;
int buttonPin2 = 6;
int ledPin2 = 10;
void setup()
{
pinMode(buttonPin,INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
pinMode(buttonPin2,INPUT_PULLUP);
pinMode(ledPin2,OUTPUT);
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
int buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
int buttonState2 = digitalRead(buttonPin2);
Serial.println(buttonState2);
}
void translateIR()
{
int sensorValue = 0;
int sensorValue2 = 0;
sensorValue = digitalRead(ledPin);
sensorValue2 = digitalRead(ledPin2);
Serial.println(sensorValue);
Serial.println(sensorValue2);
switch(res.value)
{
case 0xFF30CF:
if (sensorValue == 0)
{
Serial.println("Received FF30CF");
digitalWrite(ledPin, HIGH);
break;
}
if (res.value == 1)
{
Serial.println("Received 0");
digitalWrite(ledPin, LOW);
break;
}
case 0xFF18E7:
if (sensorValue2 == 0)
{
Serial.println("Received FF30CF");
digitalWrite(ledPin2, HIGH);
break;
}
if (sensorValue2 == 1)
{
Serial.println("Received 0");
digitalWrite(ledPin2, LOW);
break;
}
}
}
void loop()
{
digitalWrite(ledPin,LOW);
digitalWrite(ledPin2,LOW);
Serial.println("button2");
Serial.println(digitalRead(buttonPin2));
Serial.println("button1");
Serial.println(digitalRead(buttonPin));
// INIZIO TRASMISSIONE
if(digitalRead(buttonPin2) == LOW)
{
digitalWrite(ledPin2, HIGH);
irsend.sendNEC(0xFF18E7, 32);
Serial.println("inviato FF18E7");
delay(1000);
}
else if (digitalRead(buttonPin) == LOW)
{
digitalWrite(ledPin, HIGH);
irsend.sendNEC(0xFF30CF, 32);
Serial.println("inviato FF30CF");
delay(1000);
}
else
{
digitalWrite(ledPin, LOW);
digitalWrite(ledPin2, LOW);
irsend.sendNEC(0x0,32);
Serial.println("inviato 0");
delay(1000);
}
// FINE TRASMISSIONE
if (irrecv.decode(&res))
{
translateIR();
Serial.println(res.value,HEX);
irrecv.resume();
delay(1000);
}
}