направление и идентификация устройства в рое с использованием ИК-связи и Arduino - PullRequest
0 голосов
/ 09 марта 2020
code
    #include <IRremote.h>
    int RECV_PIN_T =8;
    int RECV_PIN_L=9;
    int RECV_PIN_B=10;
    int RECV_PIN_R=11;
    int IRledPin = 13;
    IRrecv irrecv1(RECV_PIN_T);
    IRrecv irrecv2(RECV_PIN_L);
    IRrecv irrecv3(RECV_PIN_B);
    IRrecv irrecv4(RECV_PIN_R);
    //IRsend irsend;

    decode_results results1;
    decode_results results2;
    decode_results results3;
    decode_results results4;

    void setup()
    {

    pinMode(RECV_PIN_L, OUTPUT);
    pinMode(RECV_PIN_T, OUTPUT);
    pinMode(RECV_PIN_B, OUTPUT);
    pinMode(RECV_PIN_R,OUTPUT);


    Serial.begin(115200);
    irrecv1.enableIRIn(); //Enabled the ir sensor
    irrecv2.enableIRIn();
    irrecv3.enableIRIn();
    irrecv4.enableIRIn();


    Serial.println("Getting IR data");
    }

    void loop() {

    if (irrecv1.decode(&results1)) {
    int value1=analogRead(RECV_PIN_T);
    unsigned int value = results1.value;
    if(value1>0&&value<10)
    {
    Serial.print("TOP ");

    Serial.println(value);
    delay(800);
    }
    irrecv1.resume();
    }
    //delay(5000);
    if (irrecv2.decode(&results2)) {
    int value2=analogRead(RECV_PIN_L);
    unsigned int value = results2.value;
    if(value2>0/*&&value<10*/)
    {
    Serial.print("LEFT ");
    Serial.println(value);
    }
    delay(800);

    irrecv2.resume();
    }
    //delay(4000);

    /* if (irrecv3.decode(&results)) {
    int value3=analogRead(RECV_PIN_B);
    unsigned int value = results.value;

    //if(value3>0&&value<60)
    Serial.print("Bottom");
    Serial.println(value);
    delay(200);

    irrecv3.resume(); }*/


    }

    [enter image description here][1]


  [1]: https://i.stack.imgur.com/07hMC.png

Я использую Arduino Uno, подключенный к 4 ИК-датчику HS0038 на 4 углах Arduino. Каждый ИК-датчик сопровождается ИК-светодиодом, который будет передавать указанный код в 4 направлениях, код будет уникальным для каждого модуль (см. рисунок). модуль Arduino может получать коды от соседних модулей с помощью ИК-датчика и сообщать о своем присутствии соседнему модулю с помощью ИК-светодиода. но все 4 датчика в модуле принимают код, даже если они далеко друг от друга. Я не могу понять, что я написал неправильно в коде и почему датчики собирают данные, даже когда я пытаюсь изолировать этот конкретный датчик.

Я получаю данные на всех датчиках случайно, хотя Я полностью заблокировал датчик, и я не могу передавать и получать ИК-коды от одного Arduino. всякий раз, когда я пытаюсь это сделать, Arduino отправляет только данные, не полученные от другого модуля. Я использовал ИК-датчик HS0038 вместе с ИК-светодиодом. Также сообщите мне о любом решении для определения расстояния между двумя модулями с помощью ИК-порта.

...