Navigation

    M5Stack Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    1. Home
    2. BrandPlay
    B
    • Continue chat with BrandPlay
    • Start new chat with BrandPlay
    • Flag Profile
    • Profile
    • Following
    • Followers
    • Blocks
    • Topics
    • Posts
    • Best
    • Groups
    Save
    Saving

    BrandPlay

    @BrandPlay

    0
    Reputation
    2
    Posts
    489
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    BrandPlay Follow

    Posts made by BrandPlay

    • RE: Core 2 with Sim 800 module.

      Hello @felmue. I have a problem with connecting SIM800L(M004) with Core 2 . When I try to turn Core on it just light build in LED for second and turn it off. Core did not start, but when i give 5v from another power supply to SIM800L it starts properly. Did you have problem like that?

      posted in Core 2
      B
      BrandPlay
    • Buttons+gps+interrupts problem

      Hello I have a problem while using gps module(M003) interrupts and buttons on Core 2
      When i didn't use buttons everything was working but when i started to use buttons device is restarting with Guru Meditation Error: Core 1 panic'ed (Coprocessor exception)
      For interrupt i use hall sensor connected to pin 21
      There is also a problem when it finally didn't get Coprocessor exception click buton make interrupt stops working and i need to attach it again(as on button A). When i'm using M5.update() device resets after geting few falling signals from hall sensors and button click . I tried to use task pinned to core and move there button check but it didn't helped at all.
      Here is my code :

      #include <M5Core2.h>
      #include <TinyGPS++.h>
      
      #define PIN 21
      const int buttonPin = 2;     
      float start, finished;
      float elapsed;
      float circMetric=2.093; // wheel circumference (in meters)
      float circImperial; // using 1 kilometer = 0.621371192 miles
      float speedk, speedm;    // holds calculated speed vales in metric and imperial
      unsigned long currentMillis;
      const unsigned long period = 5000;  //milliseconds
      unsigned long startMillis; 
      
      // The TinyGPS++ object
      TinyGPSPlus gps;
      
      
      static void smartDelay(unsigned long ms)
      {
        unsigned long start = millis();
        do 
        {
          while (Serial2.available() > 0)
            gps.encode(Serial2.read());
        } while (millis() - start < ms);
        M5.Lcd.clear();
      }
      
      void displayInfo()
      {
        M5.Lcd.setCursor(0, 40, 4);
        M5.Lcd.print(F("Latitude:    ")); 
        if (gps.location.isValid())
        {
          M5.Lcd.print(gps.location.lat(), 6);
          
        }
        else
        {
          M5.Lcd.print(F("INVALID"));
        }
        
        M5.Lcd.println();
        M5.Lcd.print(F("Longitude:    ")); 
        if (gps.location.isValid())
        {
          M5.Lcd.print(gps.location.lng(), 6);   
        }
        else
        {
          M5.Lcd.print(F("INVALID"));
        }
        
        M5.Lcd.println();
        M5.Lcd.print(F("Altitude:    ")); 
        if (gps.altitude.isValid())
        {
          M5.Lcd.print(gps.altitude.meters());
        }
        else
        {
          M5.Lcd.print(F("INVALID"));
        }
      
        M5.Lcd.println();
        M5.Lcd.print(F("Satellites:    "));
        if (gps.satellites.isValid())
        {
          M5.Lcd.print(gps.satellites.value());
        }
        else
        {
          M5.Lcd.print(F("INVALID"));
        }
      
        M5.Lcd.println();
        M5.Lcd.print(F("Speed h: "));
      
        M5.Lcd.print(int(speedk));
      
      
        M5.Lcd.println();
        M5.Lcd.print(F("Speed: "));
        if (gps.speed.isValid())
        {
      M5.Lcd.print(gps.speed.kmph());
        }
        
        else
        {
          M5.Lcd.print(F("INVALID"));
        }
      
      }
      
      
      void speedCalc()
      {
        //Function called by the interrupt
      
        if((millis()-start)>100) // 100 millisec debounce
          {
          //calculate elapsed
          elapsed=millis()-start;
      
          //reset start
          start=millis();
        
          //calculate speed in km/h
          speedk=(3600*circMetric)/elapsed; 
      
          //calculate speed in mph
         // speedm=(3600*circImperial)/elapsed; 
          }
      
      }
      
      
      
      
      
      
      void setup()
      { pinMode(PIN, INPUT);
      
        M5.begin(true, true, true, false, kMBusModeInput);
        Serial2.begin(9600, SERIAL_8N1, 13, 14);  
        M5.Lcd.setTextColor(GREEN, BLACK);
        attachInterrupt(digitalPinToInterrupt(PIN), speedCalc, FALLING);
        start=millis();
      
      }
      
      void loop()
      { 
         M5.Touch.update();
        M5.Buttons.update();
          displayInfo();
      
        
       gps.encode(Serial2.read());   
      
        if(M5.BtnB.wasPressed())
        {
          M5.Lcd.print(F("Change"));
          delay(100);
        }
          if(M5.BtnC.wasPressed())
        {
        
          
        }
        if(M5.BtnA.wasPressed())
        {
          M5.Lcd.print(("aaaa"));
          delay(1000);
        attachInterrupt(digitalPinToInterrupt(PIN), speedCalc, FALLING);
        }
      
      M5.Lcd.clear();
          
        }
      posted in Core 2
      B
      BrandPlay