Урок 11.Ультразвуковой дальномер.Часть 2

В первом уроке мы рассмотрели измерение расстояния до объекта.Сегодня мы попробуем выводить расстояние на дисплей.Для этого нам понадобиться:

http://electromicro.ru/market/izmeritel_nye_pribory_i_instrumenty/2/  Дисплей

Соберем схему показанную на рисунке:

Безымянный11

Запрограммируем arduino следующим кодом:

int echoPin = 2; // Эхо живет на 2 пине
int trigPin = 3; // Сигнал живет на 13 пине
int duration, cm;
#include <LiquidCrystal.h> //Подключаем библиотеку для работы с LCD
LiquidCrystal lcd(12,11,7,6, 5, 4); // инициализируем LCD, указывая управляющие контакты
void setup() {
Serial.begin (9600); // Настраиваем порт.Необходимо всегда писать данную строку если хотите что либо выводить в консоль или монитор порта
pinMode(trigPin, OUTPUT); // настраиваем на выход
pinMode(echoPin, INPUT); // настраиваем на выход
lcd.begin(16, 2);// задаем размерность дисплея
lcd.print(cm); // выводим на дисплей циферки
}
void loop() {

lcd.begin(16, 2);// задаем размерность дисплея
digitalWrite(trigPin, LOW); // Подаем низкий сигнал
delayMicroseconds(2); // Ждем
digitalWrite(trigPin, HIGH); // Подаем высокий сигнал.Тем самым имитируя подачу импульса на встречу с объектом.
delayMicroseconds(10); // Ждем
digitalWrite(trigPin, LOW); // Снова низкий сигнал.
duration = pulseIn(echoPin, HIGH); // Измеряем дистанцию по отбежавшим от объекта волнам.
cm = duration / 58;// Делим на 58.Необходимо для преобразования сигнала в сантиметры
Serial.print(cm); // Выводим на экран cm
Serial.println(» cm»); // Выводим на экран cm
lcd.print(cm); // выводим на дисплей циферки
delay(100);// Ждем 100 мили секунд
}

Для работы с прошивкой необходимо установить библиотеки.Это можно сделать скачав файл  https://cloud.mail.ru/public/5rVo/AqX2oiLJ4 .Распаковав его переместите папку в папку adruno — libraries.Папка находится в установочных файлах на вашем диске.И только потом запускайте arduino ide.

Пользуйтесь на здоровье.

 

 

Дисплей для raspberry pi или что мы ждали

Представляем вам долгожданную новинку, настоящий 3.5 дисплей для raspberry pi.Дисплей поможет вам сделать из вашего микро компьютера, полноценную компактную систему отображения.Дисплей имеет следующую комплектацию:

Модуль-дисплей

Стилус
И следующие характеристики:
Интерфейс: SPI
Разрешение: 480×320
Напряжение питания: 3,3 В
Рабочее напряжение: 3,3 В
Тип тачскрина: резистивный
Контроллер тач-скрина: XPT2046
Диагональ: 3,5 дюйма
Размер модуля: 85×51 мм

Теперь перейдем к установке дисплея:

1) Запустите компакт-диск, поставляемый с модулем. Затем cкопируйте себе файлы с диска.
Файл образа системы, можно скачать отсюда.
http://www.waveshare.net/wiki/DVK512 .
2) Отформатируйте карту SD с помощью  SDFormatter.exe.
Внимание: Возможность SD карты в используется здесь должна быть больше, чем 4 ГБ.
3) Запустите Win32DiskImager.exe и выберите файл образа системы,
затем нажмите кнопку Write.

1Далее после стандартной установки пропатченной версии RASPBIAN WHEEZY.Мы перейдем к установке дисплея.

4) Следующим, вы должны ввести следующую команду, чтобы отключить
функцию последовательного порта отладки:
root@raspberrypi:/# DIS_UART-LCD
5) При использовании Displayer HDMI, вы должны ввести следующую команду для отключения
root@raspberrypi:/# DIS_UART-HDMI
6) При использовании дисплея, вы должны ввести следующую команду, чтобы включить функцию  отладки:
root@raspberrypi:/# EN_UART-LCD
7) При использовании Displayer HDMI, вы должны ввести следующую команду для включения функцию отладки:
root@raspberrypi:/# EN_UART-HDMI
Как работать с 3,5-дюймовым дисплеем?
8) Применить образ системы, описанной в разделе 1.1, и власти до пи.
9) Введите следующие команды для калибровки сенсорного экрана:
pi@raspberrypi:/$ su pi

pi@raspberrypi:/$ DISPLAY=:0.0 xinput_calibrator
10) После выполнения этих команд, будет  для калибровки  четыре точки,
отображаться на экране. Нажмите одну из точек по одному, чтобы закончить калибровку

Получите эти данные для использования в будущем.4
11) Введите следующую команду для редактирования 99-calibration.conf:
pi@raspberrypi:/$ sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

5
12) Измените данные, отмеченные красной линией на рисунке  на новые данные калибровки, которые отобразились при калибровке.

6
13) Нажмите клавиши Ctrl + X, и выберите опцию Y, чтобы сохранить изменения.
14) Изменение вступит в силу после перезагрузки системы. Введите следующую команду:
pi@raspberrypi:/$ sudo reboot
Почему нет изображения из HDMI?
15) Режим по умолчанию загрузочного образа системы  выбирает 3,5 дисплей. И  картинка не будет выводиться через HDMI
В случае, если вы хотите использовать HDMI
дисплей, пожалуйста, выполните следующие команды:
pi@raspberrypi:/$ sudo su

root@raspberrypi:/# HDMI-SYS-SHOW

 

Урок 18.Управление серводвигателем с помощью компьютера.

Сегодня мы с помощью «Монитора порта и схемой из прошлого урока будем управлять 3 серводвигателями.Соберем схему из прошлого урока:

Безымянный17

Запрограммируем arduino cследующим кодом:

#include «Servo.h»
Servo servo1; // Создаем переменную
Servo servo2; // Создаем переменную
Servo servo3; // Создаем переменную
int val; //здесь будет храниться принятый символ

void setup()
{
servo1.attach(7);// Пин на котором находится сервопривод 1
servo2.attach(8);// Пин на котором находится сервопривод 2
servo3.attach(10); // Пин на котором находится сервопривод 3
Serial.begin(9600); //Настраиваем порт
}

void loop()
{
if (Serial.available()) { //если есть символ,
val = Serial.read(); // то читаем его
if (val == ‘Q’) { // если принят симовол ‘Q’,…
servo1.write(90); // Повернуть серво на 90 градусов.
}
}
if (Serial.available()) { //если есть принятый символ,
val = Serial.read(); // то читаем его и сохраняем в val
if (val == ‘W’) { // если принят симовол ‘W’,…
servo2.write(90); // Повернуть серво на 90 градусов.
}
}
if (Serial.available()) { //если есть символ,
val = Serial.read(); // то читаем его и сохраняем в val
if (val == ‘E’) { // если принят симовол ‘E’,…
servo3.write(90); // Повернуть серво на 90 градусов.
}
}
}

 

Радуемся и переходим к следующим урокам!

Урок 17.Управление несколькими сервоприводами

После рассмотрения управления сервоприводом, теперь мы рассмотрим управление с несколькими сервоприводами.Это необходимо нам для создания первоначальной вариации любого проекта робота или станка.

Соберем схему:

Безымянный17

Запрограммируем arduino следующим кодом:

#include «Servo.h»// Подключим библиотеки
Servo servo1; // Обозначим переменную
Servo servo2; // Обозначим переменную
Servo servo3; // Обозначим переменную
void setup()
{
servo1.attach(7); // Servo присоединен к 3 выводу
servo2.attach(8); // Servo присоединен к 3 выводу
servo3.attach(10); // Servo присоединен к 3 выводу
}
void loop()
{
servo1.write(0); // Повернуть серво влево на 0 градусов
delay(1000); //ждем одну секунду
servo1.write(45); // Повернуть серво влево на 45 градусов
delay(1000); //ждем одну секунду
servo1.write(90); // Повернуть серво влево на 90 градусов
delay(2000); //ждем две секунды
servo1.write(135); // Повернуть серво влево на 135 градусов
delay(2000); //ждем две секунды
servo1.write(180); // Повернуть серво влево на 180 градусов
delay(1000); //ждем одну секунду
servo2.write(0); // Повернуть серво влево на 0 градусов
delay(1000); //ждем одну секунду
servo2.write(45); // Повернуть серво влево на 45 градусов
delay(1000); //ждем одну секунду
servo2.write(90); // Повернуть серво влево на 90 градусов
delay(2000); //ждем две секунды
servo2.write(135); // Повернуть серво влево на 135 градусов
delay(2000); //ждем две секунды
servo2.write(180); // Повернуть серво влево на 180 градусов
delay(1000); //ждем одну секунду
servo3.write(0); // Повернуть серво влево на 0 градусов
delay(1000); //ждем одну секунду
servo3.write(45); // Повернуть серво влево на 45 градусов
delay(1000); //ждем одну секунду
servo3.write(90); // Повернуть серво влево на 90 градусов
delay(2000); //ждем две секунды
servo3.write(135); // Повернуть серво влево на 135 градусов
delay(2000); //ждем две секунды
servo3.write(180); // Повернуть серво влево на 180 градусов
delay(1000); //ждем одну секунду
}

3.2 TFT дисплей или как сексуальные девиации с arduno mega и due

Сразу скажу.Что я не поддерживаю подобные сексуальные девиации с arduino и желаю гореть в аду для тех кто подобное творит и производит.

Представляем самый большой дисплей 3.2 TFT для arduino, продаваемый у нас в магазине.Дисплей позволяет выводить картинки и с помощью сенсорного экрана взаимодействовать с платой.Основным предназначением для платы является организация интерфейса человек-arduino по средствам пальцев.

Дисплей имеет следующие характеристики:
Диагональ: 3,2 дюйма
Рабочее напряжение: 3,3–5 В
Разрешение: 480×320 (RGB)
Интерфейс: 16-битный параллельный
Размер экрана: 70×43 мм
Размер модуля: 90×54 мм

Дисплей подключается к arduino по spi.Работает модуль только с arduino mega 2560 или arduino due.

Рассмотрим тестовый код для вывода фразы на дисплее:

Для работы мы используем специальные библиотеки UTFT

https://cloud.mail.ru/public/34HP/miJ5p33dH  — основные библиотеки

https://cloud.mail.ru/public/JrzA/pEJ7FZmtj  и https://cloud.mail.ru/public/Cfry/mvo6oxYdT — Для работы с sd картой

https://cloud.mail.ru/public/HkEF/SdHVViS6H -Для такскрина

https://cloud.mail.ru/public/4nB6/8SZbNLvXu  Для работы с фигурами

#include <UTFT.h>// Библиотека дисплея
#include <UTFT_Geometry.h> // Библиотека для вывода геометрии

extern uint8_t SmallFont[];// выбираем шрифт.Всего можно выбрать из трех шрифтов, которые следуют в порядке возрастания размеров знака:SmallFont – 95 символов 8×12, BigFont – 95 символов 16×16,SevenSegNumFont – 10 цифровых символов 32×50

UTFT myGLCD(ITDB32S,38,39,40,41);// задействуем следующие пины

UTFT_Geometry geo(&myGLCD);// создаем объект

void setup()
{
myGLCD.InitLCD();// Обозначаем объекты
myGLCD.setFont(SmallFont);// Выбираем шрифт

myGLCD.setBackColor(VGA_BLACK);
}

void clearField()
{
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(1,15,318,224);
}

void loop()
{
int x1,x2,x3,y1,y2,y3,r,as,ae;
long smillis = millis();

myGLCD.clrScr();
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(0, 0, 319, 13);
myGLCD.setColor(VGA_GRAY);
myGLCD.fillRect(0, 226, 319, 239);
myGLCD.setColor(VGA_WHITE);
myGLCD.setBackColor(VGA_RED);
myGLCD.print(«*** UTFT Geometry ***», CENTER, 1);
myGLCD.setBackColor(VGA_GRAY);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print(«<http://electromicro.ru//>», CENTER, 227);

myGLCD.setColor(VGA_BLUE);
myGLCD.drawRect(0, 14, 319, 225);

myGLCD.setColor(VGA_LIME);
geo.drawArc(160,240,210,-40,40,3);
for (int i=-40; i<=40; i+=8) geo.drawArc(160,240,205,i,i,10); int l = 0; for (int i=0; i>=-40; i-=1)
{
myGLCD.setColor(VGA_BLACK);
geo.drawArc(160,240,110,l,l,170);
l=i;
myGLCD.setColor(VGA_YELLOW);
geo.drawArc(160,240,110,i,i,170);
delay(40-abs(i));
}
for (int i=-40; i<=40; i+=1) { myGLCD.setColor(VGA_BLACK); geo.drawArc(160,240,110,l,l,170); l=i; myGLCD.setColor(VGA_YELLOW); geo.drawArc(160,240,110,i,i,170); delay(40-abs(i)); } for (int i=40; i>=0; i-=1)
{
myGLCD.setColor(VGA_BLACK);
geo.drawArc(160,240,110,l,l,170);
l=i;
myGLCD.setColor(VGA_YELLOW);
geo.drawArc(160,240,110,i,i,170);
delay(40-i);
}

delay(2000);
clearField();
for (int i=0; i<50; i++)
{
myGLCD.setColor(random(255), random(255), random(255));
x1=2+random(316);
y1=16+random(207);
x2=2+random(316);
y2=16+random(207);
x3=2+random(316);
y3=16+random(207);
geo.drawTriangle(x1, y1, x2, y2, x3, y3);
}

delay(2000);
clearField();
for (int i=0; i<50; i++)
{
myGLCD.setColor(random(255), random(255), random(255));
x1=2+random(316);
y1=16+random(207);
x2=2+random(316);
y2=16+random(207);
x3=2+random(316);
y3=16+random(207);
geo.fillTriangle(x1, y1, x2, y2, x3, y3);
}

delay(2000);
clearField();
for (int i=0; i<50; i++)
{
myGLCD.setColor(random(255), random(255), random(255));
x1=32+random(256);
y1=45+random(146);
r=10+random(20);
as=random(360);
ae=random(360);
geo.drawPie(x1, y1, r, as, ae);
}

delay(2000);

myGLCD.fillScr(VGA_BLUE);
myGLCD.setColor(VGA_RED);
myGLCD.fillRoundRect(80, 70, 239, 169);

myGLCD.setColor(VGA_WHITE);
myGLCD.setBackColor(VGA_RED);
myGLCD.print(«That’s it!», CENTER, 93);
myGLCD.print(«Restarting in a», CENTER, 119);
myGLCD.print(«few seconds…», CENTER, 132);

myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(0, 220, 319, 239);
myGLCD.setColor(VGA_LIME);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.print(«Processing time: (msecs)», LEFT, 225);
myGLCD.printNumI(millis()-smillis-11120, RIGHT, 225);

delay (1000);
}

После прошивки arduino и подключением дисплея вы увидите:

DSCN0782[1]

Урок 16.Управления сервоприводом.

В этом уроке мы рассмотрим управление устройством , сервоприводом или сервомотором.Сервопривод представляет собой устройство из электродвигателя и редуктора с управляющей схемой.Для экспериментов можно взять:

http://electromicro.ru/market/akkumulyatory_i_zaryadnye_ustrojstva/mikro-akkumulyator_11-97_4/

Соберем схему:

Безымянный16

Запрограммируем arduino следующим кодом:

#include «Servo.h»// Подключим библиотеки
Servo servo1; // Обозначим переменную

void setup()
{
servo1.attach(3); // Servo присоединен к 3 выводу
}
void loop()
{
servo1.write(0); // Повернуть серво влево на 0 градусов
delay(1000); //ждем одну секунду
servo1.write(45); // Повернуть серво влево на 45 градусов
delay(1000); //ждем одну секунду
servo1.write(90); // Повернуть серво влево на 90 градусов
delay(2000); //ждем две секунды
servo1.write(135); // Повернуть серво влево на 135 градусов
delay(2000); //ждем две секунды
servo1.write(180); // Повернуть серво влево на 180 градусов
delay(1000); //ждем одну секунду
}

Радуемся и продолжаем учиться!

Урок 15.Считываем данные с карт метрополитена и делаем первую полезную штуку.Часть 2

Теперь перейдем к замку.Для примера мы взяли электромагнит.

Для управление электромагнитом нам понадобиться мощное реле.Для этого мы возьмем — Твердотельное реле.Твердотельное реле это — устройство на мощных полупроводниковых транзисторах, позволяющие быстро переключать мощную нагрузку без звука.Данное реле можно приобрести

http://electromicro.ru/market/izmeritel_nye_pribory_i_instrumenty/tverdotel_noe_rele_24-380_v_25_a_ssr-25/

Теперь соберем схему:

Безымянный15

Перейдем к коду:

#include <SPI.h>
#include <MFRC522.h> // это библиотека «RFID».

/*
подключение для Arduino Uno и Mega, производится к разным Pin!
——————————————————
* Pin layout should be as follows:
* Signal Pin Pin Pin
* Arduino Uno Arduino Mega MFRC522 board
* ————————————————————
* Reset 9 5 RST
* SPI SS 10 53 SDA
* SPI MOSI 11 51 MOSI
* SPI MISO 12 50 MISO
* SPI SCK 13 52 SCK

*/

// два Pin (SS и RST) допускают произвольное подключение и конфигурируются в коде.
// !(SS — он же — SDA).
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // объект MFRC522C / reate MFRC522 instance.
unsigned long uidDec, uidDecTemp; // для отображения номера карточки в десятичном формате

void setup() {
Serial.begin(9600); // Настраиваем порт
Serial.println(«Prilozhite kartu / Waiting for card…»);
pinMode(13, OUTPUT);
SPI.begin(); // инициализация SPI
mfrc522.PCD_Init(); // инициализация MFRC522
}
void loop() {
// Поиск новой карточки
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}

// Выбор карточки
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}

uidDec = 0;

// Выдача серийного номера карточки.
for (byte i = 0; i < mfrc522.uid.size; i++)
{
uidDecTemp = mfrc522.uid.uidByte[i];
uidDec = uidDec*256+uidDecTemp;
}
Serial.println(«Serijnyj nomer karty / Card UID: «);
Serial.println(uidDec);

// начинаем сравнивать номер прочитанной корты, с записанным номером карты.
// замените! № «422455350», на номер № вашей карты.
if (uidDec == 422455350)
{
// если номер совпал включим светодиод.
digitalWrite(13, HIGH);
// и отправим сообщение.
Serial.println(«Hi Dmitry»);
}

// также и с другими номерами карт.
else if (uidDec == 959884118)
{
digitalWrite(13, HIGH);
Serial.println(«Hi Anna»);
}

else if (uidDec == 695670870)
{
digitalWrite(13, HIGH);
Serial.println(«Hi Sergey»);
}

else if (uidDec == 695670614)
{
digitalWrite(13, HIGH);
Serial.println(«Hi Sacha»);
}

else
{
digitalWrite(13, LOW);

// если номер карты не совпал, выключим реле.
Serial.println(«Neizvestnaja karta / unknown card»);
}

Serial.println(«=====================================»);
delay(1000);
// выключаем Реле.
}

Радуемся и пользуемся.

 

 

Урок 14.Считываем данные с карт метрополитена и делаем первую полезную штуку.Часть 1

Мы соберем электронный замок)))

Для начала разработки замка рассмотрим процесс считывания и почитаем данные карты метрополитена.Именно их мы и будем использовать их.Для этого нам понадобиться:

http://electromicro.ru/market/izmeritel_nye_pribory_i_instrumenty/rfid_rc522/

Библиотеки можно скачать тут: https://cloud.mail.ru/public/2ooU/aHpQGCHq8

Перейдем к схеме:

Безымянный14

Если тут не возникает вопросов.То перейдем к коду:

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9
#define SS_PIN 10

MFRC522 mfrc522(SS_PIN, RST_PIN); // Создаем экземпляр MFRC522

void setup() {
Serial.begin(9600); // Настраиваем порт
while (!Serial);
SPI.begin(); //Начинаем работать по spi с устройством
mfrc522.PCD_Init();
ShowReaderDetails(); // Показать детали карты
Serial.println(F(«Сканирование PICC, смотрим блоки UID …»));
}

void loop() {
// Ищем новые карты
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}

// Выберите одну из карт
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}

// Выдача отладочной информации о карточке
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}

void ShowReaderDetails() {
// Получаем программное обеспечение MFRC522
byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
Serial.print(F(«MFRC522 Software Version: 0x»));
Serial.print(v, HEX);
if (v == 0x91)
Serial.print(F(» = v1.0″));
else if (v == 0x92)
Serial.print(F(» = v2.0″));
else
Serial.print(F(» (unknown)»));
Serial.println(«»);
// Когда 0x00 0xFF , вероятно, не удалось связаться
if ((v == 0x00) || (v == 0xFF)) {
Serial.println(F(«WARNING: Карты неисправна или проверьте считыватель!»));
}
}

Теперь в «Мониторе порта» вы можете наблюдать данные с карты.Модуль работает по интерфейсу SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.Удачи.

Урок 13.Измеряем температуру и влажность.Часть 2

Теперь когда мы можем понаблюдать за температурой и влажностью в «Мониторе порта».Теперь мы сделаем индикатор превышения порога температуры.С помощью все тех же компонентов и уже установленных библиотек с прошлых уроков.Соберем схему ниже:

Безымянный13

Запрограммируем следующим кодом:

#include «DHT.h»// Подключаем библиотеки
#define DHTPIN 12 // это пин для датчика
#define DHTTYPE DHT11 // тип датчика

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);// настраиваем порт
Serial.println(«elemic_test!»); // выводим небольшой текст в начале
pinMode(5, OUTPUT);// Подключаем светодиод
dht.begin();// начиваем работать
}
void loop() {
delay(2000);// задержка на старт датчика
float h = dht.readHumidity(); // измеряем влажность
float t = dht.readTemperature();// измеряем температуру
float f = dht.readTemperature(true); // вычисляем коэффициент и выводим точную температуру в не зависимости от влажности
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(«Failed sensor!»);// выводим если датчик не работает
return;
}
float hif = dht.computeHeatIndex(f, h);//вычисляем
float hic = dht.computeHeatIndex(t, h, false);// вычисляем

Serial.print(«Humidity: «);// вывод показаний
Serial.print(h);// вывод показаний
Serial.print(» %\t»);// вывод показаний
Serial.print(«Temperature: «);// вывод показаний
Serial.print(t);// вывод показаний
Serial.print(» *C «);// вывод показаний
Serial.print(f);// вывод показаний
Serial.print(» *F\t»);// вывод показаний
Serial.print(«Heat index: «);// вывод показаний
Serial.print(hic);// вывод показаний
Serial.print(» *C «);// вывод показаний
Serial.print(hif);// вывод показаний
Serial.println(» *F»);// вывод показаний
if(hic<28) digitalWrite(5, HIGH); // при сигнале до 28.Включаем светодиод
else digitalWrite(5, LOW); // если от 28.То,выключаем светодиод
}

Если вы захотите изменять температуру срабатывания просто поменяйте в коде в строке:if(hic<28) digitalWrite(5, HIGH); , меняем 28 на любое число, которое вам нужно.

Удачи в обучении.

Урок 12.Измеряем температуру и влажность.Часть 1

Теперь когда мы сделали дальномер, пора взяться за контроль температуры и влажности.С помощью следующего датчика и резистора на 10кОм.Соберем схему:

Безымянный

Сам датчик можно купить тут:http://electromicro.ru/market/datchiki_i_sensory/8/

Библиотеки можно скачать тут:https://cloud.mail.ru/public/D4qi/BjM4CoPWt

Запрограммируем arduino следующим кодом:

#include «DHT.h»// Подключаем библиотеки
#define DHTPIN 7 // это пин для датчика
#define DHTTYPE DHT11 // тип датчика

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);// настраиваем порт
Serial.println(«elemic_test!»); // выводим небольшой текст в начале

dht.begin();// наяинаем работать
}
void loop() {
delay(2000);// задержка на старт датчика
float h = dht.readHumidity(); // измеряем влажность
float t = dht.readTemperature();// измеряем температуру
float f = dht.readTemperature(true); // вычисляем коэффицент и выводим точную температуру в не зависмости от влажности
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(«Failed sensor!»);// выводим если датчик не работает
return;
}
float hif = dht.computeHeatIndex(f, h);//вычисляем
float hic = dht.computeHeatIndex(t, h, false);// вычисляем

Serial.print(«Humidity: «);// вывод показаний
Serial.print(h);// вывод показаний
Serial.print(» %\t»);// вывод показаний
Serial.print(«Temperature: «);// вывод показаний
Serial.print(t);// вывод показаний
Serial.print(» *C «);// вывод показаний
Serial.print(f);// вывод показаний
Serial.print(» *F\t»);// вывод показаний
Serial.print(«Heat index: «);// вывод показаний
Serial.print(hic);// вывод показаний
Serial.print(» *C «);// вывод показаний
Serial.print(hif);// вывод показаний
Serial.println(» *F»);// вывод показаний
}