Автор Тема: Въпрос за схема с реле  (Прочетена 10731 пъти)

shanto

  • Новодошъл
  • *****
  • Публикации: 5
    • Профил
Въпрос за схема с реле
« -: Юни 12, 2015, 05:00:34 pm »
Здравейте, направил съм си една схема за управление на 4 броя осветителни тела със IR приемник,дистанционно и тези релета по следната схема:


Това е кодът:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();                         // стартира IR приемника
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
//----------------------------------------------- променливи за отчитане на включване(изключване)
int i1 = 0;
int i2 = 0;
int i3 = 0;
int i4 = 0;
int i5 = 0;

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    Serial.println(results.value);
    irrecv.resume();                             // приема стойността на следващия натиснат бутон
   //--------------------------------------------- бутон 1
    if(i1 == 0 && results.value == 3739558593)
    {
      digitalWrite(6, LOW);
      i1 = 1;
    }
    else if(i1 == 1 && results.value == 3739558593)
    {
      digitalWrite(6, HIGH);
      i1 = 0;
    }
    //--------------------------------------------------- бутон 2
     else if(i2 == 0 && results.value == 1868133565)
    {
      digitalWrite(5, LOW);
      i2 = 1;
    }
    else if(i2 == 1 && results.value == 1868133565)
    {
      digitalWrite(5, HIGH);
      i2 = 0;
    }
    //--------------------------------------------------- бутон 3
    else if(i3 == 0 && results.value == 2557457189)
    {
      digitalWrite(4, LOW);
      i3 = 1;
    }
    else if(i3 == 1 && results.value == 2557457189)
    {
      digitalWrite(4, HIGH);
      i3 = 0;
    }
    //-------------------------------------------------- бутон 4
    else if(i4 == 0 && results.value == 3419589885)
    {
      digitalWrite(3, LOW);
      i4 = 1;
    }
    else if(i4 == 1 && results.value == 3419589885)
    {
      digitalWrite(3, HIGH);
      i4 = 0;
    }
   //-------------------------------------------------- Изключва всички
   else if(i5 == 0 && results.value == 3001999165)
    {
      digitalWrite(6, HIGH);
      i1 = 0;
      digitalWrite(5, HIGH);
      i2 = 0;
      digitalWrite(4, HIGH);
      i3 = 0;
      digitalWrite(3, HIGH);
      i4 = 0;
     }
   }
}
Схемата си работи, но при стартиране релетата са включени защото те се включват при подаване на логическа нула, а пиновете 3,4,5,6 при стартиране на ардуиното са в режим LOW, който подава логическа нула на релетата и те се включват.Въпросът ми е  може ли във void setup да укажа пиновете 3,4,5,6 при стартиране да са в режим HIGH, за да може релетата да не са включени по подразбиране?
« Последна редакция: Юни 12, 2015, 05:04:45 pm от shanto »

nunep

  • Вече знае какво е робот!
  • *****
  • Публикации: 76
    • Профил
Re: Въпрос за схема с реле
« Отговор #1 -: Юни 12, 2015, 08:52:36 pm »
Здрасти,

 още в Setup вдигни пиновете на HIGH.

Успех!

shanto

  • Новодошъл
  • *****
  • Публикации: 5
    • Профил
Re: Въпрос за схема с реле
« Отговор #2 -: Юни 13, 2015, 02:46:20 pm »
Ок, стана.Благодаря за помощта. Това е окончателният код:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();                         // стартира IR приемника
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
}
//----------------------------------------------- променливи за отчитане на включване(изключване)
int i1 = 0;
int i2 = 0;
int i3 = 0;
int i4 = 0;
int i5 = 0;

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    Serial.println(results.value);
    irrecv.resume();                             // приема стойността на следващия натиснат бутон
   //--------------------------------------------- бутон 1
    if(i1 == 0 && results.value == 3739558593)
    {
      digitalWrite(6, LOW);
      i1 = 1;
    }
    else if(i1 == 1 && results.value == 3739558593)
    {
      digitalWrite(6, HIGH);
      i1 = 0;
    }
    //--------------------------------------------------- бутон 2
     else if(i2 == 0 && results.value == 1868133565)
    {
      digitalWrite(5, LOW);
      i2 = 1;
    }
    else if(i2 == 1 && results.value == 1868133565)
    {
      digitalWrite(5, HIGH);
      i2 = 0;
    }
    //--------------------------------------------------- бутон 3
    else if(i3 == 0 && results.value == 2557457189)
    {
      digitalWrite(4, LOW);
      i3 = 1;
    }
    else if(i3 == 1 && results.value == 2557457189)
    {
      digitalWrite(4, HIGH);
      i3 = 0;
    }
    //-------------------------------------------------- бутон 4
    else if(i4 == 0 && results.value == 3419589885)
    {
      digitalWrite(3, LOW);
      i4 = 1;
    }
    else if(i4 == 1 && results.value == 3419589885)
    {
      digitalWrite(3, HIGH);
      i4 = 0;
    }
   //-------------------------------------------------- Изключва всички
   else if(i5 == 0 && results.value == 3001999165)
    {
      digitalWrite(6, HIGH);
      i1 = 0;
      digitalWrite(5, HIGH);
      i2 = 0;
      digitalWrite(4, HIGH);
      i3 = 0;
      digitalWrite(3, HIGH);
      i4 = 0;
     }
   }
}