Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Karya
Založen: 02. 02. 2015 Příspěvky: 2
|
Zaslal: 2. únor 2015, 14:06:59 Předmět: Spracovanie cidiel DS18B20 z Arduina do Visual basicu 6 |
|
|
Dobry den
Kdo by mi vedel poradit ako spracovat data z Arduina. Vo VB mam 2x Label a do toho by som potreboval dostat kazde cidlo zvlast.Pripojene mam 2xDS18B20.
Program pre Arduino:
kód: |
// This Arduino sketch reads DS18B20 "1-Wire" digital
// temperature sensors.
// Copyright (c) 2010 Mark McComb, hacktronics LLC
// License: http://www.opensource.org/licenses/mit-license.php (Go crazy)
// Tutorial:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 6
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
DeviceAddress devices[] = {{0x28, 0xFF, 0x43, 0x5F, 0x52, 0x14, 0x00, 0x4E}, {0x28, 0xFF, 0x1F, 0x13, 0x53, 0x14, 0x00, 0xA3}};
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?);
}
void printTemperature(int deviceIndex)
{
float tempC = sensors.getTempC(devices[deviceIndex]);
if (tempC == -127.00)
{
Serial.print("error");
}
else
{
Serial.print(deviceIndex);
Serial.print(":");
Serial.print(tempC);
Serial.print("\r\n");
}
}
void loop(void)
{
delay(1000);
Serial.print("\n\r");
printTemperature(0);
printTemperature(1);
//printTemperature(2);
//Serial.print("\n\r\n\r");
} |
Visual Basic 6
kód: |
Dim Retezec, Retezec2 As String
Dim Minule As String
Private Sub MSComm1_OnComm()
Dim StrData As Variant 'define variable type as it is variant
StrData = MSComm1.Input
Buffer.Text = Buffer.Text + StrData
If StrData <> ":" Then
Retezec = Retezec + StrData
End If
If StrData = ":" Then
'Text3.Text = Retezec
If Minule = "0" Then
Label1.Caption = Retezec
End If
If Minule = "1" Then
Label2.Caption = Retezec
End If
Retezec = ""
End If
Minule = StrData
If StrData <> ":" Then
Retezec2 = Retezec2 + StrData
Else
'Text4.Text = Retezec2
Retezec2 = ""
End If
End Sub
Private Sub Form_Load()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 4
MSComm1.InputLen = 1
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
End Sub
|
Vystup z arduina:
0:23.72
1:23.65
Nedari sa mi spravne spracovat prijaty retazec z arduina.Vedel by mi niekdo poradit ako to spravne upravit?Dakujem za kazdu pomoc |
|
Návrat nahoru |
|
|
Karya
Založen: 02. 02. 2015 Příspěvky: 2
|
Zaslal: 3. únor 2015, 16:55:16 Předmět: |
|
|
Dobry den
Nenasiel byx sa nik kdo by mi poradil.Dakujem Karol |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 3. únor 2015, 17:21:24 Předmět: |
|
|
Na ten otevřený sériový port se z VB dostaneš a nenačítá ti to žádné znaky? Nebo načítá, ale nevyznáš se v tom? Nevím teď z hlavy, co v tom sketchi udělá print(float) do toho sériového portu, předpokládám, že tam nacpe přímo bajty toho datového typu a ne řetězec. Takže v tom VB musíš ty bajty taky přijmout a zpracovat, abys dostal to původní číslo. Anebo si ten float převést ještě ve sketchi na char* a poslat do sériového portu až řetězec s vypsaným číslem. Úplně nejlepší by pak bylo získat tu teplotu (nebo si ji vynásobit) jako int, ať nemusíš řešit převody datového typu nebo oddělovač desetin v řetězci. |
|
Návrat nahoru |
|
|
|
|
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
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna