Перехват кодировки шлагбауов и воротах, нужна помошь.
- Войдите на сайт для отправки комментариев
Пнд, 01/06/2015 - 22:45
Добрый вечер, Есть необходимость узнать коды радио пулита (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 и чтобы на нём отобразились данные коды? Спосибо.
Можно, подключайте.
Или Вы хотели что-то другое услышать?
можно премер кода чтобы данные отобразились на экранчике?
можно премер кода чтобы данные отобразились на экранчике?
А сверху справа вбить в строку поиска nokia 5110 религия не позволяет?
сечяс попробую ))) спосибо за совет ;)
#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(); } }А как пробовал?
я пока подкл. экранчик а дальше тупик, в гугле не нашол чтото подобное , помоги пожалуста
Посмотри примеры библиотеки
Будет непонятно - спрашивай, но конкретно. Я помогу если хочешь научиться.
Посмотрел в библиотеке ничего не решыл.
читайте про переменные и функции для начала
http://arduino.ru/Reference
читайте про переменные и функции для начала
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(); } }Великолепно!
Подсветка экрана горит, в терминал выводятся Ваши значения. Как раз то что Вы в скетче написали.
теперь ищите разницу в командах
Serial.print
и
myGLCD.print
"Подсветка экрана горит" - горит :D
"в терминал выводятся Ваши значения" - да
"теперь ищите разницу в командах
Serial.print
и
myGLCD.print" - Как я понимаю в данном коде менять ничего не надо только дописать код да?
Не, ну ведь нужны такие темки иногда, второй час уже улыбаюсь, а иначе скучно будет :D
Ну тогда почитай в "отвлеченных" "помогите новичку"
Ну тогда почитай в "отвлеченных" "помогите новичку"
Вот изменил код до этого уровня дальше ни как (
#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
а пример из библиотеки заработал? Пины правильно подключены? Пример для Вашей ардуины?
Да пример работает
#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); }"Пины правильно подключены?" - да
Вот теперь "потихоньку" добавляйте строки из другого скетча и смотрите чтобы все работало.
Начинайте "сверху" :)
Первая строка показывает.
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
Угу, у Вас даже написано где и какая ;)
Читаем документацию про типы переменных и про функции.
Тут я здаюсь!
найдите отличия
myGLCD.printNumI(i, RIGHT, 24);
myGLCD.print("| |", CENTER, 16);
printNumI ?
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(); } }не смотря в библиотеку могу предположить что нет. Это для Integer, видимо, а у Вас Long. Что в описании ошибки черным по оранжевому написано :)
Вот если Вы еще разберетесь что и почему, тогда спасибо приму, а так - не за что.
Я больше изучяю из примеров что в сети интернета, но я долеко от C++ :D
изучать != накопировать чобды усё заработало, и пофигу как и почему
;)
Ты прав )) мне не пофигу, я узнал чтото нового если что буду смотретьв коде и всё будет ясно . У меня первая идея было чтобы коды сохранились на СД карту )) но я предпологаю что там будет для меня будет тёмный лес :D