Перейти к содержимому


Фотография

Урок №4. Выводим данные с Arduino на экран компьютера

Вывод данных

  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 21 Ноябрь 2014 - 15:05

  У Arduino есть несколько измерительных входов. На нашей плате он и обозначены как А0 , А1, А2, А3, А4, А5. Их отличие от «цифровых» входов в том, они могут работать не только с сигналами логических уровней, но и с сигналами совершенно произвольной величины.   Они все равнозначны,  поэтому нет большой разницы, какой  вход мы будем использовать.  Но есть некоторое ограничение- на  такой вход нельзя подавать напряжение более 5 Вольт. Мы не будем использовать внешние источники напряжения и ограничимся тем, что есть в нашем наборе.  Обратим взгляд на очень любопытный элемент, который называется фоторезистором. По своей сути это обычный резистор, но он умеет изменять свое сопротивление в зависимости от уровня своей освещенности. Мы напишем такую программу, которая выведет на экран компьютера цифры, которые покажут, сколько света падает на наш фоторезистор.
  Код программы будет следующий:

int photo = 0;  // фоторезистор подключен 0-му измерительному входу
int level = 0;  // переменная для хранения значения входного напряжения

void setup() 
{
  Serial.begin(9600); // устанавливаем скорость обмена данными с компьютером равную 9600 б/сек.
}

void loop()  // основной цикл программы измерения
{
  level = analogRead(photo);  // считываем значение с фоторезистора
  Serial.println(level);      // выводим на компьютер данные
  delay(300);                 // делаем небольшую паузу между измерениями
}

Прикрепленный файл  2.JPG   14,41К   7 скачиваний

 

Прикрепленный файл  photo.jpg   1,87К   7 скачиваний

 

Прикрепленный файл  1.JPG   87,35К   6 скачиваний

 

Прикрепленный файл  PHT_6466.JPG   72,17К   5 скачиваний

 

  Загружаем программу и нажимаем кнопку «Монитор порта»:

 

Прикрепленный файл  2.JPG   26,59К   5 скачиваний

 

  Мы увидим такое окно. По другому оно называется «окно Терминала». Нужно обязательно выставить скорость 9600, ведь именно такую скорость мы выбрали в программе:

 

Прикрепленный файл  3.jpg   32,71К   5 скачиваний

 

  Постоянно бегущие цифры- это и есть уровень освещенности. Никакую единицу измерения им присвоить нельзя.  Это лишь условные значения. Но если вы закроете фоторезистор листом бумаги, то увидите, как цифры начнут уменьшаться. Если на фоторезистор направить свет от карманного фонарика, то цифры начнут увеличиваться. Можете провести эксперимент и сравнить, чей свет сильнее от карманного фонаря или настольной лампы.
  Попробуем немного усложнить нашу конструкцию и подключим к ней светодиод.  Мы сможем наблюдать интересный эффект- чем ярче свет на фоторезисторе- тем ярче горит светодиод:

int photo = 0;  // фоторезистор подключен 0-му измерительному входу
int level = 0;   // переменная для хранения значения входного напряжения
int led = 10;    // светодиод подключается к 10-му выводу 
void setup() 
{
  Serial.begin(9600); // устанавливаем скорость обмена данными с компьютером
}

void loop()  // основной цикл программы измерения
{
  level = analogRead(photo);  // считываем значение с фоторезистора
  Serial.println(level);      // выводим на компьютер данные
level = level/4;              // конвертируем от измерительного входа в уровень яркости 
 analogWrite(led,level);    т // устанавливаем значение яркости на светодиоде
  delay(300);                 // делаем небольшую паузу между измерениями
}

  Соберем вот такую схему. Нужно лишь к предыдущей добавить светодиод и резистор 220 Ом.

 

Прикрепленный файл  4.JPG   83,77К   6 скачиваний

 

 

Прикрепленный файл  PHT_6468.JPG   99,25К   5 скачиваний

 

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

 

Прикрепленный файл  5.jpg   9,01К   4 скачиваний

 

  Немого изменим предыдущую схему. Удалим из нее фоторезистор, средний вывод переменного резистора соединим и измерительным входом А0 через резистор 220 Ом.

 

Прикрепленный файл  6.JPG   57,68К   5 скачиваний

 

Прикрепленный файл  PHT_6469.JPG   86,02К   6 скачиваний

 

 Программа для Arduino  останется прежней. Теперь, вращая переменный резистор, мы можем изменять яркость светодиода. Вы ,наверное, заметили, что яркость регулируется ступенчато и с небольшой задержкой.  В этом «виновата» последняя строчка программы, а точнее число 300. В качестве домашнего задания можете изменить это число на другое и посмотреть, как изменится регулировка яркости светодиода. 
  Эта схема дает большой простор для фантазии. Вместо переменного резистора можно подключить датчик задымленности, датчик наличия газа, ультразвуковой датчик для определения расстояния, датчик тока, датчик влажности почвы и многое-многое другое…



#2 sqafarov

sqafarov

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 02 Май 2016 - 12:58

Очень полезная статья для меня оказалась )) Для новичка.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных