Напишем простенькое приложение, которое будет показывать нам температуру в комнате. В качестве аппаратной платформы возьмем Arduino и датчик влажности DHT11. Подключим библиотеку DHT и накидаем такой скетч
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
Serial.println(t);
}
Он шлет температуру на последовательный порт. Теперь надо бы как-нибудь ее считывать и отображать. Но что-то не хочется ставить тяжеловесное решение вроде Visual Studio, писать программу на каком-нибудь WPF или еще круче — поднять веб сервер и отображать данные на сайте в реальном времени с помощью каких-нибудь веб сокетов… К счастью, существует замечательная платформа Processing. Более того, IDE для Arduino безбожно передирался с этого самого процессинга. В двух словах, это еще один С-образный язык, который позволяет легко делать несложные графики и анимации. Но самая интересная для нас фишка — это возможность взаимодействия с COM-портом. Можно сделать так, что цвет фона будет меняться в зависимости от температуры, но так как комнатная температура у меня не подвержена большим скачкам, что я решил просто выводить показание температуры на черном фоне. А вот и сама программа
import processing.serial.*;
Serial port;
float temperature =0;
void setup()
{
size (200,200);
port = new Serial(this, "COM3", 9600);
port.bufferUntil('\n');
}
void draw ()
{
background(0, 0, 0);
textSize(32);
text(nf(temperature, 2, 1), 60, 100);
}
void serialEvent (Serial port)
{
temperature = float(port.readStringUntil('\n'));
println(temperature);
}
В конце увидим что-то похожее на это