www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino in IR sprejemnik

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Sob Dec 05, 2020 6:07 pm    Naslov sporočila:  Arduino in IR sprejemnik Odgovori s citatom

Če imam kodo tako napisano, potem mi reagira na vse tipke na daljincu in ne samo na tisto, katero želim.

Koda:

  if (irrecv.decode(&results)) {
    if (results.value == 0x40BDF807, HEX) {
      levi_kanal = levi_kanal - 1;
      desni_kanal = desni_kanal - 1;
      // delay(500);
    }
    irrecv.resume(); // Receive the next value
  }


Če pa napisem tako, potem mi pa ne reagira na nobeno tipko. Hex koda od tipke pa je 100% pravilna, ker sem ta isti daljinec že enkrat rabil v enem drugem projektu. Kaj je sedaj tu narobe? Gre se pa za klasični IR senzor za daljince, katera najdeš v televizorjih. Daljinec je tudi v redu, ker na TV-ju dela vse dobro.

Koda:

  if (irrecv.decode(&results)) {
    if (results.value == 0x40BDF807) {
      levi_kanal = levi_kanal - 1;
      desni_kanal = desni_kanal - 1;
      // delay(500);
    }
    irrecv.resume(); // Receive the next value
  }
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Sob Dec 05, 2020 6:35 pm    Naslov sporočila:   Odgovori s citatom

če pa napišem tako, potem mi pa vedno drugo kodo izpiše za isto tipko:

Koda:

if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);

    irrecv.resume(); // Receive the next value
  }
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mmelektronika
Član
Član



Pridružen-a: Pet 04 Okt 2019 18:59
Prispevkov: 176
Aktiv.: 3.18
Kraj: Medvode

PrispevekObjavljeno: Sob Dec 05, 2020 7:25 pm    Naslov sporočila:   Odgovori s citatom

probaj z razdalje vsaj 1.5m

če si preblizu pride do popačenja in je koda vedno drugačna
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
polkic
Član
Član



Pridružen-a: Pon 04 Dec 2017 20:27
Prispevkov: 68
Aktiv.: 0.88

PrispevekObjavljeno: Sob Dec 05, 2020 7:28 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljen,

katerega tipa podatka pa je results.value.

Deluje mi da ti nekaj overflowa. Poskusi z unsigned long (32 bit)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Sob Dec 05, 2020 7:36 pm    Naslov sporočila:   Odgovori s citatom

spremenljivka results.value

Je pobrana direktno iz IRremote.h knjižnice, v programu ni nikjer deklarirana. V to spremenjivko bi se naj shranila hexa koda od tipke od daljinca.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Sob Dec 05, 2020 7:41 pm    Naslov sporočila:   Odgovori s citatom

mmelektronika je napisal/a:
probaj z razdalje vsaj 1.5m

če si preblizu pride do popačenja in je koda vedno drugačna



Ne z razdaljo se nič ne spremeni.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5773
Aktiv.: 25.91
Kraj: Grosuplje

PrispevekObjavljeno: Sob Dec 05, 2020 7:59 pm    Naslov sporočila:   Odgovori s citatom

Par let nazaj sem se hecal s tem, ko sem pisal program za balinarsko uro.
Za preverjanje remote kontrolerja za uro sem uporabil spodnji program, ki je delal BP.
Da nimaš slučajno hardwerski problem?

Koda:
/* YourDuino.com Example Software Sketch
 IR Remote Kit Test
 Uses YourDuino.com IR Infrared Remote Control Kit 2
 http://arduino-direct.com/sunshop/index.php?l=product_detail&p=153
 based on code by Ken Shirriff - http://arcfn.com
 Get Library at: https://github.com/shirriff/Arduino-IRremote
 Unzip folder into Libraries. RENAME folder IRremote
 terry@yourduino.com */

/*-----( Import needed libraries )-----*/

#include "IRremote.h"

/*-----( Declare Constants )-----*/
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11

/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);           // create instance of 'irrecv'
decode_results results;            // create instance of 'decode_results'
/*-----( Declare Variables )-----*/


void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  Serial.println("IR Receiver Raw Data + Button Decode Test");
  irrecv.enableIRIn(); // Start the receiver

}/*--(end setup )---*/


void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
//    Serial.println(results.value, HEX);  UN Comment to see raw values
    translateIR();
    irrecv.resume(); // receive the next value
  } 
}/* --(end main loop )-- */

/*-----( Declare User-written Functions )-----*/
void translateIR() // takes action based on IR code received

// describing Car MP3 IR codes

{

  switch(results.value)

  {

  case 0x33B800FF: 
    Serial.println(" RET            ");
    break;

  case 0x33B8807F: 
    Serial.println(" ON/OFF         ");
    break;

  case 0x33B88877: 
    Serial.println(" 1              ");
    break;

  case 0x33B848B7: 
    Serial.println(" 2              ");
    break;

  case 0x33B8C837: 
    Serial.println(" 3              ");
    break;

  case 0x33B828D7: 
    Serial.println(" 4              ");
    break;

  case 0x33B8A857: 
    Serial.println(" 5              ");
    break;

  case 0x33B86897: 
    Serial.println(" 6              ");
    break;

  case 0x33B8E817: 
    Serial.println(" 7              ");
    break;

  case 0x33B818E7: 
    Serial.println(" 8              ");
    break;

  case 0x33B89867: 
    Serial.println(" 9              ");
    break;

  case 0x33B8D827: 
    Serial.println(" C/F            ");
    break;

  case 0x33B808F7: 
    Serial.println(" 0              ");
    break;

  case 0x33B858A7: 
    Serial.println(" DIM            ");
    break;

  case 0x33B840BF: 
    Serial.println(" C SET          ");
    break;

  case 0x33B8C03F: 
    Serial.println(" UP             ");
    break;

  case 0x33B8A05F: 
    Serial.println(" AL SET         ");
    break;

  case 0x33B8E01F: 
    Serial.println(" T SET          ");
    break;

  case 0x33B820DF: 
    Serial.println(" MODE           ");
    break;

  case 0x33B810EF: 
    Serial.println(" CD SET         ");
    break;

  case 0x33B8609F: 
    Serial.println(" ST             ");
    break;
   
  case 0x33B8906F: 
    Serial.println(" DISP           ");
    break;

  case 0x33B850AF: 
    Serial.println(" DOWN           ");
    break;

  case 0x33B804FB: 
    Serial.println(" AL ON/OFF      ");
    break;

  case 0x33B8847B: 
    Serial.println(" >||            ");
    break;

  case 0x33B844BB: 
    Serial.println(" MUTE          ");
    break;

  case 0x33B8C43B: 
    Serial.println(" FLASH          ");
    break;

  case 0x33B824DB: 
    Serial.println(" A1             ");
    break;

  case 0x33B8A45B: 
    Serial.println(" A2             ");
    break;
   
  case 0x33B8649B: 
    Serial.println(" A3             ");
    break;

  case 0x33B8E41B: 
    Serial.println(" FULL           ");
    break;

  case 0x33B814EB: 
    Serial.println(" A4             ");
    break;

  case 0x33B8946B: 
    Serial.println(" +              ");
    break;

  case 0x33B854AB: 
    Serial.println(" -              ");
    break;

  case 0x33B8D42B: 
    Serial.println(" A++            ");
    break;
   
  default:
    Serial.println(" other button   ");

  }

  delay(500);


} //END translateIR



/* ( THE END ) */

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Sob Dec 05, 2020 8:11 pm    Naslov sporočila:   Odgovori s citatom

Vedno bolj ugotavljam, da bi lahko bil problem z interrupti, ker sem dal senzor na digitalni pin 4. 11 pin (MOSI) je zasedeni za programator. Sicer nevem, če lahko imam oboje na pinu 11. poleg imam še proste pine 8, 9 in 10. Če bi na teh pinih delal senzor. Vezje imam že narejeno namensko. K sreči sem dal dip podnožje, da lahko lažje čaram in spreminjam. Itak je prototip.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Ned Dec 06, 2020 2:17 pm    Naslov sporočila:   Odgovori s citatom

Ugotovil sem, v čem je problem: problem je frekvenca mikrokrmilnika. Namesto, da bi delal na kristal 16MHz, dela z notranjim oscilatorjem 1MHz. To sem ugotovil z lediko, katera bi morala utripati vsako sekundo. Potem sem štopal in bilo je približno 16 sekund namesto 1 sekunde. Zanima me, kako je najlažje spremeniti, da bo delal na 16MHz. K sreči še nisem nič čaral po vezju. Uporabljam za programiranje programator USBasp.

Nazadnje urejal/a damjango Ned Dec 06, 2020 2:41 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Ned Dec 06, 2020 2:36 pm    Naslov sporočila:   Odgovori s citatom

Sem že rešil: gor naložil sem bootloader.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3353
Aktiv.: 16.96

PrispevekObjavljeno: Ned Dec 06, 2020 7:05 pm    Naslov sporočila:   Odgovori s citatom

Navkljub nekaj (malega) kilometrine na AVRjih, še nikdar nisem nalagal bootloaderja. Ali pa vsaj ne vem da bi (zavestno). Tudi ne vem, kaj pravzaprav to je. Smile

Frekvenco (in vir takta) oscilatorja pa z lahkoto nastavljaš z AVR studiem. ko se priključiš na AVR s programatorjem, to z lahkoto urediš. Nastaviš... Ali pa zaserješ. Smile To so omogočali tudi vsi programatorji in softver, ki sem jih do sedaj uporabljal.

No ja, "vsi" ni taka velika številka. Volkov programator in AVR studio, nevemkateri kitajski programator in Progisp 1.72 (s tem sem zaklenil kar nekaj zadev ,dokler ga nisem spoznal) in tudi HV paralelni programator za odklepanje zaklenjenih.

Moraš pa v osnovi (če ne uporabljaš tovarniškega takta in njegovega vira) to že pred programiranjem urediti.

Najprej v kompilerju (da ve, kako hitro procesor teče) da uredi program po predpostavkah, obenem pa tudi v procesorju (da teče tako hitro, kot ti želiš)

LP Branko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damjango
Član
Član



Pridružen-a: Pon 03 Sep 2012 7:56
Prispevkov: 721
Aktiv.: 5.09
Kraj: Murska Sobota

PrispevekObjavljeno: Ned Dec 06, 2020 8:44 pm    Naslov sporočila:   Odgovori s citatom

Poleg tega sem imel še enega arduino unota z prepisanim bootlauderjem in sem ravno sedaj oba krmilnika rešil na unutu. Programiram pa direktno z USBasp programatorjem iz arduino okolja. Ja načeloma bi šlo preko AVR studia.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 70 dni


Powered by phpBB © 2001, 2005 phpBB Group