Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2018-01-30 | 4669 |
5.00
из
|
Заказать работу |
|
|
#include <math.h>
#define FIRST_LED_PIN 2
#define LED_COUNT 10
#define TERMIST_B 4300
#define VIN 5.0
void setup()
{
pinMode(13, OUTPUT);
for (int i = 0; i < LED_COUNT; ++i)
pinMode(i + FIRST_LED_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
float voltage = analogRead(A0) * VIN / 1023.0;
float r1 = voltage / (VIN - voltage);
float temperature = 1./(1./(TERMIST_B)*log(r1)+1./(25. + 273.)) - 273;
for (int i = 0; i < LED_COUNT; i=i+5) {
boolean enableSegment = (temperature >= 0+i);
digitalWrite(i + FIRST_LED_PIN, enableSegment);
}
}
2.Добавьте в схему пьезопищалку и доработайте программу так, чтобы срабатывала звуковая сигнализация при достижении температуры, например, 25 градусов.
#include <math.h>
#define FIRST_LED_PIN 4
#define LED_COUNT 10
#define TERMIST_B 4300
#define VIN 5.0
#define BUZZER_PIN 3
void setup()
{
pinMode(13, OUTPUT);
for (int i = 0; i < LED_COUNT; ++i)
pinMode(i + FIRST_LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
float voltage = analogRead(A0) * VIN / 1023.0;
float r1 = voltage / (VIN - voltage);
float temperature = 1./(1./(TERMIST_B)*log(r1)+1./(25. + 273.)) - 273;
for (int i = 0; i < LED_COUNT; ++i) {
boolean enableSegment = (temperature >= 21+i);
digitalWrite(i + FIRST_LED_PIN, enableSegment);
if (temperature == 25)
tone(BUZZER_PIN, 3500, 100);
}
}
Эксперимент 16. Метеостанция
В этом эксперименте мы передаем данные об измерениях температуры на компьютер (например, для последующей обработки).
Схема
Код
#include <math.h>
int minute = 1;
#define TERMIST_B 4300
#define VIN 5.0
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("Minute\tTemperature");
}
void loop()
{
digitalWrite(13, HIGH);
float voltage = analogRead(A0) * VIN / 1024.0;
float r1 = voltage / (VIN - voltage);
float temperature = 1./(1./(TERMIST_B)*log(r1)+1./(25. + 273.)) - 273;
Serial.print(minute);
Serial.print("\t");
Serial.println(temperature);
delay(60000);
++minute;
}
Вопросы для проверки себя
Какие действия нужно предпринять, чтобы читать на компьютере данные с Arduino?
· чтобы обмениваться данными, нужно начать соединение, поэтому Serial.begin(baudrate)вызывается в setup()
· Serial.print(data) отправляет содержимое data. Если мы хотим отправить текст, можно просто заключить его в пару двойных кавычек: "". Кириллица, скорее всего, будет отображаться некорректно.
|
· Serial.println(data) делает то же самое, только добавляет в конце невидимый символ новой строки.
О каких ограничениях не следует забывать при работе с последовательным портом?
Вам не удастся использовать цифровые порты 0 и 1 одновременно с передачей данных по последовательному порту, потому что по ним также идет передача данных, как и через USB-порт платы.
3.Как избежать ошибки в передаче данных, содержащих обратный слэш (\)?
Если вы хотите использовать обратный слеш, его нужно экранировать вторым таким же: \\.
Задания для самостоятельного решения
1.Перед таблицей данных о температуре добавьте заголовок (например, "Meteostation").
#include <math.h>
int minute = 1;
#define TERMIST_B 4300
#define VIN 5.0
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("Minute\tTemperature");
}
void loop()
{
digitalWrite(13, HIGH);
float voltage = analogRead(A0) * VIN / 1024.0;
float r1 = voltage / (VIN - voltage);
float temperature = 1./(1./(TERMIST_B)*log(r1)+1./(25. + 273.)) - 273;
Serial.print("Meteostation");
Serial.print(minute);
Serial.print("\t");
Serial.println(temperature);
delay(60000);
++minute;
}
Добавьте столбец, содержащий количество секунд, прошедших с момента запуска микроконтроллера. Можно уменьшить интервал передачи данных.
Эксперимент 17. Пантограф
В этом эксперименте мы вращаем сервопривод на угол, задаваемый потенциометром.
Схема
Код
#include <Servo.h>
#define POT_MAX_ANGLE 270.0
Servo myServo;
void setup()
{
pinMode(13, OUTPUT);
myServo.attach(9);
}
void loop()
{
digitalWrite(13, HIGH);
int val = analogRead(A0);
int angle = int(val / 1024.0 * POT_MAX_ANGLE);
angle = constrain(angle, 0, 180);
myServo.write(angle);
}
Вопросы для проверки себя
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!