Arduino & Processing

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Odpovědět
jan.westhuserlt
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputace: 0

Arduino & Processing

Příspěvek od jan.westhuserlt »

Já už si s tím prostě nevím rady.
Mám v současné době tento program:

Kód: Vybrat vše

int sensorPin1 = 0; //Definice analogového pinu, ke kterému připojím výstup snímače teploty 
//citlivost je 10mV na jeden °C 
//s celkovou škálou 500mV - umožňuje i záporné hodnoty. 
int sensorPin2 = 1; //Definice analogového pinu, ke kterému připojím výstup snímače teploty 
//citlivost je 10mV na jeden °C 
//s celkovou škálou 500mV - umožňuje i záporné hodnoty. 

//funkce uvedené zde se načtou po spuštění arduina a platí po celou dobu běhu programu. 

void setup() 
{ 
Serial.begin(9600); //nabindování sériové komunikace s počítačem. 
Serial.println("Vitejte v programu na mereni teploty."); // odeslani textu po seriove lince s odradkovanim 

} 

void loop() // tyto funkce se cyklicky opakují 
{ 
//čtení napěťových hodnot z teplotního senzoru 
int reading1 = analogRead(sensorPin1); 
int reading2 = analogRead(sensorPin2); 
// převod načtených hodnot na napětí (?), for 3.3v arduino use 3.3 
float voltage1 = reading1 * 5.0; 
voltage1 /= 1024.0; 

float voltage2 = reading2 * 5.0; 
voltage2 /= 1024.0; 
// zobrazení napěťových hodnot 
Serial.print("Senzor A:"); Serial.print(voltage1); Serial.println(" V"); 
Serial.print("Senzor B:"); Serial.print(voltage2); Serial.println(" V"); 

// zobrazení teploty v °C 
float temperatureC1 = (voltage1 - 0.5) * 100 ; //převod teploty (10 mv = 1 °C) s celkovám rozsahem 500mV !offset! 
//to degrees ((voltage - 500mV) times 100 ?) 
Serial.print("Teplota A:"); Serial.print(temperatureC1); Serial.println(" stupnu C"); 

float temperatureC2 = (voltage2 - 0.5) * 100 ; //převod teploty (10 mv = 1 °C) s celkovám rozsahem 500mV !offset! 
//to degrees ((voltage - 500mV) times 100 ?) 
Serial.print("Teplota B:"); Serial.print(temperatureC2); Serial.println(" stupnu C"); 


delay(5000); //doba zobrazení textu 5s 
} 
A tuto vizualizaci:

Kód: Vybrat vše

import processing.serial.*;
String temperature = "0";
PImage pozadi;
PFont font;
Serial port;
void setup() {
pozadi = loadImage("pozadi.jpg");
size(1024, 768, P2D);
rect(30, 20, 55, 55, 7);
font = loadFont("Algerian-30.vlw");
port = new Serial(this, "COM4", 9600);
fill(0);
smooth();
} 
void draw () {
image(pozadi, 0, 0, width, height);
int q = second(); 
int w = hour(); 
int e = minute(); 
int r = day(); 
int t = month(); 
int z = year(); 
text(":" , 78, 50);
text(":" , 115, 50);
text("." , 78, 80);
text("." , 115, 80);
fill(249, 250, 56);
if (port.available()>0) {
delay(100);
temperature = port.readString();
}

text(temperature, width/3, height/3);

String
s = String.valueOf(w);
text(s, 47, 50);
textFont(font, 25);
s = String.valueOf(e);
text(s, 85, 50);
s = String.valueOf(q);
text(s, 120, 50);
s = String.valueOf(r);
text(s, 47, 80);
s = String.valueOf(t);
text(s, 85, 80); 
s = String.valueOf(z);
text(s, 122, 80);
} 
Výsledek u mě vypadá takto:

http://img24.cz/images/16052531158694030888.jpg

Chtěl jsem docílit toho, abych měl, namísto textového zobrazení hodnot, graf, jako je tento:
https://boolscott.wordpress.com/2010/02 ... r-graph-2/ (nejde mi o doslovně stejný grafický řešení, ale "pouze" o tento princip: graf mění svou velikost podle měřených hodnot.)

A už nevím, proč mi o věčně nejde. Nevím, co dělám špatně, a mě už je z toho špatně.

Děkuji za radu, sám si už žádnou nedám.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino & Processing

Příspěvek od solárník »

Chápu to dobře, že se jedná o dvě Arduina spojená po serialu (důvod?)? Nebo ten processing je na něčem jiném? Chtělo by to lepší popis ;)
Jsem osobně spíš příznivcem generování grafů přímo na měřícím Arduinu, pokud je tedy někdo chce, a zobrazení přes ethernet v internetovém browseru. Je to rozhodně praktičtější a přístupné odkudkoli a na jakémkoli zařízení včetně mobilu. Není problém napsat nějaký zobrazovací a grafový skript pro Arduino. Jednodušší bargrafy jen za pomocí tabulek a složitější grafy (jako třeba na https://boolscott.files.wordpress.com/2 ... -graph.jpg) pomocí HTML5.

Není dobré něco stavět s tím, že se pokusím o nějaký graf. Chce to představit si přesně co chci a pak to prostě naprogramovat.
jan.westhuserlt
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputace: 0

Re: Arduino & Processing

Příspěvek od jan.westhuserlt »

No, je to jedno arduino, v něm zapojená dvě teplitní čidla :-)

Chci to mít tak, že se mi v Processingu zobrazí dva grafy, pro každé čidlo jeden. A jejich velikost se bude měnit podle změn snímané teploty.
jan.westhuserlt
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputace: 0

Re: Arduino & Processing

Příspěvek od jan.westhuserlt »

Tak, nakonec sem čerpal inspiraci odtud (konkrétně kapitola "Graphing Serial Data in Processing"):

http://www.dustynrobots.com/nyu/seeing- ... nsed-data/

Nedostatkem je, že tastovací zapojení potenciometru (levá noha uzemněna, prostřední na A0, pravá na 5V) funguje na jedničku, zatímco ta s TM36 (+Vs - 5V, Vout na A0, GND na GND http://www.analog.com/media/en/technica ... _36_37.pdf) taky zobrazí nějakou grafickou hodnotu, ale stále stejnou.

Tak už teda nevím, zda je problém *někde*, anebo, zda jde jen o nastavení škály, že ty teplotní změny jsou pro tento graf moc malé.

Nějaké tipy?

http://www.dustynrobots.com/nyu/seeing- ... nsed-data/

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek