Kaukosäätimestä alkoi kadota näppäimiä ja tilalle tuli hankittua geneerinen ohjain, mutta
sen kanssa oli ongelmia joidenkin näppäimien ohjelmoinnissa. Eli piti keksiä uusi ratkaisu ja keksinkin, että taloudessa on vanhoja videoiden kaukosäätimiä lähes samalla lay-out:illa, kuin mitä olisi tarvis digiboksin ohjaamiseen. Siispä tutkimaan ja hetken ihmeteltyäni, kytkettyäni IR-vastaanottopiirin avr:lle, että mitähän koodia se tuottaa(oli invertoitu tulossa, eli mielen vinksauttaminen kohdalleen hankaloitettua! :)
https://arduino-info.wikispaces.com/IR-RemoteControl
-selvisi, että molemmat ohjaimet tuottaa itse asiassa japani-koodia, jossa lähetetään
itse asiassa laitteen id(addr) ja tämän jälkeen komento 32 bittisenä numerona. Numerosta puolet sisältää samat tiedot invertoituna, eli on virheen havaitseminenkin mahdollista. Eli avr:lle koodi, joka näyttää bit-patternit koodista 32 bittisenä ja selvisi yllättäen, että lähettävät itse asiassa samoja "cmd" koodeja! Ainostaan addr-osa koodista on eri(totta kai, tarkoitushan on lähettää tiedot eri laitteille häiritsemättä muita).
https://github.com/z3t0/Arduino-IRremote/wiki/Types-of-IR-codes
Rakentelin siis avr:lle koodin, joka kuuntelee ensin IR-lähetyksen, sitten vaihtaa sen addr-osaan oikeat bitit ja lähettää sen uudelleen 3x. Ja nyt voin käyttää jälleen kaikkia kaken nappeja! Eli osittain hyvää säkää, kun ei tarvinnut keksiä, mitä toimimattomien nappien koodit mahtoivat olla.. kyllä senkin testaa, koska japanialaisessa kaukosäätimessä on eri koodeja 256 kappaletta. No, pitää tietysti toivoa, ettei kyseessä ole extended-moodin kaukosäädin.. sitten niitä on paljon.. irdb voi toki auttaa tässä.
sen kanssa oli ongelmia joidenkin näppäimien ohjelmoinnissa. Eli piti keksiä uusi ratkaisu ja keksinkin, että taloudessa on vanhoja videoiden kaukosäätimiä lähes samalla lay-out:illa, kuin mitä olisi tarvis digiboksin ohjaamiseen. Siispä tutkimaan ja hetken ihmeteltyäni, kytkettyäni IR-vastaanottopiirin avr:lle, että mitähän koodia se tuottaa(oli invertoitu tulossa, eli mielen vinksauttaminen kohdalleen hankaloitettua! :)
https://arduino-info.wikispaces.com/IR-RemoteControl
-selvisi, että molemmat ohjaimet tuottaa itse asiassa japani-koodia, jossa lähetetään
itse asiassa laitteen id(addr) ja tämän jälkeen komento 32 bittisenä numerona. Numerosta puolet sisältää samat tiedot invertoituna, eli on virheen havaitseminenkin mahdollista. Eli avr:lle koodi, joka näyttää bit-patternit koodista 32 bittisenä ja selvisi yllättäen, että lähettävät itse asiassa samoja "cmd" koodeja! Ainostaan addr-osa koodista on eri(totta kai, tarkoitushan on lähettää tiedot eri laitteille häiritsemättä muita).
https://github.com/z3t0/Arduino-IRremote/wiki/Types-of-IR-codes
Rakentelin siis avr:lle koodin, joka kuuntelee ensin IR-lähetyksen, sitten vaihtaa sen addr-osaan oikeat bitit ja lähettää sen uudelleen 3x. Ja nyt voin käyttää jälleen kaikkia kaken nappeja! Eli osittain hyvää säkää, kun ei tarvinnut keksiä, mitä toimimattomien nappien koodit mahtoivat olla.. kyllä senkin testaa, koska japanialaisessa kaukosäätimessä on eri koodeja 256 kappaletta. No, pitää tietysti toivoa, ettei kyseessä ole extended-moodin kaukosäädin.. sitten niitä on paljon.. irdb voi toki auttaa tässä.
Vastaukset 3
Vanhimmat
Voihan sitä käyttää kännykkääkin ohjaukseen. Ei tarvi viritellä.
Mikähän mahtaa olla palstan idea?
Jatkokehittelin ideaa, ja nyt saan ladattua sarjaportin kautta irdb:stä (https://irdb.tk) koodit, joita lähettää.
IR-rx helpoin tapa toteuttaa on muuten käyttää esim 16 bittistä timer1:stä ja lukea ICR1 nastalta pulssien alas menevät reunat, joita on 34 kpl. Tämän jälkeen timeri on n. 1ms kohdalla ja koodin saa katki tutkimalla, koska se menee yli tuon loppukohdan jonkin verran. Timeria voi pyörittää hyvin CTC-moodissa, jolloin ylivuodon tapauksessa voi päivittää timeriin arvon, joka on jonkin verran yli tuon 0-1ms välisen ajan. Tällöin aloitusarvo laskurissa on aina järkevä, eikä tuota vahingossa spurious-koodeja, kun vastaanoton alkaessa nollaa laskurin.
Sopivasti skaalaamalla laskunopeutta saa tehtyä version, jossa laskurin arvolla mitattu bitin pituus on sellainen, että riittää ottaa ylin bitti. Formaatiksi siis tulee START 32bit_ir_koodi STOP. Eli koodin tulkintaa varten riittää 256-alkioinen taulukko id/addr kenttä, jolla tunnistetaan koodi omaksi.
IR-tx onnistuu PWM:n avulla taas helposti, koska signaali on moduloitu 38kHz kantoaaltoon. Kannattaa käydä katsomassa irdb:stä NEC1-koodia, ja muistaa, että arvot ovat laskuriarvoja pulssien kummallekin reunoille ja etumerkki kertoo signaalin tilan, arvot mikrosekunteina.
Ja voihan tätä käyttää omissa projekteissakin, joihin saa kaken käyttöön!