Arduino:Примеры/Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing= | =Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing= | ||
Строка 73: | Строка 73: | ||
==Код для Arduino== | ==Код для Arduino== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
#include <Wire.h> // Подключаем библиотеку Wire | #include <Wire.h> // Подключаем библиотеку Wire | ||
Строка 141: | Строка 141: | ||
* Вставьте из буфера и замените '''AgencyFB-Bold-200.vlw''' в коде(14 строчка) на название вашего шрифта; | * Вставьте из буфера и замените '''AgencyFB-Bold-200.vlw''' в коде(14 строчка) на название вашего шрифта; | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
import processing.serial.*; | import processing.serial.*; | ||
Serial port; | Serial port; | ||
Строка 184: | Строка 184: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 12:41, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Проверка/Оформление/Редактирование: Мякишев Е.А.
Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing
Данный пример демонстрирует чтение данных с I2C-датчика температуры TC74A0-5.0VAT,подключенного к Arduino Uno и отображение данных на гистограмме и программе на Processing.
Необходимые компоненты
- Плата Arduino Uno, 1 шт.;
- I2C-датчика температуры TC74A0-5.0VAT, 1 шт.;
- Сдвиговый регистр 74HC595, 1 шт.;
- Резистор 4,7 кОм, 2 шт.;
- Резистор на 220 Ом, 8 шт.;
- Красный светодиод, 1 шт.;
- Желтый светодиод, 3 шт.;
- Зеленый светодиод, 4 шт.;
- Макетная плата;
- Провода перемычки;
Монтажная схема
Соберите схему согласно монтажной схеме.
Контакты 1-7, 15 | Q0-Q7 | Выходные контакты |
Контакт 8 | GND | «Земля», Vss |
Контакт 9 | Q7’’ | Контакт для вывода последовательных данных |
Контакт 10 | MR | Контакт, позволяющий «очистить» значения на всех выходных контактах и выставить их на LOW (если подать на него LOW) |
Контакт 11 | SH_CP | Тактовый контакт для сдвигового регистра |
Контакт 12 | ST_CP | Тактовый контакт для регистра данных (контакт-защелка) |
Контакт 13 | OE | Контакт, разрешающий вывод данных (если подать на него LOW) |
Контакт 14 | DS | Контакт для ввода последовательных данных |
Контакт 16 | Vcc | Контакт для питания напряжением с положительным зарядом |
Код для Arduino
#include <Wire.h> // Подключаем библиотеку Wire
#define SER 8 // Контакт для ввода последовательных данных в сдвиговый регистр
#define LATCH 9 // Тактовый контакт для регистра данных (контакт-защелка)
// служит для одновременного вывода полученных последовательных данных
// на параллельные выходы сдвигового регистра
#define CLK 10 // Тактовый контакт для сдвигового регистра
// При подаче HIGH происходит запись одного бита в сдвиговый регистр
int vals[8] = {1,3,7,15,31,63,127,255}; // возможные значения для регистра сдвига
int temp_address = 72; // Адрес(1001000) I2C-датчика температуры TC74A0-5.0VAT в десятичной нотации
void setup()
{
Serial.begin(9600); // Инициализация передачи по последовательному порту на скорости 9600 бод
Wire.begin(); // Создание объекта Wire
// Установка выводов как выходов
pinMode(SER, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLK, OUTPUT);
}
void loop()
{
// Отправка запроса
Wire.beginTransmission(temp_address); // Выбор ведомого устройства отправкой его адреса
Wire.write(0); // Отправка 0, тем самым указывая что мы хотим прочитать данные из регистра температуры нашего датчика
Wire.endTransmission(); // Отправка стоп-бита, тем самым сообщаем об окончании записи на устройство
// Чтение температуры с датчика
Wire.requestFrom(temp_address, 1); // Запрос 1 байта по адресу устройства
while(Wire.available() == 0); // Ожидаем ответа
int c = Wire.read(); // Чтение данных в переменную
int graph = map(c, 24, 31, 0, 7); // Масштабирование значений для светодиодной гистограммы
graph = constrain(graph,0,7); // Накладываем ограничение на диапазон возможных значений
digitalWrite(LATCH, LOW); // устанавливаем LATCH в LOW, чтобы значения на параллельных выходах
// сдвигового регистра не изменялись во время ввода последовательных
// данных
shiftOut(SER, CLK, MSBFIRST, vals[graph]); // ввод последовательных данных в сдвиговый регистр
digitalWrite(LATCH, HIGH); // устанавливаем LATCH в HIGH для вывода значений
// на параллельные выводы сдвигового регистра
int f = round(c * 9.0 / 5.0 + 32.0); // Переводим Цельсии в Фаренгейты и округляем результат
// Передаем считанную температуру в последовательный порт
Serial.print(c);
Serial.print("C,");
Serial.print(f);
Serial.print("F.");
delay(500); // Задержка 500 мс.
}
Код для Processing
- Сохраните код проекта;
- Перейдите в Tools -> Create Font;
- Выберете понравившийся шрифт и укажите в поле Size размер шрифта равным примерно 200;
- При желании вы можете дать свое название шрифту в поле Filename;
- Скопируйте текст из поля Filename в буфер;
- Нажмите OK;
- Вставьте из буфера и замените AgencyFB-Bold-200.vlw в коде(14 строчка) на название вашего шрифта;
import processing.serial.*;
Serial port;
String temp_c = "";
String temp_f = "";
String data = "";
int index = 0;
PFont font;
void setup()
{
size(400,400);
port = new Serial(this, "COM5", 9600); // Измените "COM5" на номер порта к которому подключена ваша плата Arduino
port.bufferUntil('.');
font = loadFont("AgencyFB-Bold-200.vlw"); // Измените "AgencyFB-Bold-200.vlw" на тот шрифт который вы создали
textFont(font, 200);
}
void draw()
{
background(0,0,0);
fill(46, 209, 2);
text(temp_c, 70, 175);
fill(0, 102, 153);
text(temp_f, 70, 370);
}
void serialEvent (Serial port)
{
data = port.readStringUntil('.');
data = data.substring(0, data.length() - 1);
index = data.indexOf(","); // Ищем в строке позицию символа ','(запятая)
temp_c = data.substring(0, index); // Сохраняем градусы Цельсия
temp_f = data.substring(index+1, data.length()); // Сохраняем градусы Фаренгейта
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino