MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    Error While writing Library for Gy521

    General Discussion
    4
    12
    1213
    Loading More Posts
    • 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.
    • rafitc99
      rafitc99 last edited by

      I'm trying to make an Arduino library for GY521. Created .cpp and .h files and also completed the code. But I'm getting an error while calling library function via main code.

      look my code below or via project repo

      Accelometer:10:7: error: request for member 'getAcData' in 'goo', which is of non-class type 'Gy521()'
         goo.getAcData();
             ^~~~~~~~~
      Accelometer:11:7: error: request for member 'getGyData' in 'goo', which is of non-class type 'Gy521()'
         goo.getGyData();
      

      Accelometer.ino (main code):

      //#include <Wire.h>
      #include "Gy521.h"
      
      Gy521 goo();
      
      void setup(){
        Serial.begin(9600);
      }
      void loop(){
        goo.getAcData();
        goo.getGyData();
      }
      

      Gy521.cpp

      #include "Gy521.h"
      #include "Arduino.h"
      #include <Wire.h>
      
      Gy521::Gy521()
      {
        Wire.begin();
        Wire.beginTransmission(_MPU);
        Wire.write(0x6B); 
        Wire.write(0);    
        Wire.endTransmission(true);
      }
      
      void Gy521::getAcData(){
        Wire.beginTransmission(_MPU);
        Wire.write(0x3B);  
        Wire.endTransmission(false);
        Wire.requestFrom(_MPU,6,true);  
        AcX=Wire.read()<<8|Wire.read();    
        AcY=Wire.read()<<8|Wire.read();  
        AcZ=Wire.read()<<8|Wire.read();   
       
        Serial.print("Accelerometer: ");
        Serial.print("X = "); Serial.print(AcX);
        Serial.print(" | Y = "); Serial.print(AcY);
        Serial.print(" | Z = "); Serial.println(AcZ);  
      }
      void Gy521::getGyData(){
        Wire.beginTransmission(_MPU);
        Wire.write(0x43);  
        Wire.endTransmission(false);
        Wire.requestFrom(_MPU,6,true);  
         
        GyX=Wire.read()<<8|Wire.read();  
        GyY=Wire.read()<<8|Wire.read();  
        GyZ=Wire.read()<<8|Wire.read();
        
        Serial.print("Gyroscope: ");
        Serial.print("X = "); Serial.print(GyX);
        Serial.print(" | Y = "); Serial.print(GyY);
        Serial.print(" | Z = "); Serial.println(GyZ);
        Serial.println(" ");
        delay(100);
      }
      
      

      Gy521.h

      #ifndef Gy521_h
      #define Gy521_h
      
      #include "Arduino.h"
      class Gy521
      {
        public:
          Gy521();
          void getAcData();
          void getGyData();
          int16_t GyX,GyY,GyZ;
          int16_t AcX,AcY,AcZ;
              
        private:
          const int _MPU = 0x68;
      };
      
      
      
      #endif
      

      :- This is my first try to make an Arduino Library 🙂

      1 Reply Last reply Reply Quote 1
      • vishnumaiea
        vishnumaiea last edited by

        When you want to create an object of a class and it doesn't take in any parameters, then

        Gy521 goo;  //object declaration
        

        is enough. Then invoke the initialization function,

        goo.begin();  //initialization
        

        For that, you need to create an initialization function. You can copy the statements in your constructor there.

        rafitc99 1 Reply Last reply Reply Quote 1
        • rafitc99
          rafitc99 @vishnumaiea last edited by

          @vishnumaiea Thank you. I made the changes, it worked well.
          Next, I want to return 3 variables in getAcData() function. Is there any way to do this ? Can i access AcX,AcY,AcZ globally via main code.

          vishnumaiea 1 Reply Last reply Reply Quote 1
          • vishnumaiea
            vishnumaiea @rafitc99 last edited by

            @rafitc99 The member variables of a class can not be accessed without an accompanying object; that's the concept of a class. If you want to return three values, simply update the member variables AcX, Ac and AcZ, and access them as,

            Serial.println(goo.AcX);
            Serial.println(goo.AcY);
            Serial.println(goo.AcZ);
            
            rafitc99 1 Reply Last reply Reply Quote 2
            • rafitc99
              rafitc99 @vishnumaiea last edited by

              @vishnumaiea

              Serial.println(goo.AcX);
              Serial.println(goo.AcY);
              Serial.println(goo.AcZ);
              

              while using above code, I'm getting '0'. not updating,

              saheen_palayi 1 Reply Last reply Reply Quote 0
              • saheen_palayi
                saheen_palayi @rafitc99 last edited by

                @rafitc99 is it fixed ?,u found a solution?

                rafitc99 1 Reply Last reply Reply Quote 0
                • rafitc99
                  rafitc99 @saheen_palayi last edited by

                  @saheen_palayi Nop, while calling goo.AcX getting zero as output. not getting updated value.

                  saheen_palayi 1 Reply Last reply Reply Quote 0
                  • saheen_palayi
                    saheen_palayi @rafitc99 last edited by

                    @rafitc99 I dont think u can access those like that did you tried those lines after

                     goo.getAcData();
                     goo.getGyData();
                    
                    rafitc99 1 Reply Last reply Reply Quote 1
                    • rafitc99
                      rafitc99 @saheen_palayi last edited by

                      @saheen_palayi yeah! that was the problem. Now it's worked. Thank you @saheen_palayi and @vishnumaiea

                      salmanfaris 1 Reply Last reply Reply Quote 1
                      • salmanfaris
                        salmanfaris @rafitc99 last edited by

                        @rafitc99 What was the solution?

                        rafitc99 1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Recent Posts

                        • S

                          In the world of advanced optics and laser technology, Optical Grade diamonds are the new standard. Made with CVD (chemical vapor deposition) technology, these lab grown diamonds have high clarity, thermal conductivity and light transfer. The USA is leading the way with these diamonds, where industries from aviation to telecom have already used them. Not like mined diamonds, Optical Grade CVD diamonds are engineered for perfection, for high-tech applications across industries.

                          What Are Optical Grade Diamonds?

                          Optical Grade diamonds are CVD diamonds For very high precision and very pure materials.

                          Ultra-High Transparency – Near perfect light transmission across UV, visible and IR spectra. Superior Thermal Conductivity – Fast heat dissipation for high power lasers. Minimal Inclusions & Defects – Critical for optical clarity and performance.

                          In the USA, industries are moving fast to Optical Grade lab grown diamonds for their reliability and performance. Interested in Optical Grade diamonds for your application? Learn how CVD technology is changing the face of optics in the USA!

                          • read more
                        • D

                          Signal Hunt: An ESP-NOW Workshop & Treasure Hunt

                          Hello everyone! We’re planning on organizing a two-phase event that explores device-to-device communication using ESP-NOW protocol :

                          Workshop: Participants learn to build and program ESP32-based receivers with a web interface that directly exchange signal data using ESP-NOW for RSSI-based distance approximation.

                          Signal Hunt Competition: Equipped with these receivers, participants will track hidden ESP32 transmitters scattered around the campus, each with distinct point values.

                          Current hardware setup:
                          Reciever(one per team):
                          Esp32 ~ 360rs
                          9v battery = 20rs
                          9v battery clip= 5rs
                          buck converter (MP1584 or LM2596) ~ 45rs
                          Perfboard + male to female berg strip ~30rs
                          Total per reciever ~ 460rs
                          Transmitters :6
                          Components same as recievers = 460*6~2760rs

                          (using non-rechargeable batteries to reduce cost,
                          will using a 7805 voltage regulator IC be a viable way to reduce cost further?)

                          We’d love your suggestions on ways to simplify hardware, reducing the cost, secure partnerships and funding, or enhance the interactive elements. Thank you, looking forward to any ideas that can help make the event engaging and successful!

                          • read more
                        • R

                          I am trying to set up a janus webrtc to stream an RTSP to an HTML page.
                          I have followed the getting-started steps by Janus-gateway official github repo.

                          Since I am new to web development. I do not understand how to host the Webrtc server. can anyone guide me to set up an HTML page that can display a video stream from an RTSP server using janus webrtc?

                          • read more
                        • @zainmuhammed Can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

                          You can put the GPS value on top of the loop or setup function.

                          Also, what kind of gateway are you using? Is it configured okay, OTA is done?

                          • read more
                        • @salmanfaris Today I tried after connecting a 18650 cell,
                          WhatsApp Image 2024-04-12 at 10.40.06_c7d1947e.jpg WhatsApp Image 2024-04-12 at 10.40.05_897b8bb6.jpg
                          Data getting in console after integration of both lora and gps.
                          3f45cfe7-0061-4328-8c55-ef0a73385203-image.png
                          here you can see that GPS value is 0,0. also in my previous post you can see that GPS value is not reading.
                          Also the status LED is active after it is connected to the satellite.

                          • read more
                        By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
                        Copyright © 2023 MakerGram, All rights reserved.
                        Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct