Arduino Polska Forum

Pełna wersja: Wysyłanie kodu IR w sposób ciągły.
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam wszystkich serdecznie. Jestem początkujący z arduino i zwracam się o pomoc do was. Odczytałem sobie kody z pilota i chciałbym je teraz wysyłać tyle że w sposób ciągły. Obecnie używałem espeasy lecz tam mogę wysłać pojedynczy kod. Chciałbym aby to działało na zasadzie dopuki trzymam przycisk to kod jest wysyłany non stop. Posiadam płytkę wemos d1 a jako przycisku chciałbym używać wirtualnego przycisku w domoticzu. Jeżeli zły dział to przepraszam jestem początkujący. Siedzę nad tym kilka dni ale nie mogę tego rozkminic. Przeszukałem już chyba całe Google. Okolnie mam 6 przycisków na pilocie. Pozdrawian
Pokaż kod z którym masz problem. Domoticz musi wysyłać informację że przycisk jest wciśnięty, albo wciśnięcie i puszczenie, typ przycisku monostabilny. Jeśli nie ma takiej opcji to można w kodzie zrobić pierwsze wciśnięcie aktywuje, drugie wyłącza.
Kod:
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>

const uint16_t kIrLed = 4;  // ESP8266 GPIO pin to use. Recommended: 4 (D2).

IRsend irsend(kIrLed);  // Set the GPIO to be used to sending the message.

// Example of data captured by IRrecvDumpV2.ino
uint16_t rawData[67] = {9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550,
                        600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650,
                        600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650,
                        650, 1650, 650, 550, 650, 550, 650, 1650, 650, 550,
                        650, 550, 650, 550, 600, 550, 650, 550, 650, 550,
                        650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 1650,
                        650, 1650, 650, 1650, 650, 1650, 600};
// Example Samsung A/C state captured from IRrecvDumpV2.ino
uint8_t samsungState[kSamsungAcStateLength] = {
    0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
    0x01, 0xE2, 0xFE, 0x71, 0x40, 0x11, 0xF0};

void setup() {
  irsend.begin();
#if ESP8266
  Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
#else  // ESP8266
  Serial.begin(115200, SERIAL_8N1);
#endif  // ESP8266
}

void loop() {
  Serial.println("NEC");
  irsend.sendNEC(0x00FFE01FUL);
 
}
jest to program z biblioteki arduino. Wysyła kod w ciągły sposób tak jak chce. Teraz tylko jak zrobić aby z poziomu domoticza mógł włączać i wyłączac wysyłanie kodu i tych kodów łącznie będzie 6. po drugi chciałbym aby płytka esp8266 łaczyła się z serwerem domoticza za pomocą wifi. Proszę o pomoc lub jakieś naprowadzenie na temat Pozdrawiam
No to nie masz kodu domoticza, a ja go akurat nie znam, więc Ci nie pomogę. Wysyłanie takich dwóch instrukcji w każdym obiegu loop nie ma żadnego sensu, żadne urządzenie nie będzie w stanie tego odebrać. Należy ustalić jak często oryginalny pilot to robi i robić to tak samo często i nie częściej. Nawet jak domoticz czy ESP nie ma takiej funkcji jak przycisk monstabilny to można zrobić to w ten sposób, że ESP ponawia wysyłanie kodu przez np. 500ms i ponownie przedłuża ten czas o kolejne 500ms po kolejnym wciśnięciu przycisku. A od strony sterowania wygląda to tak, że klikasz w przycisk kilka x na sekundę.
W Blynk na pewno można wybrać funkcję mono/bi przycisku, tylko nazywa się PUSH/SWITCH.
A jak nie umiesz programować w Arduino to i tak nic nie uzyskasz, bo raczej nikt takiego kodu za Ciebie nie napisze.
W protokole NEC, jeśli przycisk jest przytrzymany przez >108ms , to wysyłany jest kod powtórzenia 0xFFFFFFFF też co 108ms, aż do puszczenia przycisku. I tego się trzymaj dekodując kody NEC.