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 32.3k 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.
  • 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
                      • A AlexKrammer

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

                        in CheckTemperature too

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

                        @AlexKrammer
                        and that's the part that really bugs me as if those classes work alone in MainWindow, i cannot see a reason they should not work in that other class just the same ??

                        void CheckTemperature::CheckTemp()
                        could just have well been

                        void MainWindow::CheckTemp()

                        and the difference is really small.

                        A 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          @AlexKrammer
                          and that's the part that really bugs me as if those classes work alone in MainWindow, i cannot see a reason they should not work in that other class just the same ??

                          void CheckTemperature::CheckTemp()
                          could just have well been

                          void MainWindow::CheckTemp()

                          and the difference is really small.

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

                          @mrjj no in MainWindow is no CheckTemp() methode.

                          mrjjM 1 Reply Last reply
                          0
                          • A AlexKrammer

                            @mrjj no in MainWindow is no CheckTemp() methode.

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

                            @AlexKrammer
                            Yes that is ganz klar.
                            Im just saying its odd that inside CheckTemperature the
                            same classes dont work but outside in mainwindow it seems fine.
                            I cant guess on why. Seems odd.

                            A 1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @AlexKrammer
                              Yes that is ganz klar.
                              Im just saying its odd that inside CheckTemperature the
                              same classes dont work but outside in mainwindow it seems fine.
                              I cant guess on why. Seems odd.

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

                              @mrjj
                              Is there a possibility to share a code with you?
                              I just created a simple code to show my problem.

                              mrjjM 1 Reply Last reply
                              0
                              • A AlexKrammer

                                @mrjj
                                Is there a possibility to share a code with you?
                                I just created a simple code to show my problem.

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

                                @AlexKrammer
                                Yes even i cant really run it i can look it over and see if i get a hint.
                                use https://wetransfer.com/
                                click the (...) button and switch to link type
                                then drag zipped project to there
                                and paste link here.

                                A 1 Reply Last reply
                                0
                                • mrjjM mrjj

                                  @AlexKrammer
                                  Yes even i cant really run it i can look it over and see if i get a hint.
                                  use https://wetransfer.com/
                                  click the (...) button and switch to link type
                                  then drag zipped project to there
                                  and paste link here.

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

                                  @mrjj link text

                                  Now i created the project on Windows.
                                  You should be able to run it.

                                  The two commented debug lines in checktemperature.cpp and mainwindow.cpp show the misstake.
                                  if you are uncomment one in checktemperature.cpp its still stay at 0.
                                  Also if you uncomment this: //qDebug() << C.TempEin; //must be the value of the horizontal slider in mainwindow.cpp. its still stay at 0.

                                  Try to run that example

                                  mrjjM 1 Reply Last reply
                                  1
                                  • A AlexKrammer

                                    @mrjj link text

                                    Now i created the project on Windows.
                                    You should be able to run it.

                                    The two commented debug lines in checktemperature.cpp and mainwindow.cpp show the misstake.
                                    if you are uncomment one in checktemperature.cpp its still stay at 0.
                                    Also if you uncomment this: //qDebug() << C.TempEin; //must be the value of the horizontal slider in mainwindow.cpp. its still stay at 0.

                                    Try to run that example

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

                                    @AlexKrammer
                                    Super. I will later tonight. I have to drive now :)
                                    had a fast look.
                                    You are not setting anything to C. only reading from it.
                                    Nothing changes the S and R inside C.
                                    Only the ones you have free in main.
                                    So that is why it stays at zero.

                                    A 1 Reply Last reply
                                    0
                                    • mrjjM mrjj

                                      @AlexKrammer
                                      Super. I will later tonight. I have to drive now :)
                                      had a fast look.
                                      You are not setting anything to C. only reading from it.
                                      Nothing changes the S and R inside C.
                                      Only the ones you have free in main.
                                      So that is why it stays at zero.

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

                                      @mrjj
                                      For sure. I'm trying to use this class to compare something.
                                      So yeah nothing changes S and R inside C but S.getHystTemperature(); will be changed if the Slider moved. and R.actualTemp1 will be changed, if cnt hit 3 in MainWindow::LOOP
                                      or rather in real if the sensor will be evaluated.
                                      So if i call the methode C.CheckTemp(); S.getHystTemperature() and R.actualTemp1 do have values who could be compare.
                                      if i code:

                                      TempEin = S.getHystTemperature();
                                      Test = R.actualTemp1;
                                      

                                      i'm going to set the Variable TempEin equal to S.getHystTemperature() (Which is changed when the slider moved)
                                      and i'm going to set Test equal to R.actualTemp1 (Which every times change when cnt hits 3 in MainWindow)
                                      Or isnt that the correct way to compare something or rather put values from a other class into a class?

                                      mrjjM 1 Reply Last reply
                                      0
                                      • A AlexKrammer

                                        @mrjj
                                        For sure. I'm trying to use this class to compare something.
                                        So yeah nothing changes S and R inside C but S.getHystTemperature(); will be changed if the Slider moved. and R.actualTemp1 will be changed, if cnt hit 3 in MainWindow::LOOP
                                        or rather in real if the sensor will be evaluated.
                                        So if i call the methode C.CheckTemp(); S.getHystTemperature() and R.actualTemp1 do have values who could be compare.
                                        if i code:

                                        TempEin = S.getHystTemperature();
                                        Test = R.actualTemp1;
                                        

                                        i'm going to set the Variable TempEin equal to S.getHystTemperature() (Which is changed when the slider moved)
                                        and i'm going to set Test equal to R.actualTemp1 (Which every times change when cnt hits 3 in MainWindow)
                                        Or isnt that the correct way to compare something or rather put values from a other class into a class?

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

                                        Hi
                                        Just so we agree. Nothing you do in mainwindow with S/R
                                        will have any effect on the S and R in C.

                                        • C.CheckTemp(); S.getHystTemperature() and R.actualTemp1 do have values who could be compare.

                                        Yes if in real code something actually changes them.
                                        In the Demo, they will always stay zero as the slider changes S/R in main and
                                        those new values are not out into C.
                                        so in demo code
                                        C.TempEin will never change.

                                        Else i see nothing wrong but I not sure why you have both
                                        SetTemperature S;
                                        ReadTemperature R;
                                        in maniwindow

                                        and then also in C. could those in C not be enough ?

                                        A 1 Reply Last reply
                                        0
                                        • mrjjM mrjj

                                          Hi
                                          Just so we agree. Nothing you do in mainwindow with S/R
                                          will have any effect on the S and R in C.

                                          • C.CheckTemp(); S.getHystTemperature() and R.actualTemp1 do have values who could be compare.

                                          Yes if in real code something actually changes them.
                                          In the Demo, they will always stay zero as the slider changes S/R in main and
                                          those new values are not out into C.
                                          so in demo code
                                          C.TempEin will never change.

                                          Else i see nothing wrong but I not sure why you have both
                                          SetTemperature S;
                                          ReadTemperature R;
                                          in maniwindow

                                          and then also in C. could those in C not be enough ?

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

                                          @mrjj
                                          No that is not true.
                                          In mainwindow i change the slider. So i change HystTemperature.
                                          That will change S.getHystTemperature(); too. Doesnt it?

                                          Also every 2.5 second when the cnt hit 3 in mainwindow. The actualTemp1 will be incremented with 1. So R.actualTemp will be greater then before. Doesnt it?
                                          So why are in Class C the Variable not changing?

                                          In order to to change the varibale like in my fault. I must have this in MainWindow. When i move the slider im going to change the variable HystTemperature.
                                          Here in the demo its the same like in real. Every 2.5 second the sensor will be evaluated. So here in the demo only incremented with 1.

                                          Im changing the Variable R.actualTemp1 and S.getHystTemperature in MainWindow.
                                          In order to compare both varibales i created a new class.
                                          So why arent in Class CheckTemperature the variables changed?

                                          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