• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterownik do rolet
#2
Na pierwszy rzut oka przyszło mi do głowy coś takiego, chyba też nie jest zbyt eleganckie i nie budowałem tego, ale powinno działać.

Kod:
#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

long BUTTON_1 = 0xFF30CF; // sygnał przycisku 1
long BUTTON_2 = 0xFF18E7; // sygnał przycisku 2

int MOTOR_1_UP = 4; // pin do podnoszenia
int MOTOR_2_DOWN = 5; // pin do opuszczania

int STATUS = 0; // zmienna dla statusu rolety np: 0 - nie rusza się, 1 - porusza się w górę, 2 - porusza się w dół

void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn(); // nasłuchiwanie przycisków

 pinMode(MOTOR_1_UP,OUTPUT);
 pinMode(MOTOR_2_DOWN,OUTPUT);
}

void loop() {
 if (irrecv.decode(&results))
 {

   if(results.value == BUTTON_1) // podnoszenie
   {
      if(status == 1) // jeżei już była podnoszona
      {
       status = 0; // zatrzymanie
      }
      else
      {
      status = 1; // podnoszenie
      }
   }

   if(results.value == BUTTON_2) // opuszczanie
   {
      if(status == 1) // jeżeli już była opuszczana
      {
       status = 0; // zatrzymanie
      }
      else
      {
      status = 1; // opuszczanie
      }
   }

   irrecv.resume(); // oczekiwanie na następny przycisk

 }

if(status == 0){
   stop();
 }

 if(status == 1){
   up();
 }

 if(status == 2){
   down();
 }

}

void stop(){
 digitalWrite(MOTOR_1_UP,LOW);
 digitalWrite(MOTOR_2_DOWN,LOW);
}

void up(){
 digitalWrite(MOTOR_1_UP,HIGH);
 digitalWrite(MOTOR_2_DOWN,LOW);
}

void down(){
 digitalWrite(MOTOR_1_UP,LOW);
 digitalWrite(MOTOR_2_DOWN,HIGH);
}
 
Odpowiedź
  


Wiadomości w tym wątku
Sterownik do rolet - przez matiu15 - 05-01-2018, 19:18
RE: Sterownik do rolet - przez DawidK - 07-01-2018, 15:44

Skocz do:


Przeglądający: 1 gości