Проблемы с пультом ДУ

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
Ответить
ynegveninira
Сообщения: 5
Зарегистрирован: 14 фев 2013, 14:14

Проблемы с пультом ДУ

Сообщение ynegveninira »

Добрый вечер. Приобрел у вас IR remote kit от производителя sparkfun 8го февраля 2012го.
Целый день пытался заставить его работать, но, тщетно. Заметил, что в комплекте не хватало одного IR приёмника, а когда решил заглянуть внутрь непосредственного самого пульта - не досчитался одного винта, удерживающего плату под кнопками.

Хотелось бы просто поинтересоваться, не ваших ли это рук дело? И можно ли как-то этот пульт, хотя бы самостоятельно, починить, ибо терять пол тысячи рублей не очень хочется. :?:
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: SecondHand под видом нового.

Сообщение Mr.Kubikus »

Здравствуйте!

Возможно вы ошиблись. Товар "[RTL-10783] Дистанционное управление ИК" в ассортименте нашего магазина появился только в мае 2012 года.

Не могли бы вы отправить нам на почту info at pacpac.ru номер вашего заказа?
С уважением, Григорий
GitHub FB ВК
ynegveninira
Сообщения: 5
Зарегистрирован: 14 фев 2013, 14:14

Re: SecondHand под видом нового.

Сообщение ynegveninira »

Mr.Kubikus писал(а):Здравствуйте!

Возможно вы ошиблись. Товар "[RTL-10783] Дистанционное управление ИК" в ассортименте нашего магазина появился только в мае 2012 года.

Не могли бы вы отправить нам на почту info at pacpac.ru номер вашего заказа?
Благодарю сотрудников магазина за доброжелательность и замену не работающего пульта на новый, но, к сожалению, новый пульт так же отказывается работать, по всей видимости произошел брак на производстве, так как негативных отзывов относительно данного товара в сети Интернет достаточно.

Тем не менее, подключив к дуине домашний пульт от ТВ возник следующий вопрос.
Задача:
Управлять серво мотором ультразвуковым дальномером и инфракрасным пультом. Так как пульт и дальномер не могут одновременно посылать данные на серво, требуется добавить кнопку для включения/выключения дальномера и последующей активации пульта для работы с серво. К сожалению никак не могу обойтись без физического переключения с пульта на дальномер и обратно путем замыкания/размыкания цепи на 12ом цифровом выходе с помощью тумблера.

Код: Выделить всё

#include <rxURM04.h> //импорт библиотеки для дальномера
#include <Servo.h>   //импорт библиотеки для сервопривода

Servo servo;

float rs = 0;    //переменная для данных с датчика
static unsigned long timePoint = 0;
int irPin = 5;   //Подключаем ножку данных TSOP приёмника
int start_bit = 2200; 
int bin_1 = 1000;
int bin_0 = 400;
int ledPin = 13; //светодиод на 13-м пине
int Button = 12; //кнопка переключения управления с пульта на дальномер
int val = 0;
int pos = 0;


void setup()
  {
    pinMode(irPin, INPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(Button, INPUT);
    digitalWrite(Button, HIGH);
    Serial.begin(19200); //инициализируем Serial соединение
    servo.attach(9);     //подключаем сигнальный провод сервы к пину 9
    URM04_init();        //инициализируем дальномер
  }


void loop()
 {
  digitalWrite(ledPin, LOW);
  val = digitalRead(Button); //опрашиваем состояние кнопки
  delay(50);
  switch(val)
    {
      case 0: Distance(); break;
      case 1: ButtonControl(); break;
      default: break; 
    }
  delay(50);
 }

void Distance() //функция опреления расстояния и движения сервы
  {
    if(millis() - timePoint > 200)
    {
      pos = servo.read();
      servo.write(pos);
      rs = URM04_getDistance(); // получение данных с датчика
      //Serial.print("Дистанция:  ");
      //Serial.println(rs);   // Вывод данных в консоль, скорость 19200 бод
      rs = map(rs, 0, 350, 0, 150);
      servo.write(rs);
      digitalWrite(ledPin, HIGH);
      delay(100);
     }
   }
  
void ButtonControl() //функция управления сервой с пульта (LEFT/RIGHT)
  {
    pos = servo.read();
    servo.write(pos);
    int key = getIRKey();
    if(key != 0) 
     {
        switch(key)
          {
            case 180: 
              {
                int servopos = servo.read();
                servo.write(servopos);
                int irserv = servopos - 20;
                servo.write(irserv);
                digitalWrite(ledPin, HIGH);
                delay(100);
              };
                break;
            case 179: 
              {
                int  servopos = servo.read();
                servo.write(servopos);
                int irserv = servopos + 20;
                servo.write(irserv);
                digitalWrite(ledPin, HIGH);
                delay(100);
              };
                break;
            default: break;
          }
       delay(50);
     } 
  }
  
int getIRKey() 
  {
    int data[12];
    int i;
    while(pulseIn(irPin, LOW) < start_bit); 
    for(i = 0 ; i < 11 ; i++)
      data[i] = pulseIn(irPin, LOW); 
    for(i = 0 ; i < 11 ; i++)
      {	    
        if(data[i] > bin_1)
        data[i] = 1;
          else if(data[i] > bin_0)
            data[i] = 0;
              else
                return -1;
       }
  
    int result = 0;
    for(i = 0 ; i < 11 ; i++)
      if(data[i] == 1) result |= (1<<i);
        return result; //Возвращаем код нажатой кнопки
  }
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Проблемы с пультом ДУ

Сообщение Mr.Kubikus »

Здравствуйте!

Мы проверили пульт, который вы вернули. Он нормально работает. В домашних условиях вы сами можете проверить работоспособность пульта. Просто включите на вашем смартфоне режим фотокамеры, поднесите пульт к камере и нажмите на любую кнопку. На экране смартфона вы увидите как моргает ИК светодиод.
С уважением, Григорий
GitHub FB ВК
Ответить