Перехват кодировки шлагбауов и воротах, нужна помошь.

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Добрый вечер, Есть необходимость узнать коды радио пулита (433.92 MHz), для этого нашол такой код:

#include <RCSwitch.h> 

RCSwitch mySwitch = RCSwitch(); 

void setup(){ 
 Serial.begin(9600); 
 mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2 
 Serial.println("Scanning 433,9Mhz "); 
 } 

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else { 
 Serial.print("Received "); 
 Serial.print( mySwitch.getReceivedValue() ); 
 Serial.print(" / "); 
 Serial.print( mySwitch.getReceivedBitlength() ); 
 Serial.print("bit "); 
 Serial.print("Protocol: "); 
 Serial.println( mySwitch.getReceivedProtocol() ); 
 } 
 mySwitch.resetAvailable(); 
 } 
 }
Открываю монитор порта и когда нажимаю на кнопку от пульта в мониторе порта показывает: 
 
Received 2032067 / 24bit Protocol: 1
Received 2032067 / 24bit Protocol: 1
Received 2032067 / 24bit Protocol: 1
Received 2032076 / 24bit Protocol: 1
Received 2032076 / 24bit Protocol: 1
Received 2032076 / 24bit Protocol: 1
 
Можно подкл. экранчик от 5110 и чтобы на нём отобразились данные коды? Спосибо.
JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Можно, подключайте.

Или Вы хотели что-то другое услышать?

dinamitch1
Offline
Зарегистрирован: 15.12.2013

можно премер кода чтобы данные отобразились на экранчике? 

dinamitch1
Offline
Зарегистрирован: 15.12.2013

можно премер кода чтобы данные отобразились на экранчике? 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

А сверху справа вбить в строку поиска nokia 5110 религия не позволяет?

dinamitch1
Offline
Зарегистрирован: 15.12.2013

сечяс попробую ))) спосибо за совет ;)

dinamitch1
Offline
Зарегистрирован: 15.12.2013
Из примера нашол вот это: 
#include <LCD5110_Basic.h>

LCD5110 myGLCD(8,9,10,11,12);

extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

void setup()
{
  myGLCD.InitLCD();
}

void loop()
{
  for (int i=0; i<=10000; i++)
  {
    myGLCD.setFont(MediumNumbers);
    myGLCD.printNumF(float(i)/3, 2, RIGHT, 0);
    myGLCD.setFont(BigNumbers);
    myGLCD.printNumI(i, RIGHT, 24);
  }
  
  myGLCD.setFont(SmallFont);
  myGLCD.print("|            |", CENTER, 16);
  delay(500);
  for (int i=0; i<12; i++)
  {
    myGLCD.print("\\", 6+(i*6), 16);
    delay(500);
  }
  myGLCD.clrScr();
}

проблемма как внедрить этот код? гоогл не помог.

#include <RCSwitch.h> 

RCSwitch mySwitch = RCSwitch(); 

void setup(){ 
 Serial.begin(9600); 
 mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2 
 Serial.println("Scanning 433,9Mhz "); 
 } 

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else { 
 Serial.print("Received "); 
 Serial.print( mySwitch.getReceivedValue() ); 
 Serial.print(" / "); 
 Serial.print( mySwitch.getReceivedBitlength() ); 
 Serial.print("bit "); 
 Serial.print("Protocol: "); 
 Serial.println( mySwitch.getReceivedProtocol() ); 
 } 
 mySwitch.resetAvailable(); 
 } 
 }

 

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

А как пробовал?

dinamitch1
Offline
Зарегистрирован: 15.12.2013

я пока подкл. экранчик а дальше тупик, в гугле не нашол чтото подобное , помоги пожалуста

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Посмотри примеры библиотеки
Будет непонятно - спрашивай, но конкретно. Я помогу если хочешь научиться.

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Посмотрел в библиотеке ничего не решыл.

Мне непонятно вовсе как это зделать, я ноль в в этом как я недавно начял изучять ардуино, и то что я делаю это из тех статьей где всё показанно или описанно (
JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

читайте про переменные и функции для начала

http://arduino.ru/Reference

dinamitch1
Offline
Зарегистрирован: 15.12.2013

JollyBiber пишет:

читайте про переменные и функции для начала

http://arduino.ru/Reference

Вот зделал пока вот так ))

#include <LCD5110_Basic.h>
#include <RCSwitch.h> 

RCSwitch mySwitch = RCSwitch();

LCD5110 myGLCD(8,9,7,6,12);

void setup()
{
  myGLCD.InitLCD();
  Serial.begin(9600); 
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2 
  Serial.println("Scanning 433,9Mhz "); 
}

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else { 
 Serial.print("Received "); 
 Serial.print( mySwitch.getReceivedValue() ); 
 Serial.print(" / "); 
 Serial.print( mySwitch.getReceivedBitlength() ); 
 Serial.print("bit "); 
 Serial.print("Protocol: "); 
 Serial.println( mySwitch.getReceivedProtocol() ); 
 } 
 mySwitch.resetAvailable(); 
 } 
 }

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Великолепно!

Подсветка экрана горит, в терминал выводятся Ваши значения. Как раз то что Вы в скетче написали.

теперь ищите разницу в командах

Serial.print

и

myGLCD.print

dinamitch1
Offline
Зарегистрирован: 15.12.2013

"Подсветка экрана горит" - горит :D

"в терминал выводятся Ваши значения" - да

"теперь ищите разницу в командах

Serial.print

и

myGLCD.print" - Как я понимаю в данном коде менять ничего не надо только дописать код да?

сечяс попробую, спосибо. 

 

Focus
Offline
Зарегистрирован: 05.04.2015

Не, ну ведь нужны такие темки иногда, второй час уже улыбаюсь, а иначе скучно будет :D

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Ну тогда почитай в "отвлеченных" "помогите новичку"

dinamitch1
Offline
Зарегистрирован: 15.12.2013

JollyBiber пишет:

Ну тогда почитай в "отвлеченных" "помогите новичку"

Вот изменил код до этого уровня дальше ни как (

#include <LCD5110_Basic.h>
#include <RCSwitch.h> 

RCSwitch mySwitch = RCSwitch();

LCD5110 myGLCD(8,9,7,6,12);

extern uint8_t SmallFont[];

void setup()
{
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2 
  Serial.println("Scanning 433,9Mhz "); 
}

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else {  
 Serial.print("Received "); 
 Serial.print( mySwitch.getReceivedValue() ); 
 Serial.print(" / "); 
 Serial.print( mySwitch.getReceivedBitlength() ); 
 Serial.print("bit "); 
 Serial.print("Protocol: "); 
 Serial.println( mySwitch.getReceivedProtocol() ); 
 } 
 mySwitch.resetAvailable(); 
 } 
 }
Думаю что должно быть похоже на :
void loop()
{  
  myGLCD.clrScr();
  myGLCD.print("Numbers:", LEFT, 0);
  myGLCD.print("0123456789", CENTER, 16);
  delay (5000);
}

делал пару изменении не получяется. Первая чясть кода работает коды в мониторе порта показывает. Проблемма только как вывесть их на екран :D

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

а пример из библиотеки заработал? Пины правильно подключены? Пример для Вашей ардуины?

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Да пример работает

#include <LCD5110_Basic.h>

LCD5110 myGLCD(8,9,7,6,12);

extern uint8_t SmallFont[];

void setup()
{
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
}

void loop()
{  
  myGLCD.clrScr();
  myGLCD.print("Numbers:", CENTER, 0);
  myGLCD.print("0123456789", CENTER, 16);
  myGLCD.print("0123456789", CENTER, 24);
  myGLCD.print("0123456789", CENTER, 32);
  delay (5000);
}

"Пины правильно подключены?" - да

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Вот теперь "потихоньку" добавляйте строки из другого скетча и смотрите чтобы все работало.

Начинайте "сверху" :)

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Первая строка показывает.

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else {  
 myGLCD.print("Received ", LEFT, 0); 
 } 
 mySwitch.resetAvailable(); 
 } 
 }

 

А если так , ошыбка!

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else {  
 myGLCD.print("Received ", LEFT, 0); 
 myGLCD.print( mySwitch.getReceivedValue(), CENTER, 16 );
 } 
 mySwitch.resetAvailable(); 
 } 
 }

Чтото не так в этой строке -> myGLCD.print( mySwitch.getReceivedValue(), CENTER, 16 );

http://i.imgur.com/KCADrkE.jpg

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Угу, у Вас даже написано где и какая ;)

Читаем документацию про типы переменных и про функции.

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Тут я здаюсь!

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

найдите отличия

myGLCD.printNumI(i, RIGHT, 24);

myGLCD.print("|            |", CENTER, 16);

dinamitch1
Offline
Зарегистрирован: 15.12.2013

printNumI ?

dinamitch1
Offline
Зарегистрирован: 15.12.2013

JollyBiber спосибо огромное , я один бы не справился. Вот что получилось:

#include <LCD5110_Basic.h>
#include <RCSwitch.h> 

RCSwitch mySwitch = RCSwitch();

LCD5110 myGLCD(8,9,7,6,12);

extern uint8_t SmallFont[];

void setup(){
 myGLCD.InitLCD();
 myGLCD.setFont(SmallFont);
 Serial.begin(9600);
 mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2 
 Serial.println("Scanning 433,9Mhz "); 
}

void loop() { 
 if (mySwitch.available()) { 
 int value = mySwitch.getReceivedValue(); 
 if (value == 0) { 
 Serial.print("Unknown encoding"); 
 } else {  
 myGLCD.print("Received CODE:", LEFT, 0);
 myGLCD.printNumI(mySwitch.getReceivedValue(), RIGHT, 16);
 } 
 mySwitch.resetAvailable(); 
 } 
 }

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

не смотря в библиотеку могу предположить что нет. Это для Integer, видимо, а у Вас Long. Что в описании ошибки черным по оранжевому написано :)

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Вот если Вы еще разберетесь что и почему, тогда спасибо приму, а так - не за что.

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Я больше изучяю из примеров что в сети интернета, но я долеко от C++ :D

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

изучать != накопировать чобды усё заработало, и пофигу как и почему

;)

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Ты прав )) мне не пофигу, я узнал чтото нового если что буду смотретьв коде и всё будет ясно . У меня первая идея было чтобы коды сохранились на СД карту )) но я предпологаю что там будет для меня будет тёмный лес :D