Skocz do zawartości

Pomocna odpowiedź

Napisano

Cześć

Czy probował ktoś z Was użyć biblioteki RC switch do odczytywania kodów pilota z esp32.

Próbuje, ale nie chce sie kompilować pod esp32, domyślam się ze ma to związek z przerwaniem na pin odbiornika?

 

#define RXD 27

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
 
  mySwitch.enableReceive(RXD);  // Receiver on interrupt 0 => that is pin #2

  
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
    }

    mySwitch.resetAvailable();
  }
}

 

Wersje board 3.x nie działają z niektórymi (zdaje się że wszystkimi) starymi bibliotekami do IR.

Wydłub sobie kod z mojej pogodynki (jest na githubie), ten działa ładnie.

  • Lubię! 2
1 godzinę temu, ethanak napisał:

Wersje board 3.x nie działają z niektórymi (zdaje się że wszystkimi) starymi bibliotekami do IR.

Wydłub sobie kod z mojej pogodynki (jest na githubie), ten działa ładnie.

Dziękuję za info.

Podeslesz link? Szukalem, kopałem na jednym github i nic nie znalazłem. Nie wiem czy to był właściwy.

ethanak próbowałem coś skleić z Twojego gita, ale to nie mój level.

Znalazłem taki przykład ale nie kompiluej się cały czas sypie błędem, że brak biblioteki, ale przecież ona jest w core ESP? Poratuj 

#include <RMT.h>

// Set the RMT channel number
#define RMT_CHANNEL 0

void setup() {
  // Initialize the RMT peripheral
  RMT.begin();

  // Set the input pin
  pinMode(RMT.rxChannelToInput(RMT_CHANNEL), INPUT);

  // Set the carrier frequency (38 kHz)
  RMT.addCarrier(RMT_CHANNEL, 38000);

  // Set the decoder
  RMT.setDecoder(RMT_CHANNEL, RMT_MODE_RX, RMT_MEM_64);

  // Enable the RMT receiver
  RMT.enableRx(RMT_CHANNEL);
}

void loop() {
  // Wait for a signal to be received
  if (RMT.getRxState(RMT_CHANNEL) == RMT_RX_ACTIVE) {
    // Get the received signal
    rmt_item32_t* items = NULL;
    uint32_t numItems = 0;
    if (RMT.read(RMT_CHANNEL, &items, &numItems) == ESP_OK) {
      // Convert the signal to a byte array
      uint8_t data[numItems / 2];
      for (int i = 0; i < numItems / 2; i++) {
        uint8_t high = items[i * 2].duration1 > items[i * 2].duration0 ? 1 : 0;
        uint8_t low = items[i * 2 + 1].duration1 > items[i * 2 + 1].duration0 ? 1 : 0;
        data[i] = (high << 1) | low;
      }

      // Print the received data
      Serial.print("Received data: ");
      for (int i = 0; i < numItems / 2; i++) {
        Serial.print(data[i], HEX);
        Serial.print(" ");
      }
      Serial.println();
    }

    // Reset the receiver
    RMT.rxReset(RMT_CHANNEL);
  }
}

 

(edytowany)
16 minut temu, orb777 napisał:

@nebraska , spójrz tu, gościu używa tych samych wywołań, doinstalowuje też biblioteki z linku.

@orb777 Właśnie stąd wziąłem przykład i nie wiem jaką biblioteke dodać ciągle mam 

RMT.h: No such file or directory

 

Edytowano przez nebraska

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...