Xinda uzaktan kumanda ve 1828 IR alıcı için çalışan kod ve USB fan
  • Merhaba Arduino Türkiye ailesi Ben 1 aydır Arduino ile ilgileniyorum. Zamanında C, C++ yazılımcılığı yaptığım için bu kartı seçtim. IR Remote kontrol ile ilgili kodumu paylaşmak istedim. Denenmiştir. Bu kumanda ile hız ayarı olmayan bir 5V 2,25W USB fan kontrol etmek istiyorum. Fanın harici beslemesinin artı ucuna bir transitör bağlayıp beyzine Arduniodan PWM ille ayarlamayı düşünüyorum. Genel amaçlı bir transistör olur mu? [code] #include IRremote.h> #include IRremoteInt.h> /* * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv * An IR detector/demodulator must be connected to the input RECV_PIN. * Version 0.1 July, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com */ /* Aliexpress.com'dan alınan * (http://www.aliexpress.com/item/Free-Shipping-1LOT-100-New-Infrared-IR-Wireless-Remote-Control-Module-Kits-For-Arduino-Wholesale/32287713931.html) * Xinda marka IR Uzaktan kumanda * ve 1838 alıcı led seti için kodlanmıştır. * dalincom.ru/datasheet/AX-1838HS.pdf * _______ * | IR | * |KART | * |_____| * | | | * | | | * G V Sinyal * Geliştiren: Ümit Kabuli * Tarih: Haziran 2015 * Eğitim ve hobi amaçlı kullanımı serbesttir. * Copyright: 2015 Umit Kabuli */ const unsigned int BAUDRATE = 9600; const unsigned int DELAY_TIME=100; const unsigned int RECV_PIN = 8; const unsigned int LED_PIN = 13; unsigned long pressed_key_value=0; const unsigned long KEY_UP = 0x511DBB; const unsigned long KEY_DOWN = 0xA3C8EDDB; const unsigned long KEY_LEFT = 0x52A3D41F; const unsigned long KEY_RIGHT = 0x20FE4DBB; const unsigned long KEY_OK = 0xD7E84B1B; const unsigned long KEY_1 = 0xC101E57B; const unsigned long KEY_2 = 0x97483BFB; const unsigned long KEY_3 = 0xF0C41643; const unsigned long KEY_4 = 0x9716BE3F; const unsigned long KEY_5 = 0x3D9AE3F7; const unsigned long KEY_6 = 0x6182021B; const unsigned long KEY_7 = 0x8C22657B; const unsigned long KEY_8 = 0x488F3CBB; const unsigned long KEY_9 = 0x449E79F; const unsigned long KEY_0 = 0x1BC0157B; const unsigned long KEY_STAR = 0x32C6FDF7; const unsigned long KEY_SQUARE = 0x3EC3FC1B; const unsigned int KeyCount=17; const unsigned long KeyValues[KeyCount]={ KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_OK, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_STAR, KEY_SQUARE}; String pressed_key_text="no key"; const String TEXT_KEY_UP="Yukari ok"; const String TEXT_KEY_DOWN="Asagi ok"; const String TEXT_KEY_LEFT="Sol ok"; const String TEXT_KEY_RIGHT="Sag ok"; const String TEXT_KEY_OK="OK"; const String TEXT_KEY_1 ="1"; const String TEXT_KEY_2 ="2"; const String TEXT_KEY_3 ="3"; const String TEXT_KEY_4 ="4"; const String TEXT_KEY_5 ="5"; const String TEXT_KEY_6 ="6"; const String TEXT_KEY_7 ="7"; const String TEXT_KEY_8 ="8"; const String TEXT_KEY_9 ="9"; const String TEXT_KEY_0 ="0"; const String TEXT_KEY_STAR ="Yildiz"; const String TEXT_KEY_SQUARE="Kare"; const String KeyStrings[KeyCount] = { TEXT_KEY_UP, TEXT_KEY_DOWN, TEXT_KEY_LEFT, TEXT_KEY_RIGHT, TEXT_KEY_OK, TEXT_KEY_1, TEXT_KEY_2, TEXT_KEY_3, TEXT_KEY_4, TEXT_KEY_5, TEXT_KEY_6, TEXT_KEY_7, TEXT_KEY_8, TEXT_KEY_9, TEXT_KEY_0, TEXT_KEY_STAR, TEXT_KEY_SQUARE}; typedef struct key { String text; unsigned long value; }; struct key Key[17]; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(BAUDRATE); pinMode(LED_PIN,OUTPUT); irrecv.enableIRIn(); // Start the receiver for(unsigned int i=0;i<KeyCount;i++){ Key[i].text=KeyStrings[i]; Key[i].value=KeyValues[i]; } } void loop() { if (irrecv.decode(&results)) { pressed_key_value=results.value; Serial.print("Gelen deger:"); Serial.println(pressed_key_value, HEX); pressed_key_text=""; for(unsigned int i=0;i <= KeyCount;i++) { if(pressed_key_value == Key[i].value){ pressed_key_text=Key[i].text; break; } } if(pressed_key_value == KEY_OK){ digitalWrite(LED_PIN,!digitalRead(LED_PIN)); } if(pressed_key_text != ""){ Serial.print(pressed_key_text); Serial.println(" tusuna basildi\n"); } else { Serial.println("Hatali veri"); Serial.print("\n"); } irrecv.resume(); // Receive the next value } delay(DELAY_TIME); } [/code]
  • "IRremote.h" ve "IRremoteInt.h" header dosyalarının include edilmesi gerekiyor kodun başında.
  • Setup fonksiyonu hatalı aktarılmış. küçüktür büyüktür işaretleri problem yaratıyor forma aktarırken sanırım. Tekrar gönderiyorum: void setup() { Serial.begin(BAUDRATE); pinMode(LED_PIN,OUTPUT); irrecv.enableIRIn(); // Start the receiver for(unsigned int i=0;i < KeyCount;i++){ Key[i].text=KeyStrings[i]; Key[i].value=KeyValues[i]; } }
  • şurada bd139 kullanmış motordaki ters akımları yönetmek için bir tanede 1n4001 gibi bir diyotu şemadaki hibi bağlayın ters voltajla devrenin kendini resetlemesini önlemiş olursunuz. http://www.instructables.com/id/PWM-Arduino-fan-speed-controller/
  • Teşekkürler @okoman. Dediğiniz gibi diyot ters akımları önlemek için konulmalı. Vantilatör tipi hazır fan. belki de kendi devresinde de vardır. Henü bakmadım. Verdiğiniz devre linki 12 V fanlar için olduğundan devreleri ayırmak için optokupler kullanılmış. Benim projemde ikisi de 5 V olduğu için gerekmeyecek sanırım. Deneyeceğim daha. Aklıma gelen diğer bir çözüm MCP41/42 serisi bir digital pot devresi kullanmak.
  • dijital potlar o kadar akımı kaldırmayabilir.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.