Kezdőoldal » Számítástechnika » Programozás » Arduino hoz kérhetek egy kis...

Arduino hoz kérhetek egy kis segítséget?

Figyelt kérdés

3db DS18B20 sensort szeretnék bus rendszeren használni. Bármelyik két érzékelő müködik együtt. De három érzékelő már nem, mind 0 celsiust mér. Hol a hiba?


példa a kapcsolásra

[link]


#include <OneWire.h>

#include <DallasTemperature.h>

OneWire oneWire(10);

DallasTemperature sensors(&oneWire);


void setup()

{

Serial.begin(9600);

sensors.begin();

}


void loop()


{

{

sensors.requestTemperatures();


float currentTemp0;

currentTemp0 = sensors.getTempCByIndex(0);

Serial.print(currentTemp0);


float currentTemp1;

currentTemp1 = sensors.getTempCByIndex(1);

Serial.print(currentTemp1);


float currentTemp2;

currentTemp2 = sensors.getTempCByIndex(2);

Serial.println(currentTemp3);


}

delay (10000);

}



#Arduino #DS18B20
2016. nov. 1. 20:23
1 2
 1/14 anonim ***** válasza:

"float currentTemp2;

currentTemp2 = sensors.getTempCByIndex(2);

Serial.println(currentTemp3); "

Én itt látok valami furcsaságot.

2016. nov. 1. 20:29
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:
A currentTemp3 csak elírás? Egyébként próbálkozhatsz a 3 külön mérés közötti delay-jel is.
2016. nov. 1. 20:36
Hasznos számodra ez a válasz?
 3/14 A kérdező kommentje:
Csak elírás. Igy feltölteni se engedi. Probáltam az indexeket változtatni és ott felejtettem.
2016. nov. 1. 20:52
 4/14 A kérdező kommentje:

Mindegyik közt 3 másodperc szünettel semmi változás.


#include <OneWire.h>

#include <DallasTemperature.h>

OneWire oneWire(10);

DallasTemperature sensors(&oneWire);


void setup()

{

Serial.begin(9600);

sensors.begin();

}


void loop()


{

{

sensors.requestTemperatures();


float currentTemp0;

currentTemp0 = sensors.getTempCByIndex(0);

Serial.print(currentTemp0);

delay (3000);


float currentTemp1;

currentTemp1 = sensors.getTempCByIndex(1);

Serial.print(currentTemp1);

delay (3000);


float currentTemp2;

currentTemp2 = sensors.getTempCByIndex(2);

Serial.println(currentTemp2);

delay (3000);


}

delay (10000);

}

2016. nov. 1. 20:56
 5/14 anonim ***** válasza:
Melyik arduinot használod?
2016. nov. 1. 21:11
Hasznos számodra ez a válasz?
 6/14 A kérdező kommentje:

Arduino UNO R3

Van két változat is mind a kettő ugyan ezt csinálja. Az a furcsa hogy kettövel müködik de hárommal nem.

2016. nov. 1. 21:32
 7/14 anonim ***** válasza:

Találtam egy megoldást, kicsit más függvényeket használ több szenzorhoz, és az address-eket is előkotorja valahogy:


[link]

2016. nov. 1. 22:06
Hasznos számodra ez a válasz?
 8/14 A kérdező kommentje:

#include <OneWire.h>

#include <DallasTemperature.h>


/*-----( Declare Constants )-----*/

#define ONE_WIRE_BUS 2 /*-(Connect to Pin 2 )-*/


/*-----( Declare objects )-----*/

/* Set up a oneWire instance to communicate with any OneWire device*/

OneWire ourWire(ONE_WIRE_BUS);


/* Tell Dallas Temperature Library to use oneWire Library */

DallasTemperature sensors(&ourWire);


/*-----( Declare Variables )-----*/



void setup() /*----( SETUP: RUNS ONCE )----*/

{

/*-(start serial port to see results )-*/

delay(1000);

Serial.begin(9600);

Serial.println("YourDuino.com: Temperature Sensor Test Program");

Serial.println("Temperature Sensor: DS18B20");

delay(1000);


/*-( Start up the DallasTemperature library )-*/

sensors.begin();

}/*--(end setup )---*/



void loop() /*----( LOOP: RUNS CONSTANTLY )----*/

{

Serial.println();

Serial.print("Requesting temperature...");

sensors.requestTemperatures(); // Send the command to get temperatures

Serial.println("DONE");


Serial.print("Device 1 (index 0) = ");

Serial.print(sensors.getTempCByIndex(0));

Serial.println(" Degrees C");

Serial.print("Device 1 (index 0) = ");

Serial.print(sensors.getTempFByIndex(0));

Serial.println(" Degrees F");

Serial.print("Device 1 (index 0) = ");

Serial.print(sensors.getTempFByIndex(0));

Serial.println(" Degrees G");

delay(5000);


}


Ezzel is ugyan az kettövel müködik hárommal nem csak itt 0 32 32 hömérsékletet ad vissza.

2016. nov. 1. 22:25
 9/14 anonim ***** válasza:

Az ez alatti kódra értettem ahol address alapján kérdezi le:

sensors.getTempC(deviceAddress);


a Multiple DS18B20 Example-től

2016. nov. 1. 22:34
Hasznos számodra ez a válasz?
 10/14 A kérdező kommentje:

#include <OneWire.h>


//Get DallasTemperature Library here: [link]

#include <DallasTemperature.h>


/*-----( Declare Constants and Pin Numbers )-----*/

#define ONE_WIRE_BUS_PIN 10


/*-----( Declare objects )-----*/

// Setup a oneWire instance to communicate with any OneWire devices

OneWire oneWire(ONE_WIRE_BUS_PIN);


// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);


/*-----( Declare Variables )-----*/

// Assign the addresses of your 1-Wire temp sensors.

// See the tutorial on how to obtain these addresses:

// [link]


DeviceAddress Probe01 = { 0x28, 0x8A, 0xB1, 0x40, 0x04, 0x00, 0x00, 0xC7 };

DeviceAddress Probe02 = { 0x28, 0xCC, 0x92, 0x40, 0x04, 0x00, 0x00, 0xB6 };

DeviceAddress Probe03 = { 0x28, 0x4D, 0x8D, 0x40, 0x04, 0x00, 0x00, 0x78 };



void setup() /****** SETUP: RUNS ONCE ******/

{

// start serial port to show results

Serial.begin(9600);

Serial.print("Initializing Temperature Control Library Version ");

Serial.println(DALLASTEMPLIBVERSION);


// Initialize the Temperature measurement library

sensors.begin();


// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)

sensors.setResolution(Probe01, 10);

sensors.setResolution(Probe02, 10);

sensors.setResolution(Probe03, 10);


}//--(end setup )---


void loop() /****** LOOP: RUNS CONSTANTLY ******/

{

delay(1000);

Serial.println();

Serial.print("Number of Devices found on bus = ");

Serial.println(sensors.getDeviceCount());

Serial.print("Getting temperatures... ");

Serial.println();


// Command all devices on bus to read temperature

sensors.requestTemperatures();


Serial.print("Probe 01 temperature is: ");

printTemperature(Probe01);

Serial.println();


Serial.print("Probe 02 temperature is: ");

printTemperature(Probe02);

Serial.println();


Serial.print("Probe 03 temperature is: ");

printTemperature(Probe03);

Serial.println();



}//--(end main loop )---


/*-----( Declare User-written Functions )-----*/

void printTemperature(DeviceAddress deviceAddress)

{


float tempC = sensors.getTempC(deviceAddress);


if (tempC == -127.00)

{

Serial.print("Error getting temperature ");

}

else

{

Serial.print("C: ");

Serial.print(tempC);

Serial.print(" F: ");

Serial.print(DallasTemperature::toFahrenheit(tempC));

}

}


három érzékelővel ez is mind nulla. Kettővel pedig "Error getting temperature"


Jól értelmezem hogy it egyenként meg kell határozni az érzékelők cimeit "DeviceAddress"? pl ezzel a programmal [link]

2016. nov. 1. 22:38
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!