среда, 8 апреля 2015 г.

Подключение LCD 1602B к Arduino

Дисплей на основе контроллера HD44780 самый распространенный в кругу разработчиков-любителей микроконтроллеров. Ардуино не исключение, подключить данный дисплей не составляет особого труда. Для этого нам понадобятся 8 проводов. Подключаем по следующей схеме:

Дисплей имеет 16 контактов. ИХ назначение можно посмотреть на картинке ниже.

Этот дисплей, как и прочие на контроллере HD44780, поддерживает два варианта параллельного интерфейса:
8-битный, выводы DB0-DB7, за один такт передаётся 1 байт (8 бит)
4-битный, выводы DB4-DB7, за один такт передаётся половина байта (4 бита)
Смысла использовать 8-битный вариант нет, потому что это требует больше ног, а выигрыша в скорости всё равно нет: частота обновления дисплея не больше 10 раз в секунду, так что мы всё равно не сможем увидеть часто обновляемые данные. Поэтому выводы DB0-DB3 оставляем неподключенными.
Ну что же, всё подключено — пора писать код. Начнём с классического «Hello, World», который доступен в Arduino IDE через пункт меню File ⇨ Examples ⇨ LiquidCrystal ⇨ HelloWorld:
/* Подключаем библиотеку для работы с LCD */
#include <LiquidCrystal.h>

/* Создаём объект LCD-дисплея, используя конструктор класса LiquidCrystal
* с 6ю аргументами. Библиотека по количеству аргументов сама определит,
* что нужно использовать 4-битный интерфейс.
* Указываем, к каким пинам Arduino подключены выводы дисплея:
*   RS, E, DB4, DB5, DB6, DB7
*/
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
 /* Инициализируем дисплей: 2 строки по 16 символов */
 lcd.begin(16, 2);
 /* Выводим на дисплей традиционную фразу (: */
 lcd.print("hello, world!");
}

void loop()
{
 /* Устанавливаем курсор в 1 столбец 2й строки. Нумерация идёт с нуля,
  * первым аргументом идёт номер столбца.
  */
 lcd.setCursor(0, 1);
 /* Выводим на дисплей число секунд, прошедших с момента старта Arduino */
 lcd.print(millis() / 1000);
}
Ничего сложного, как видите: основного кода набралось всего 4 строки.
Обратите внимание на инициализацию дисплея:

lcd.begin(16, 2);
Здесь мы задали размер экрана: 2 строки по 16 символов. Прелесть в том, что можно, ничего не меняя в схеме, подцепить другой дисплей — например, размером 16х4 символа, или сэкономить и взять 8х2. Достаточно изменить строку инициализации соответственно размеру подключенного дисплея.

Библиотека является стандартной поставляется с софтом Ардуино.

Как подключить 315Mhz, 433Mhz, 330Mhz RF transmitter and receiver modules with arduino

315Mhz wireless transmitter and receiver
Модуль приемника расположен слева
Модуль передатчика расположен справа

Параметры приемника 
receiver only
1. Модель: MX-05V
2. Рабочий вольтаж: DC5V
3. Потребляемый ток: 4mA
4. Частота приема:315Mhz
5. Чувствительность приемника:-105DB
6. Размер: 30 * 14 * 7mm
Параметры передатчика
transmitter only
1. Модель: MX-FS-03V
2. Область покрытия :20-200 метров (3.3-12 В Расстояние пропорционально напряжению )
3. Рабочий вольтаж :3.5-12V
4. Размер: 19 * 19mm
5. Скорость передачи: 4KB / S
6. Мощность передатчика: 10mW
7. Частота передатчика: 315Mhz
8. Две 25см антенны расположенные вертикально и горизонтально
Пример: 
Этот пример показывает подключение 2-х Arduino к макетным платам с модулями и передачу сообщения..Передатчик подключен к 12 контакту, а приёмник к 11 контакту, но уже другой Arduino. 
315Mhz wireless transmitter and receiver (1)
Данные передаются через 12 контакт Arduino
Данные приемника считываются с 11 контакта Arduino.
Обратите внимание, что модули подключены к разным Arduino
Подключение передатчика к Arduino:
rotate

Sketch:
12345678910111213141516171819202122
/*
Скетч для передатчика
Этот скетч отправляет короткое сообщение на приемник
Подключите передатчик к 12 контакту Arduino
*/
#include <VirtualWire.h>
void setup()
{
// Инициализация
vw_setup(2000); // бит в секунду
}
void loop()
{
send("Hello there");
delay(1000);
}
void send (char *message)
{
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx(); // Ожидание полной отправки сообщения
}
 
view rawgistfile1.ino hosted with ❤ by GitHub
Подключаем модуль приемника к Arduino:
315Mhz wireless transmitter and receiver (4)

Sketch:
12345678910111213141516171819202122232425262728
/*
SimpleReceive
Этот скетч выводит на экран сообщение посланное с передатчика
Подключение передатчика в 11 контакт Arduino
*/
#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN]; // Массив входящих сообщений
byte messageLength = VW_MAX_MESSAGE_LEN; // Размер массива входящих сообщений
void setup()
{
Serial.begin(9600);
Serial.println("Device is ready");
// Инициализация
vw_setup(2000); // Бит в секунду
vw_rx_start(); // Активировать процесс приемника. Вы должны вызвать эту функцию перед может произойти в любое прием.Прерывание основе фоновый процесс запускается, который контролирует прием данных.
}
void loop()
{
if (vw_get_message(message, &messageLength)) // не блокируемая
{
Serial.print("Received: ");
for (int i = 0; i < messageLength; i++)
{
Serial.write(message[i]);
}
Serial.println();
}
}
view rawgistfile1.ino hosted with ❤ by GitHub
Output:
Передатчик передает сообщение “Hello there”, а приемник выдает сообщение через ком порт на экран.
New Picture (1)