Arduino Kod Yardımı
-
kodun yapmasını istediğim şeyi yapmıyor
istediğim şey kumandadan gönderdiğim komutun birden fazla şeyi yapması örneğin rgb bi ledin 3 fonksiyonunu aktif kullanamıyorum 1 kere basınca mavi 2. basışımda yuşa kırmızı ve maviyi karışıtırıyor benim istediğim hepsi
aynı anda senkronize olması.Bide şu other dediğinde kırmızı ışık verip 1 saniye yanıp hemen geri sönsün ben yapamadım .
kullandığım kod
#include <IRremote.h>
const int kirmizi = 3;
const int yesil = 5;
const int mavi = 6;
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
pinMode(mavi,OUTPUT);
pinMode(yesil,OUTPUT);
pinMode(kirmizi,OUTPUT);
}/*--(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 0xFFA25D:
analogWrite(mavi,250);
analogWrite(yesil,250);
analogWrite(kirmizi,250);
break;
case 0xFF629D:
analogWrite(mavi,0);
analogWrite(yesil,0);
analogWrite(kirmizi,0);
break;
case 0xFFE21D:
analogWrite(mavi,250);
analogWrite(kirmizi,250);
break;
case 0xFF22DD:
analogWrite(mavi,0);
analogWrite(yesil,0);
analogWrite(kirmizi,0);
case 0xFF02FD:
analogWrite(kirmizi,255);
break;
case 0xFFC23D:
Serial.println(" PLAY/PAUSE ");
break;
case 0xFFE01F:
Serial.println(" VOL- ");
break;
case 0xFFA857:
Serial.println(" VOL+ ");
break;
case 0xFF906F:
Serial.println(" EQ ");
break;
case 0xFF6897:
Serial.println(" 0 ");
break;
case 0xFF9867:
Serial.println(" 100+ ");
break;
case 0xFFB04F:
Serial.println(" 200+ ");
break;
case 0xFF30CF:
analogWrite(mavi,250) ;
break;
case 0xFF18E7:
Serial.println(" 2 ");
break;
case 0xFF7A85:
Serial.println(" 3 ");
break;
case 0xFF10EF:
Serial.println(" 4 ");
break;
case 0xFF38C7:
Serial.println(" 5 ");
break;
case 0xFF5AA5:
Serial.println(" 6 ");
break;
case 0xFF42BD:
Serial.println(" 7 ");
break;
case 0xFF4AB5:
Serial.println(" 8 ");
break;
case 0xFF52AD:
Serial.println(" 9 ");
break;
default:
analogWrite(kirmizi,255);
break;
delay(100);
}
delay(500);
} -
O switch değimindeki her case'in altına istediğin şeyi yapabilirsin. Örneğin
case 0xFF629D:
altına
analogWrite(kirmizi,50);
analogWrite(blue, 255);
serial.println("bir işlem");
serial.println("başka bir işlem");
vs. yazabilirsin.
-
iki rengi aynı anda çıkartamıyorum.
-
O zaman gelen kodlar orayla uyuşmuyordur. Gelen kodu
// Serial.println(results.value, HEX);
satırındaki yorumu kaldırarak açıp, gelen tüm veriyi görsen? Ledin bağlantısının yanlış olmadığını farz ediyorum.
-
led yanlış bağlı değilde yorum satırı koda etki etmezki açıklama amaçlı
-
zasox bunu yazdı
led yanlış bağlı değilde yorum satırı koda etki etmezki açıklama amaçlı
Hatırlatma için sağ ol:P
//'ı kaldırırsak çalışmaya başlar. Şunu denemeye çalışıyoruz: Kumandadan hangi kod geliyor ve switch bloğundaki hangi case değimine düşüyor.
-
hocam olmuyor sildim yorum işaretini ama şimdi sadece tek renk atıyor kırmızı filan tek açıyor
2. tıklayışımda gelmiyor
-
@zasox hocam yorumu sildikten sonra seri iletişimle terminalde kumandadan gelen tuş adres bilgilerini yakalayabildin mi?
-
#include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } delay(100); } yukarıdaki kodu bir dener misin? Serial console'a ne düşüyor?
-
FF6897
FF6897
FF9867
FFB04F
FF7A85
FF18E7
FF30CF
FF10EF
FF10EF
FF38C7
FFA25D
FFA25D
FFFFFFFF
FF629D
FFFFFFFF
FFE21D
FF22DD
FF02FD
FFC23D
FFFFFFFF
FFA857
FFE01F
FFFFFFFF
FF906F
FF9867
FF18E7
FF7A85
FF18E7
FFFFFFFF
FF38C7
FF18E7
FF18E7
FF30CF
FF30CF
FF30CF
FF30CF
FF30CF
FFFFFFFF
FF30CF
FF7A85
FF30CF
FF30CF
BU TARZ KODLAR GELİYOR -
Tamam. Şimdi o kodları not edeceğiz. Hangi tuşa bastığımızda hangi kod geliyor diye. Sonraki işlem şu:
#include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) {
translateIR();
//Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } //delay(100); }
void translateIR()
{
switch(results.value)
{case 0xFF6897: // 1 yazan tuş varsaydım
serial.println("1");
break;
case 0xFFB04F: // 2 yazan tuş varsaydım
serial.println("2");
break;
default:
serial.println("bilinmeyen tuş");
}
delay(100);
}