Инфракрасный порт не возвращает 1 как правильное значение - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь создать перчатку, которая, когда вы опускаете запястье, посылает 1 в качестве ИК-сигнала, а если вы поднимаете запястье, она возвращает 0 для перчатки, которую я использовал javascript:

input.onGesture(Gesture.TiltDown, function () {
music.playMelody("E B C5 A B G A F ", 262)
network.infraredSendNumber(1)
light.showRing(
    `blue red blue red blue blue red blue red blue`)
})
input.onGesture(Gesture.TiltUp, function () {
    music.wawawawaa.play()
    network.infraredSendNumber(0)
    light.showAnimation(light.cometAnimation, 500)
})

Я не верю, что здесь есть проблема, но когда я go подключаюсь к своему Arduino, чтобы получить ИК-сигнал и распечатать значение в последовательном интерфейсе, он печатает как 4E5CE275On, хотя я сказал последовательному порту печатать в В шестнадцатеричной форме должно быть 0x1. Я подумал, что, может быть, я просто не понимаю, как это работает, поэтому я попытался отправить 0 и получил тот же результат. Я не знаю, что не так. вот мой код:

#include <FastLED.h>
#include <IRremote.h> 

#define NUM_LEDS 150

#define DATA_PIN 5
#define CLOCK_PIN 13
int IRpin = 7;
IRrecv irrecv(IRpin);
decode_results results;

CRGB leds[NUM_LEDS];
boolean LEDon = false;

void setup() { 
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);
  Serial.println("resetting");
  LEDS.addLeds<WS2812,DATA_PIN,RGB>(leds,NUM_LEDS);
  LEDS.setBrightness(84);
}

void fadeall() { for(int i = 0; i < NUM_LEDS; i++) { leds[i].nscale8(250); } }

void loop() { 
    if (irrecv.decode(&results))
    {
  
      while((LEDon) == false)  
      {
          Serial.print(results.value, HEX);   
          Serial.print("On");
          static uint8_t hue = 0;
          Serial.print("x");
          // First slide the led in one direction
          for(int i = 0; i < NUM_LEDS; i++) {
            // Set the i'th led to red 
            leds[i] = CHSV(hue++, 255, 255);
            // Show the leds
            FastLED.show(); 
            // now that we've shown the leds, reset the i'th led to black
            // leds[i] = CRGB::Black;
            fadeall();
            // Wait a little bit before we loop around and do it again
            delay(10);
          }
          Serial.print("x");
        
          // Now go in the other direction.  
          for(int i = (NUM_LEDS)-1; i >= 0; i--) {
            // Set the i'th led to red 
            leds[i] = CHSV(hue++, 255, 255);
            // Show the leds
            FastLED.show();
            // now that we've shown the leds, reset the i'th led to black
            // leds[i] = CRGB::Black;
            fadeall();
            // Wait a little bit before we loop around and do it again
            delay(10);
          }
         
  }
    }
}

Код считывается для сигнала, и если сигнал присутствует, светодиоды начинают работать, но позже я хочу использовать while(results.value) == 0) светодиоды.

...