• 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
Sterowanie silnikiem DC poprzez IR
#6
(19-06-2017, 17:52)arogant napisał(a): ktoś coś? bardzo pilnie tego potrzebuje..
Witam,

Nie wiem jakiej biblioteki kolega używa, ale u mnie poniższy kod działa. Wypróbowany został z użyciem jednego silnika i sterownika gdzie ruch silnika określa się podając na jedno wejście masę, na drugie sygnał PWM.
Kod:
// dla TSOP2236- patrząc od strony wypukłości
// środkowa nozka ++
// prawa GND
// lewa OUT

#include <IRremote.h>

#include <LiquidCrystal_I2C.h>

#define motor1Pin 9

#define ON 0xFFB04F
#define OFF 0xFFF807
#define PLUS 0xFF906F
#define MINUS 0xFFB847

byte RECV_PIN = 11; // pin zczytujacy z odbiornika IR
byte led_pin = 13;

int pwm;

LiquidCrystal_I2C lcd(0x3f, 16, 2);

IRrecv irrecv(RECV_PIN);
decode_results results;


void setup()
{
  pinMode(led_pin, OUTPUT);
  pinMode(motor1Pin, OUTPUT);
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0, 0);

  irrecv.enableIRIn(); // Start the receiver

  pwm = 0;
  analogWrite(motor1Pin, pwm);
}

void loop() {
  if (irrecv.decode(&results)) {
    // wyswietlanie wartosci na lcd
 //   logReceivedCode(results.value);
        irrecv.resume(); // Receive the next value
        
switch (results.value) {
    case ON:
      pwm = 255;
      break;
    case OFF:
      pwm = 0;
      break;
    case PLUS:
      {
      pwm += 10;
      if(pwm > 255) pwm = 255;   
      }
      break;
    case MINUS:
      {
      pwm -= 10;
      if(pwm < 0) pwm = 0;   
      }
      break;  
    default: 
      break;
  }  
  /*
    if (results.value == ON)
    {
     pwm = 255;
 
    }
    if (results.value == OFF)
    {
      pwm = 0;
    }
    if (results.value == PLUS)
    {
     pwm += 10;
     if(pwm > 255) pwm = 255;   
    }
    if (results.value == MINUS)
    {
     pwm -= 10;
     if(pwm < 0) pwm = 0;   
    }
    */
  analogWrite(motor1Pin, pwm); 
  }
  lcd.setCursor(0, 0);
  lcd.print("pwm=");
  lcd.print(pwm);
  lcd.print("   ");
  delay(250);
}

void logReceivedCode(long irCode) {
//  lcd.clear();
//  lcd.setCursor(0, 0);
//  lcd.print(irCode);
//  lcd.setCursor(0, 1);
//  lcd.print(irCode, HEX);
//  lcd.print(" pwm=");
//  lcd.print(pwm);
}

Pozdrawiam,
Smaczek
 
Odpowiedź
  


Wiadomości w tym wątku
Sterowanie silnikiem DC poprzez IR - przez arogant - 15-06-2017, 17:52
RE: Sterowanie silnikiem DC poprzez IR - przez adix - 16-06-2017, 00:07
RE: Sterowanie silnikiem DC poprzez IR - przez Smaczek - 22-06-2017, 12:10

Skocz do:


Przeglądający: 1 gości