Не работает вкл реле с ПДУ?(

moroz240395
Offline
Зарегистрирован: 17.09.2015

Привет. Помогите вот скейтч не мой, но готовы

moroz240395
Offline
Зарегистрирован: 17.09.2015

не работает вкл реле с пду. я не селен в этом, но заливал скейтч для проверки реле и реле замыкается. Значит проблема в скейтче. Прошу у вас помощи, может кто подскажет что???  https://disk.yandex.ru/client/disk/BBK

Radjah
Offline
Зарегистрирован: 06.08.2014

А где скетч? По ссылке ничего нет.

beve
Offline
Зарегистрирован: 15.07.2015

Бывают разные реле, может проблемма в этом, одни реле включаются так:

	digitalWrite(RelayPin, LOW);

другие наоборот так:

	digitalWrite(RelayPin, HIGH);

 

moroz240395
Offline
Зарегистрирован: 17.09.2015

Вот скетч


// ===============================================
// Управление компьютером с помощью Arduino Micro и ИК-пульта
// IR2USB v 0.2
// (c) Nomad
// ===============================================

#include <IRremote.h>

// ===============================================
// пин, на который подключен ИК-датчик
#define ir_dataPin A3

// пин, на который подключен управляющий контакт
// реле включения ПК. Рабочие контакты реле должны
// идти на кнопку <POWER> компьютера.
#define PowerPin 10

#define hold_cycles 17000

// ===============================================
unsigned int nTurn;
unsigned long nPressedButton;

IRrecv irrecv( ir_dataPin );

void setup()
  {
  nTurn = 0;
  nPressedButton = 0;

  irrecv.enableIRIn();

  Keyboard.begin();
  Serial.begin( 9600 );
  }

void ReleaseKey()
  {
  nTurn = 0;
  nPressedButton = 0;
  Keyboard.releaseAll();
  }

decode_results ir_data;
void loop()
  {
  byte cNewKey = 0;
  if( irrecv.decode( &ir_data ))
    {
    if( ir_data.decode_type == 3 ) ir_data.value |= 0x800;
    else if( ir_data.decode_type == 4 ) ir_data.value |= 0x8000;
    
    Serial.print( "   type = " );
    Serial.print( ir_data.decode_type, DEC );
    Serial.print( "   code = " );
    Serial.print( ir_data.value, HEX );
    Serial.print( "   bits = " );
    Serial.println( ir_data.bits, DEC );

    if( ir_data.value == nPressedButton ) ir_data.value = REPEAT;

    // Трансляция кодов кнопок пульта в клавиши клавиатуры
    switch( ir_data.value )
      {
      case 0xE01F807F :                 // Реле включения/выключения компьютера
        digitalWrite( PowerPin, HIGH  );
		delay( 100 );
        digitalWrite( RelayPin, LOW );
        break;
      case 0x1:                 // Включение ТВ - F1 (10011)
        cNewKey = KEY_F1;
        break;
      case 0x80C:                 // Выключение ТВ - F2
        cNewKey = KEY_F2;
        break;
      case 0x80A:                 // Language - L
        cNewKey = 'l';
        break;
      case 0x838:                 // Menu - O
        cNewKey = 'o';
        break;
      case 0x836:                 // Guide - G (11111)
        cNewKey = 'g';
        break;
      case 0x95F:                 // Context menu - C (22222)
        cNewKey = 'c';
        break;
      case 0x83B:                 // Back
        cNewKey = KEY_BACKSPACE;
        break;
      case 0x834:                 // [Blue] Home
        cNewKey = KEY_ESC;
        break;
      case 0x945:                 // [Green] Переключение звука - ТВ/ресивер - F7 (00093)
        cNewKey = KEY_F7;
        break;
      case 0x812:                 // Volume Up - F10 (00111)
        cNewKey = KEY_F10;
        break;
      case 0x959:                 // Volume Down - F9 (00222)
        cNewKey = KEY_F9;
        break;
      case 0x80D:                 // Mute - F8
        cNewKey = KEY_F8;
        break;
      case 0x966:                 // ChUp (00001)
        cNewKey = KEY_PAGE_UP;
        break;
      case 0x97E:                 // ChDown (00002)
        cNewKey = KEY_PAGE_DOWN;
        break;
      case 0xE01F9A65:                 // Up
        cNewKey = KEY_UP_ARROW;
        break;
      case 0xE01F1AE5:                 // Left
        cNewKey = KEY_LEFT_ARROW;
        break;
      case 0xE01FBA45 :                 // OK
        cNewKey = KEY_RETURN;
        break;
      case 0xE01F7A85:                 // Right
        cNewKey = KEY_RIGHT_ARROW;
        break;
      case 0xE01F3AC5:                 // Down
        cNewKey = KEY_DOWN_ARROW;
        break;
      case 0x83C: 
      // Rew - R
        cNewKey = 'r';
        break;
      case 0x82B:                 // Play - P
        cNewKey = 'p';
        break;
      case 0x83F:                 // FF - F
        cNewKey = 'f';
        break;
      case 0xD35:                 // Prev - , (00091)
        cNewKey = ',';
        break;
      case 0x829:                 // Pause - " "
        cNewKey = ' ';
        break;
      case 0x94D:                 // Next - .  (00092)
        cNewKey = '.';
        break;
      case 0x82E:                 // Stop - X
        cNewKey = 'x';
        break;
      case 0x801:                 // 1
        cNewKey = '1';
        break;
      case 0x802:                 // 2
        cNewKey = '2';
        break;
      case 0x803:                 // 3
        cNewKey = '3';
        break;
      case 0x804:                 // 4
        cNewKey = '4';
        break;
      case 0x805:                 // 5
        cNewKey = '5';
        break;
      case 0x806:                 // 6
        cNewKey = '6';
        break;
      case 0x807:                 // 7
        cNewKey = '7';
        break;
      case 0x808:                 // 8
        cNewKey = '8';
        break;
      case 0x809:                 // 9
        cNewKey = '9';
        break;
      case 0x800:                 // 0
        cNewKey = '0';
        break;
      default:
        nTurn = 0;
      }
    irrecv.resume();
    }
  if( cNewKey )
    {
    if( nPressedButton ) ReleaseKey();

    nPressedButton = ir_data.value;
    Keyboard.press( cNewKey );
    }
  else if( nPressedButton )
    {
    if( ++nTurn >= hold_cycles ) ReleaseKey();
    }
  }