IR ovládání

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
444pavel
Příspěvky: 2
Registrován: 01 dub 2018, 13:49

IR ovládání

Příspěvek od 444pavel » 01 dub 2018, 13:57

Ahoj nemůžu přijít na to kde mám chybu, mám IR senzor a ovladač chci aby když zmáčknu 1. číslo zapsalo se do proměnné X a když 2. číslo do Y poté s nimi dále pracovat.
#include"IRremote2.h"
#define pinIN 13
IRrecv dalkoveOvl(pinIN);
decode_results vysledek;
int X, Y;
unsigned long time;
int test;
bool first = 1;
void setup() {
Serial.begin(9600);
dalkoveOvl.enableIRIn();
}
void loop() {
if (dalkoveOvl.decode(&vysledek)) {
test = translator();
if (first == 1 && test > 0) {
X = test;
first = !first;
time = millis();
}
else if (first == 0 && millis() - time < 2000 && test > 0) {
Y = test;
first = !first;
}
else first = !first;
}
delay(10);
}
int translator() {
switch (vysledek.value) {
case 0xFF30CF:
return 1;
Serial.println("Stisknuto 1");
break;
case 0xFF18E7:
return 2;
Serial.println("Stisknuto 2");
break;
case 0xFF7A85:
return 3;
Serial.println("Stisknuto 3");
break;
case 0xFF10EF:
return 4;
Serial.println("Stisknuto 4");
break;
case 0xFF38C7:
return 5;
Serial.println("Stisknuto 5");
break;
case 0xFF5AA5:
return 6;
Serial.println("Stisknuto 6");
break;
case 0xFF42BD:
return 7;
Serial.println("Stisknuto 7");
break;
case 0xFF4AB5:
return 8;
Serial.println("Stisknuto 8");
break;
default:
return 0;
Serial.println("Stisknuta jina klavesa");
break;

}
}

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Kontaktovat uživatele:

Re: IR ovládání

Příspěvek od petan » 01 dub 2018, 15:02

A co přesně ti to nedělá? Chodí ti něco zpět po sériové lince - jako že to vůbec detekuje ovladač?
Měl by si přehodit tyto řádky (a všechny ostatní podobné):

Kód: Vybrat vše

return 1;
Serial.println("Stisknuto 1");
Return by mělo být na konci, protože tím ukončuješ funkci.

A příště - je tu tlačítko na vkládání kódu - pro větší přehlednost.

444pavel
Příspěvky: 2
Registrován: 01 dub 2018, 13:49

Re: IR ovládání

Příspěvek od 444pavel » 01 dub 2018, 15:34

Po seriové lince to teď po prohození alespoň načítá hodnotu, nicméně potřebuji aby se hodnota vrátila do X a tam se zachovala, poté se načetla nová hodnota do Y a tam se zachovala. Dál hodnotu X vynásobím číslem 136 a výsledek pošlu na pin 12 podobně s Y akorát výstup je pin 11.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Kontaktovat uživatele:

Re: IR ovládání

Příspěvek od petan » 01 dub 2018, 19:04

A co takhle si vytvořit proměnnou (jako nějaký ukazatel), která signalizuje, že do proměnné bylo už zapsáno? A pokud ano, tak se bude zapisovat do té druhé

Kód: Vybrat vše

int cislo1;
int cislo2;
bool zapsano;	//ukazatel, že do proměnné jedna cislo1 bylo zapisováno

if(!zapsano){
	//do proměnné 1 ještě nebylo zapisováno
	cislo1 = něco;	//zápis hodnoty
	zapsano= true;	//zaznamenání zápisu
else{
	//do proměnné 1 už bylo zapisováno
	cislo2 = něco;
	zapsano = false;	//při příštím zápisu zapisuj zase do proměnné cislo1
}

Odpovědět

Kdo je online

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