Записи с меткой «Processing»

Напишем простенькое приложение, которое будет показывать нам температуру в комнате. В качестве аппаратной платформы возьмем 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);
}

В конце увидим что-то похожее на это

Безымянный

Реклама