Принимаем данные по радиоканалу и отображаем их на LCD дисплее 1602A
| [ Скачать с сервера (37.8 Kb) ] | 07.11.2016, 13:33 |
Прием данных из радиоканала и отображение их на LCD дисплееПередатчик передает данные по радиоканалу, а приемник принимает и отображает в 1-ой строке номер принятого сообщения, во 2-ой строке - сообщение.
/*
Принимаем данные по радиоканалу и отображаем их на LCD дисплее 1602A
*/
#include <LiquidCrystal.h> // Лобавляем необходимую библиотеку
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7)
//////////////////////////
#include <VirtualWire.h> //название библиотеки должно быть заключено в угловые скобки <>
byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message
#define RECEIVER_PIN 11
int count;
#define BUF_SIZE 16
char buf[BUF_SIZE+1];
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Hello world!");
lcd.setCursor(0,1);
lcd.print("Arduino World!!!");
//
delay(1000);
//lcd.clear();
//
count=0;
//
// приемник
Serial.begin(9600);
Serial.println("Device is ready");
// Initialize the IO and ISR
vw_set_rx_pin(RECEIVER_PIN);
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver
}
void loop() {
int i, l;
// put your main code here, to run repeatedly:
// в первой строке
lcd.setCursor(0,0);
itoa(count, buf, 10);
lcd.print(buf); // отобразим кол-во принятых сообщений
delay(200);
// получили сообщение?
if (vw_get_message(message, &messageLength)) {
count++;
// скопируем сообщение в буфер
l=messageLength;
if(l>BUF_SIZE) l=BUF_SIZE;
for (i = 0; i < l; i++) {
buf[i]=message[i];
}
// дополним буфер пробелами
while(i<BUF_SIZE) {
buf[i++]=' ';
}
buf[i]=0;
// отобразим буфер
Serial.print(count); Serial.print(") Received: "); Serial.println(buf);
// во второй строке LCD - принятое сообщение
lcd.setCursor(0,1);
lcd.print(buf);
}
}
| |
| Категория: Arduino | | |
| Просмотров: 500 | Загрузок: 7 | |