Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Error unknown typ name 'DS18B20'
Forum Updated to NodeBB v4.3 + New Features

Error unknown typ name 'DS18B20'

Scheduled Pinned Locked Moved Solved Mobile and Embedded
93 Posts 4 Posters 31.7k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mrjjM mrjj

    Hi
    Seems to come from
    https://www.arduino.cc/reference/en/language/functions/interrupts/nointerrupts/

    So I think we are down the wrong path using this with a pi board as it seems tied to
    Arduino.

    A Offline
    A Offline
    AlexKrammer
    wrote on last edited by
    #35

    @mrjj
    and what will be the right way. is it possible to use qt for this?
    is it possible to create a own library to convert the input of the sensor in a temperatur?

    mrjjM 1 Reply Last reply
    0
    • A AlexKrammer

      @mrjj
      and what will be the right way. is it possible to use qt for this?
      is it possible to create a own library to convert the input of the sensor in a temperatur?

      mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #36

      @AlexKrammer
      Hi
      But do you have such sensor ?
      and hook it up to the board like they do here ?
      https://www.circuitbasics.com/raspberry-pi-ds18b20-temperature-sensor-tutorial/

      A 1 Reply Last reply
      0
      • mrjjM mrjj

        @AlexKrammer
        Hi
        But do you have such sensor ?
        and hook it up to the board like they do here ?
        https://www.circuitbasics.com/raspberry-pi-ds18b20-temperature-sensor-tutorial/

        A Offline
        A Offline
        AlexKrammer
        wrote on last edited by
        #37

        @mrjj yea for sure. but i want to use qt with c++. do create this application

        mrjjM 1 Reply Last reply
        0
        • A AlexKrammer

          @mrjj yea for sure. but i want to use qt with c++. do create this application

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #38

          @AlexKrammer
          I think you need a c++ lib then like
          https://github.com/TeraHz/DS18B20
          to interface with the hardware.

          A 2 Replies Last reply
          0
          • mrjjM mrjj

            @AlexKrammer
            I think you need a c++ lib then like
            https://github.com/TeraHz/DS18B20
            to interface with the hardware.

            A Offline
            A Offline
            AlexKrammer
            wrote on last edited by AlexKrammer
            #39

            @mrjj to interface with the hardware ill use wiringpi. thats work good. i can turn on und off leds and i can read pins.
            how does this lib work?

            1 Reply Last reply
            0
            • mrjjM mrjj

              @AlexKrammer
              I think you need a c++ lib then like
              https://github.com/TeraHz/DS18B20
              to interface with the hardware.

              A Offline
              A Offline
              AlexKrammer
              wrote on last edited by
              #40

              @mrjj ou i just saw. it looks like that one right?
              "are you using the DS18B20::DS18B20(const char* address) version"

              mrjjM 1 Reply Last reply
              0
              • A AlexKrammer

                @mrjj ou i just saw. it looks like that one right?
                "are you using the DS18B20::DS18B20(const char* address) version"

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #41

                @AlexKrammer
                Heh yes but on this is says it should work with PI
                and it has more includes.
                So maybe this will actually work once we find out what that address should be :)

                A 1 Reply Last reply
                0
                • mrjjM mrjj

                  @AlexKrammer
                  Heh yes but on this is says it should work with PI
                  and it has more includes.
                  So maybe this will actually work once we find out what that address should be :)

                  A Offline
                  A Offline
                  AlexKrammer
                  wrote on last edited by
                  #42

                  @mrjj
                  Now i tried to evaluate the temperatur with the c++ library.
                  The code looks good. There is no error, but if i run the projekt. its going to do this step

                  char w1_address [ 16 ];
                  DS18B20 w1Device1 (w1_address);
                  tempNow = w1Device1. getTemp ();
                  

                  its going to crash. So i think there is a mistake in the adress.
                  i put in the raspberry pin.

                  mrjjM 1 Reply Last reply
                  0
                  • A AlexKrammer

                    @mrjj
                    Now i tried to evaluate the temperatur with the c++ library.
                    The code looks good. There is no error, but if i run the projekt. its going to do this step

                    char w1_address [ 16 ];
                    DS18B20 w1Device1 (w1_address);
                    tempNow = w1Device1. getTemp ();
                    

                    its going to crash. So i think there is a mistake in the adress.
                    i put in the raspberry pin.

                    mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #43

                    @AlexKrammer
                    im not sure a pin is right there.
                    Try read some the many tuts and see what they use for adress.

                    A 1 Reply Last reply
                    0
                    • mrjjM mrjj

                      @AlexKrammer
                      im not sure a pin is right there.
                      Try read some the many tuts and see what they use for adress.

                      A Offline
                      A Offline
                      AlexKrammer
                      wrote on last edited by AlexKrammer
                      #44

                      @mrjj
                      Now it works.
                      i reached the slave-address each sensor, made a code like this

                      char w1_address[16];
                      const char* adr1  = "10-000803673bfb";
                      DS18B20 w1Device1 (adr1);
                      actualTemp1 = w1Device1.getTemp();
                      

                      And it's working.
                      But unfortunately if i add a new sensor. i have to find out his address and add it to the code. its not only plug and play^^

                      But now a basic c++ problem.
                      I created a class:
                      checktemperature.h

                      #ifndef CHECKTEMPERATURE_H
                      #define CHECKTEMPERATURE_H
                      
                      #include <settemperature.h>
                      #include <readtemperature.h>
                      #include <wiringPi.h>
                      
                      class CheckTemperature
                      {
                      private:
                          SetTemperature S;
                          ReadTemperature R;
                      public:
                          void CheckTemp();
                          float TempEin;
                          float TempAus;
                      };
                      
                      #endif // CHECKTEMPERATURE_H
                      
                      

                      checktemperature.cpp

                      #include "checktemperature.h"
                      
                      void CheckTemperature::CheckTemp()
                      {
                          TempEin = S.getHystTemperature();
                          TempAus = S.getHystTemperature();
                      
                          if (R.actualTemp1 <= TempEin) digitalWrite(31, LOW);
                          else if (R.actualTemp1 >= TempAus) digitalWrite(31, HIGH);
                      
                          if (R.actualTemp2 <= TempEin) digitalWrite(26, LOW);
                          else if (R.actualTemp2 >= TempAus) digitalWrite(26, HIGH);
                      
                          if (R.actualTemp3 <= TempEin) digitalWrite(27, LOW);
                          else if (R.actualTemp3 >= TempAus) digitalWrite(27, HIGH);
                      
                          if (R.actualTemp4 <= TempEin) digitalWrite(28, LOW);
                          else if (R.actualTemp4 >= TempAus) digitalWrite(28, HIGH);
                      
                          if (R.actualTemp5 <= TempEin) digitalWrite(29, LOW);
                          else if (R.actualTemp5 >= TempAus) digitalWrite(29, HIGH);
                      }
                      
                      

                      i call that funktion every 500ms in loop.
                      But the values of R.actualTemp and S.getHystTemperature the value does not adjust, so they still at the moment when i start the program.
                      Do you know whats wrong, cause i call that funktion every 500ms and at the beginning "TempEin= ..." and S.getHystTemperature(); is already changing^

                      mrjjM 1 Reply Last reply
                      0
                      • A AlexKrammer

                        @mrjj
                        Now it works.
                        i reached the slave-address each sensor, made a code like this

                        char w1_address[16];
                        const char* adr1  = "10-000803673bfb";
                        DS18B20 w1Device1 (adr1);
                        actualTemp1 = w1Device1.getTemp();
                        

                        And it's working.
                        But unfortunately if i add a new sensor. i have to find out his address and add it to the code. its not only plug and play^^

                        But now a basic c++ problem.
                        I created a class:
                        checktemperature.h

                        #ifndef CHECKTEMPERATURE_H
                        #define CHECKTEMPERATURE_H
                        
                        #include <settemperature.h>
                        #include <readtemperature.h>
                        #include <wiringPi.h>
                        
                        class CheckTemperature
                        {
                        private:
                            SetTemperature S;
                            ReadTemperature R;
                        public:
                            void CheckTemp();
                            float TempEin;
                            float TempAus;
                        };
                        
                        #endif // CHECKTEMPERATURE_H
                        
                        

                        checktemperature.cpp

                        #include "checktemperature.h"
                        
                        void CheckTemperature::CheckTemp()
                        {
                            TempEin = S.getHystTemperature();
                            TempAus = S.getHystTemperature();
                        
                            if (R.actualTemp1 <= TempEin) digitalWrite(31, LOW);
                            else if (R.actualTemp1 >= TempAus) digitalWrite(31, HIGH);
                        
                            if (R.actualTemp2 <= TempEin) digitalWrite(26, LOW);
                            else if (R.actualTemp2 >= TempAus) digitalWrite(26, HIGH);
                        
                            if (R.actualTemp3 <= TempEin) digitalWrite(27, LOW);
                            else if (R.actualTemp3 >= TempAus) digitalWrite(27, HIGH);
                        
                            if (R.actualTemp4 <= TempEin) digitalWrite(28, LOW);
                            else if (R.actualTemp4 >= TempAus) digitalWrite(28, HIGH);
                        
                            if (R.actualTemp5 <= TempEin) digitalWrite(29, LOW);
                            else if (R.actualTemp5 >= TempAus) digitalWrite(29, HIGH);
                        }
                        
                        

                        i call that funktion every 500ms in loop.
                        But the values of R.actualTemp and S.getHystTemperature the value does not adjust, so they still at the moment when i start the program.
                        Do you know whats wrong, cause i call that funktion every 500ms and at the beginning "TempEin= ..." and S.getHystTemperature(); is already changing^

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #45

                        @AlexKrammer
                        Hi
                        So it works fine the first time you run ?
                        Have you checked with debugger what happens when you read and set
                        R.actualTemp1 ?

                        Its hard to guess from this code.

                        A 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          @AlexKrammer
                          Hi
                          So it works fine the first time you run ?
                          Have you checked with debugger what happens when you read and set
                          R.actualTemp1 ?

                          Its hard to guess from this code.

                          A Offline
                          A Offline
                          AlexKrammer
                          wrote on last edited by AlexKrammer
                          #46

                          @mrjj
                          yes it works. its still working. Thats a other problem.
                          So R.actualTemp is the temperature from the sensor.
                          if i show the R.actualTemp is changing his value.
                          So if i show S.getHystTemperature(); its changing the value too.

                          But if i show e.g. TempEin its not changing the Value its always the value as i run the program.

                          A other example. If i put R,actualTemp into a variable in this class and im going to show the variable. its dont change the value too. If i show R.actualTemp its changing.

                          Are you understanding my problem?

                          mrjjM 1 Reply Last reply
                          0
                          • A AlexKrammer

                            @mrjj
                            yes it works. its still working. Thats a other problem.
                            So R.actualTemp is the temperature from the sensor.
                            if i show the R.actualTemp is changing his value.
                            So if i show S.getHystTemperature(); its changing the value too.

                            But if i show e.g. TempEin its not changing the Value its always the value as i run the program.

                            A other example. If i put R,actualTemp into a variable in this class and im going to show the variable. its dont change the value too. If i show R.actualTemp its changing.

                            Are you understanding my problem?

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #47

                            @AlexKrammer
                            Hi
                            Your naming confuses me a bit. :)
                            So S.getHystTemperature(); changes but
                            TempEin = S.getHystTemperature(); dont ?

                            A 1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @AlexKrammer
                              Hi
                              Your naming confuses me a bit. :)
                              So S.getHystTemperature(); changes but
                              TempEin = S.getHystTemperature(); dont ?

                              A Offline
                              A Offline
                              AlexKrammer
                              wrote on last edited by
                              #48

                              @mrjj
                              Ohhh im sry TempEin means TempOn, TempAus means TempOff:)
                              I like to show you my completely code but i dont know how:P

                              yes if i try to: qDebug() << S.getHystTemperature(); in mainwindow.cpp
                              the value is changing in relation when im moving the horizontal slider.
                              The same with R.actualTemp.
                              But if i try to: qDebug() << S.getHystTemperature(); in checktemperature.cpp
                              its taking the value of the veriable when i run the program. e.g. i declared in setTemperature.h "float HystTemperature;" So its got value 0;
                              So qDebug() just show 0.

                              In conclusion it can be said that in class CheckTemperature the variable and values do not adapt to the current values. They stuck on the values when the program start to run.

                              mrjjM 1 Reply Last reply
                              0
                              • A AlexKrammer

                                @mrjj
                                Ohhh im sry TempEin means TempOn, TempAus means TempOff:)
                                I like to show you my completely code but i dont know how:P

                                yes if i try to: qDebug() << S.getHystTemperature(); in mainwindow.cpp
                                the value is changing in relation when im moving the horizontal slider.
                                The same with R.actualTemp.
                                But if i try to: qDebug() << S.getHystTemperature(); in checktemperature.cpp
                                its taking the value of the veriable when i run the program. e.g. i declared in setTemperature.h "float HystTemperature;" So its got value 0;
                                So qDebug() just show 0.

                                In conclusion it can be said that in class CheckTemperature the variable and values do not adapt to the current values. They stuck on the values when the program start to run.

                                mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by
                                #49

                                @AlexKrammer
                                And you only have one instance of the CheckTemperature class?
                                since S.getHystTemperature(); in mainwindow.cpp Works
                                it should also in CheckTemperature so i wonder if you have 2 of them or something like that ?

                                A 1 Reply Last reply
                                0
                                • mrjjM mrjj

                                  @AlexKrammer
                                  And you only have one instance of the CheckTemperature class?
                                  since S.getHystTemperature(); in mainwindow.cpp Works
                                  it should also in CheckTemperature so i wonder if you have 2 of them or something like that ?

                                  A Offline
                                  A Offline
                                  AlexKrammer
                                  wrote on last edited by AlexKrammer
                                  #50

                                  @mrjj
                                  no i only have one instance.
                                  i only have one checktemp in class CheckTemperature, one gethysttemperature() in class SetTemperature, and one actualTemp in class ReadTemperature.
                                  thats why im wondering too.
                                  cause im calling checktemp() every 500ms in loop mainwindow.

                                  Is there any possibility that i can't call object in a method of a single class. But there is no sense

                                  mrjjM 1 Reply Last reply
                                  0
                                  • A AlexKrammer

                                    @mrjj
                                    no i only have one instance.
                                    i only have one checktemp in class CheckTemperature, one gethysttemperature() in class SetTemperature, and one actualTemp in class ReadTemperature.
                                    thats why im wondering too.
                                    cause im calling checktemp() every 500ms in loop mainwindow.

                                    Is there any possibility that i can't call object in a method of a single class. But there is no sense

                                    mrjjM Offline
                                    mrjjM Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #51

                                    @AlexKrammer
                                    That is very odd then.
                                    The 500ms loop is a QTimer?

                                    Sorry I cant guess what could be wrong. It sounds like the parts are working but
                                    not in all use cases.

                                    A 1 Reply Last reply
                                    0
                                    • mrjjM mrjj

                                      @AlexKrammer
                                      That is very odd then.
                                      The 500ms loop is a QTimer?

                                      Sorry I cant guess what could be wrong. It sounds like the parts are working but
                                      not in all use cases.

                                      A Offline
                                      A Offline
                                      AlexKrammer
                                      wrote on last edited by
                                      #52

                                      @mrjj yes for sure. other thing in the loop are working. e.g. if i call directly in the loop every 500ms "ui->temperature4lable->setText(QString::number(S.getHystTemperature()));"
                                      the value changes every 500ms if i change the horizontal slider.

                                      mrjjM 1 Reply Last reply
                                      0
                                      • A AlexKrammer

                                        @mrjj yes for sure. other thing in the loop are working. e.g. if i call directly in the loop every 500ms "ui->temperature4lable->setText(QString::number(S.getHystTemperature()));"
                                        the value changes every 500ms if i change the horizontal slider.

                                        mrjjM Offline
                                        mrjjM Offline
                                        mrjj
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #53

                                        Hi
                                        Ok but that
                                        S.getHystTemperature()
                                        seems out side of the CheckTemperature class, correct ?

                                        so you have
                                        SetTemperature S;
                                        ReadTemperature R;

                                        in mainwindow too ? and those works but
                                        inside the CheckTemperature they are not ?

                                        A 1 Reply Last reply
                                        0
                                        • mrjjM mrjj

                                          Hi
                                          Ok but that
                                          S.getHystTemperature()
                                          seems out side of the CheckTemperature class, correct ?

                                          so you have
                                          SetTemperature S;
                                          ReadTemperature R;

                                          in mainwindow too ? and those works but
                                          inside the CheckTemperature they are not ?

                                          A Offline
                                          A Offline
                                          AlexKrammer
                                          wrote on last edited by
                                          #54

                                          @mrjj yes. right.
                                          but i have:
                                          SetTemperature S;
                                          ReadTemperature R;

                                          in CheckTemperature too

                                          mrjjM 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved