posílání hexadecimálních kódů přes piny Arduina

petr97897
Příspěvky: 18
Registrován: 11 led 2021, 14:26
Reputation: 0

posílání hexadecimálních kódů přes piny Arduina

Příspěvek od petr97897 » 04 kvě 2021, 20:01

Dobrý den,
chtěl bych se zeptat, jakým způsobem by se daly posílat hexadecimální kódy přes některý pin Arduina. Mám doma RGB led pásek, který se normálně ovládá přes Ir diodu, je s tím spojená tady ta krabička - která přijímá kódy z ovladače a nastavuje barvy didodám: https://ctrlv.cz/XtbL - nalevo jsou kabely k RGB diodám; napravo je napájení Ir diody a datový pin IR diody(modrý) - já jsem si řekl, že bych zkusil na ten datový pin napájet kabel a připojit to k Arduinu a pak přes Bluetooth ovládat ty diody (ano, vím, že to jde udělat i přes mosfety, ale tohle mi přijde hezčí řešení, že by stačil jen jeden kabel :) )
Už jsem vzal diodu a zjistil si hexa kódy ovladače, ale nevím, jakým způsobem by to šlo zapojit a naprogramovat. Radši ještě nic nezapojuju, abych to neodpálil :D
Budu rád za každou radu, děkuji :)

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od KamilV » 04 kvě 2021, 21:19

Otevři si na požadovaném pinu Tx SoftwareSerial a printem to tam posílej...

petr97897
Příspěvky: 18
Registrován: 11 led 2021, 14:26
Reputation: 0

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od petr97897 » 07 kvě 2021, 20:30

Dobrý den, zkusil jsem Vaši radu, našel jsem knihovnu, která je podobná SoftwareSerial.h, jen se při vytvoření instance bere jako parametr pouze Tx pin. Tak jsem zkusil napsat jednoduchý prográmek , abych vyzkoušel, jestli to funguje:
https://forum.arduino.cc/t/using-only-t ... e/109623/2 - knihovna a kód

Kód: Vybrat vše

#include <SendOnlySoftwareSerial.h>

SendOnlySoftwareSerial mySerial(3);  // Tx pin

void setup() {
  mySerial.begin(115200);
}

void loop() {
    
    mySerial.write("0xF7C03F"); // On
    delay(1500);
    
    mySerial.write("0xF740BF"); // Off
    delay(1500); 
    
    mySerial.write("0xF7C03F"); // On
    delay(1500);
    
    mySerial.write("0xF700FF"); //jas+
    delay(200);
    mySerial.write("0xF700FF"); //jas+
    delay(1500);
   
    mySerial.write("0xF7807F"); //jas-
    delay(200);
    mySerial.write("0xF7807F"); //jas-
    delay(1500);
    
    mySerial.write("0xF7E01F"); //White
    delay(1500);
    
    mySerial.write("0xF720DF"); //Red
    delay(1500);
    
    mySerial.write("0xF7A05F"); //Green
    delay(1500);
    
    mySerial.write("0xF7609F"); //Blue
    delay(1500);
    
    mySerial.print("0xF7E01F"); //White, printem
    delay(1500);

 }
když jsem pin D3 Arduina připojil na místo modrého kabelu, tak se nic nestalo.
Zkoušel jsem ten kód pozměňovat, před hexa kód jsem napsal "0x" - našel jsem na internetu, použil jsem print() a write(), ale nic to neudělalo.

Hexa kódy jsem získal pomocí tohoto kódu (použil jsem starší verzi knihovny, aby ten kod fungoval):

Kód: Vybrat vše

#include <IRremote.h>
int RECV_PIN = 11;
int valuea = 0;

IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  
}
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value,HEX);
    valuea++;
    irrecv.resume();
  }
  delay(100);
} 


Když tak přemýšlým, mají se tam posílat hexadecimální kódy ? :D nebo mám chybu v kódu ?
Děkuji za pomoc :)

RomanB
Příspěvky: 90
Registrován: 04 zář 2017, 14:28
Reputation: 0
Bydliště: Havířov

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od RomanB » 07 kvě 2021, 22:10

Ta knihovna irremote umí i odesílat Ir kódy viz
https://www.pjrc.com/teensy/td_libs_IRremote.html irsend.

petr97897
Příspěvky: 18
Registrován: 11 led 2021, 14:26
Reputation: 0

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od petr97897 » 08 kvě 2021, 14:01

Dobrý den, zkusil jsem tento a ještě i jiné kódy:

Kód: Vybrat vše

#include <IRremote.h>

IRsend irsend;

void setup() {
}

void loop() {
     
    irsend.sendNEC(0xF740BF, 32);
    delay(500);
    
    irsend.sendNEC(0xF7C03F, 32);
    delay(500);
 
    irsend.sendNEC(0xF7609F, 32);
    delay(500);
  
    irsend.sendNEC(0xF7A05F, 32);
    delay(500);
}

Ale nefunguje to, jednou se z nějakého důvodu přepnuly ty diody na oranžovou, ale takovou hexa hodnotu tam nemám :D
Zjistil jsem, že protokol je typu NEC, tak proto používá tu metodu sendNEC(...); taky jsem zjistil, že odesílaná hodnota je 32bitová. Modrý kabel z krabičky pro ovládání rgb diod (Ir data) je napojený na pin D3.
Tady mám napsaný všechny hexa kódy ke každému tlačítku:
  • ON - F7C03F
    OFF - F740BF
    J- - F7807F
    J+ - F700FF


    barvy

    W - F7E01F
    B - F7609F
    G - F7A05F
    R - F720DF

    B2 - F750AF
    G2 - F7906F
    R2 - F710EF

    B3 - F7708F
    G3 - F7B04F
    R3 - F730CF

    B4 - F748B7
    G4 - F78877
    R4 - F708F7

    B5 - F76897
    G5 - F7A857
    R5 - F728D7


    módy

    flash - F7D02F
    strobe - F7F00F
    fade - F7C837
    smooth - F7E817
Nechápu, proč to na ty kódy, které jsem z ovladače získal nereaguje :(

RomanB
Příspěvky: 90
Registrován: 04 zář 2017, 14:28
Reputation: 0
Bydliště: Havířov

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od RomanB » 08 kvě 2021, 17:01

Zkoušel jsi 24 místo 32?

RomanB
Příspěvky: 90
Registrován: 04 zář 2017, 14:28
Reputation: 0
Bydliště: Havířov

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od RomanB » 08 kvě 2021, 18:10

A máš připojené kromě modrého datového drátku i GND k Arduinu?

petr97897
Příspěvky: 18
Registrován: 11 led 2021, 14:26
Reputation: 0

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od petr97897 » 08 kvě 2021, 20:15

Na tich 24 bitů to něco udělalo :D začalo to strašně rychle blikat všema barvami a pak to vyplo :D Celou dobu svítil TX dioda(potom i RX) Ty ledky teď bliknou jen když je připojuju ke zdroji :D Snad to nějak pude napravit, zkusím tam připojit na chvilku zpět tu diodu.
Ta Gnd tím myslíte, že jak je v té krabičce uzemnění od té odletované Ir diody, tak to mám připojit na Arduino ? :)

petr97897
Příspěvky: 18
Registrován: 11 led 2021, 14:26
Reputation: 0

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od petr97897 » 08 kvě 2021, 21:00

Diody jsou v pohodě, ale ta krabička to nerozsvítí. Ani když jsem připojil zpět tu Ir diodu a zkoušel to přepnout ovladačem.

RomanB
Příspěvky: 90
Registrován: 04 zář 2017, 14:28
Reputation: 0
Bydliště: Havířov

Re: posílání hexadecimálních kódů přes piny Arduina

Příspěvek od RomanB » 09 kvě 2021, 10:28

Pro upřesnění zapojeni
1.Modul RGB musí být stále napájen svým zdrojem (12V?)
2.Arduino musí mít své vlastní napájení 5V
3.Propojení mezi modulem je GND + Datový pin

Samostatné arduino s 5V to nerozsvítí.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů