22-06-2017, 12:10
(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