Aki jártas arduino programozásában, illetve IR reciver használatában: egy kedves projekt munkám során mind "if" és mint "switch case" használatával olyan problémába ütköztem hogy szerencsétlen arduino nem hagyja abba a műveletet...??
program:
#include <IRremote.h>
const int RECV_PIN = 9;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define BUTTON_1 0xFD08F7
#define BUTTON_2 0xFD8877
int alma;
int szam_tablazat [13][7]=
{
{0,0,0,0,0,0,1}, //0
{1,0,0,1,1,1,1}, //1
{0,0,1,0,0,1,0}, //2
{0,0,0,0,1,1,0}, //3
{1,0,0,1,1,0,0}, //4
{0,1,0,0,1,0,0}, //5
{0,1,0,0,0,0,0}, //6
{0,0,0,1,1,1,1}, //7
{0,0,0,0,0,0,0}, //8
{0,0,0,0,1,0,0}, //9
{1,1,1,1,0,0,0}, //10 jobb
{1,0,0,1,1,1,0}, //11 ball
{1,1,1,1,1,1,1} // 12 semmi
};
void NumberDisplay (int sor)
{
int lab = 2;
for (int oszlop = 0; oszlop < 7;oszlop++)
{
digitalWrite(lab, szam_tablazat[sor][oszlop]);
lab++;
}
}
unsigned long LED_1_TIME = 0;
unsigned long LED_2_TIME = 0;
boolean LED_1_status = false;
boolean LED_2_status = false;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
irrecv.blink13(true);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9,INPUT);
pinMode(10, OUTPUT);
NumberDisplay(12);
}
void loop() {
doLED_1();
doLED_2();
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume();
}
}
amíg egy másik gombot nem nyomok meg, előre is köszönöm a segítséget.
void doLED_1() {
if (millis() > LED_1_TIME) {
LED_1_TIME = millis() + 1000;
LED_1_status = !LED_1_status;
if (LED_1_status) {
digitalWrite(10, HIGH);
} else {
digitalWrite(10, LOW);
}
}
}
void doLED_2() {
if (millis() > LED_2_TIME) {
LED_2_TIME = millis() + 2000;
if (results.value == 0xFD08F7)
{
NumberDisplay(1);
delay(1000);
NumberDisplay(12);
}
}
}
Hát ebből nem sok derül ki. Több támpontot is megadhatnál, például, hogy mit szeretnél csinálni, hol akad meg, mit "nem hagy abba"? Meg legközelebb pastebin-t használj: [link]
Első körben, ami feltűnik, hogy a results.value értéke nem törlődik, az "if (results.value == 0xFD08F7)"-en belül biztos nem ártana egy results.value = 0
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!