Go Down

Topic: Temperatur mit DS18B20 messen und mit 433 MHz übertragen (Read 431 times) previous topic - next topic

Kally

Hallo zusammen,
ich hab ein kleines Problem.

Ich möchte die Temperatur mit einem DS18B20 messen und via 433 MHz senden.
Das Senden mit dem Demosketch aus VirtuelWire funktioniert ohne Probleme.

Code: [Select]

// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>
#include <OneWire.h>

void setup()
{
    Serial.begin(9600);   // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
//    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000); // Bits per sec
}

void loop()
{
    const char *msg = "hello";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
}



Wenn ich nun OneWire für den DS18B20 einbinde bekomme ich folgende Fehlermeldung:

Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"

F:\...\libraries\OneWire-master\OneWire.cpp: In static member function 'static uint16_t OneWire::crc16(const uint8_t*, uint16_t, uint16_t)':

F:\...\libraries\OneWire-master\OneWire.cpp:554:42: error: '_crc16_update' was not declared in this scope

         crc = _crc16_update(crc, input);

                                          ^

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.


Kann mir da jemand helfen?

Gruß
Kalliy

postmaster-ino

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Was sagt Dir Das?
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Kally

Das sagt mir nur, dass die Fehlermeldung länger und für mich unübersichtlicher wird.
Sie hat dann immerhin 9452 Bytes.

Kally

HotSystems

Besser ist, wenn du auch die "DallasTemperature.h" mit einbindest und verwendest.
Das macht es alles einfacher und funktioniert auch, auch mit 433 MHz-Versand.

Und um dir helfen zu können, wäre es auch besser du postest den kompletten, fehlerhaften Sketch und nicht einen der funktioniert.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Doc_Arduino

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Was sagt Dir Das?
Das erscheint immer. Mach das mal bei dir und schau was du davon hast.
Mehr wie "ALLE" Compilerwarnungen muss man nicht einschalten. Das sollte voreingestellt sein, was es leider nicht ist.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Kally

Hallo Dieter,

das ist der ganze Sketch.
Ich hab alle Ergänzungen aus dem Sketch entfernt um die Fehlerquelle ausfindig zu machen. Und da ist es halt so, dass der Fehler bereits nach dem Einbinden von OneWire auftritt.

Aber hier noch mal dass, was ich testen wollte.

Code: [Select]


// library
#include <VirtualWire.h>
#include <OneWire.h>
#include <DallasTemperature.h>

byte count = 0;
char logString[20];

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);


void setup()
{
  Serial.begin(9600);

  // virtual wire
  vw_set_tx_pin(12); // pin
  vw_setup(4000); // bps

  // Start up the library
  sensors.begin();

}

void loop()
{
  count++;
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println(sensors.getTempCByIndex(0)); 
 
  sprintf(logString,"Sendung %3d",count);
   
  sendString(logString, true);
  delay(100);
}

void sendString(String message, bool wait)
{
  byte messageLength = message.length() + 1;

  // convert string to char array
  char charBuffer[messageLength];
  message.toCharArray(charBuffer, messageLength);

  vw_send((uint8_t *)charBuffer, messageLength);

  if (wait) vw_wait_tx();

  Serial.println("sent: " + message);
}



Im Anhang ist der Fehlerbericht.

Hilft euch das weiter? Mir leider nicht.

Gruß

Kally

Kally

Hallo,
Problem gelöst.
Ich hab die VirtualWire von hier (http://www.airspayce.com/mikem/arduino/VirtualWire/VirtualWire-1.27.zip) heruntergeladen und installiert.
Jetzt haut es hin.

Vielen Dank und Gruß

Kally

Go Up