Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Processing - graf

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Software
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: pá únor 13 2015, 18:38    Předmět: Processing - graf Citovat

Ahoj, potřeboval bych nějaké nápady, jak udělat sloupcový graf, co se bude měnit podle informací zaslaných z Arduina po sériovém portu.
Má s tímto někdo nějaké zkušenosti?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
termit256



Založen: Dec 06, 2007
Příspěvky: 10335

PříspěvekZaslal: pá únor 13 2015, 18:46    Předmět: Citovat

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: pá únor 13 2015, 19:13    Předmět: Citovat

Ten Processing je ale VIZUALIZAČNÍ software, takže mi jde o to naprogramovat skript, co mi umožní na svém monitoru vidět měnící se graf.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Honza_dy



Založen: Aug 20, 2004
Příspěvky: 2172
Bydliště: Brno-venkov

PříspěvekZaslal: pá únor 13 2015, 19:47    Předmět: Citovat

http://www.root.cz/clanky/arduino-merime-a-zobrazujeme-fyzikalni-veliciny/#ic=serial-box&icc=text-title
a pokračuj v původním vlákně, jinak dostaneš od admina přes porty.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: pá únor 13 2015, 20:14    Předmět: Citovat

To bylo téma o Arduinu, teď řeším Processing.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: ne únor 15 2015, 14:36    Předmět: Citovat

Zdravím, mám tuto aplikaci pro processing:

import processing.serial.*;
String temperature = "";
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();

if(temperature.length() > 0)
{
int div_n = temperature.indexOf( '|' );
if( div_n > 0 )
{

float temp1 = float( temperature.substring( 0, div_n ));
float temp2 = float( temperature.substring( div_n+1 ));

text(temp1 +""+ temp2, 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);
}}}
}

A pro Arduino:

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 * 3.3;
voltage1 /= 1024.0;

float voltage2 = reading2 * 3.3;
voltage2 /= 1024.0;
// zobrazení napěťových hodnot
Serial.println(voltage1+'|'+voltage2);

delay(5000); //doba zobrazení textu 5s
}


Mělo by to bejt tak, že mi arduino měří analogově teplotu, a ta se mi zobrazí na vizualizaci v Processingu. Okno processingu se zobrazí, ale žádné údaje tam nejsou.. co s tím?

Děkuji.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Honza_dy



Založen: Aug 20, 2004
Příspěvky: 2172
Bydliště: Brno-venkov

PříspěvekZaslal: ne únor 15 2015, 16:58    Předmět: Citovat

Proč do pc posíláš
kód:
Serial.println("Vitejte v programu na mereni teploty."); // odeslani textu po seriove lince s odradkovanim
?
Asi bude potřeba vytvořit nějaký přenosový protokol...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: ne únor 15 2015, 17:16    Předmět: Citovat

Ikdyž to odstraním, tak mi to k ničemu nepomůže.

A k čemu přenosovej protokol? Když jsem měl toto:

kód:
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 * 3.3;
voltage1 /= 1024.0;

float voltage2 = reading2 * 3.3;
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
}


kód:

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);
}


Tak se mi ta textová informace v okně normálně zobrazila. Nyní jsem chtěl udělat grafické řešení, jako je zde: https://boolscott.wordpress.com/2010/02/04/arduino-processing-analogue-bar-graph-2/

a výsledkem je prázdné Processing okno, kde se mi zobrazí jen soubor pozadi.jpg a žádný graf.

A už si fakt nevím rady.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: ne únor 22 2015, 14:18    Předmět: Citovat

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

kód:
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:
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/04/arduino-processing-analogue-bar-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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: so únor 28 2015, 13:51    Předmět: Citovat

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

http://www.dustynrobots.com/nyu/seeing-sensors-how-to-visualize-and-save-arduino-sensed-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/technical-documentation/data-sheets/TMP35_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-sensors-how-to-visualize-and-save-arduino-sensed-data/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Software Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.17 sekund