подключение второго датчика

anjei
Offline
Зарегистрирован: 21.03.2017

подскажите плиз

имею вариометр собраный на меге2560  тфт3,2 и вмп180,прекрасно работает,решил добавить  neo6m для получения GPS скрорости и высоты,после иницилизации порта GPS варик начинает дико тормозить---не тянет

два дачика?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Для того, чтобы Вам кто-нибудь мог помочь, необходимо:

1. Выложить Ваш код
2. Выложить ссылки на используемые библиотеки
3. Выложить схему подключения.

Пока ничего этого нет, Ваш пост - глас вопиющего. Народ, конечно может потереть хрустальные шары и выложить Вам 100500 возможных причин Вашей проблемы - оно Вам надо?

anjei
Offline
Зарегистрирован: 21.03.2017

изиняюсь испаравил

#include <Wire.h> 
#include <BMP085.h>
#include <SoftwareSerial.h>
#include <TFT_HX8357.h>
#include <Adafruit_BMP085.h>
#include <TinyGPS++.h>
#define BUZZER_PIN   13
static const int RXPin = 11, TXPin = 19;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
TFT_HX8357 tft = TFT_HX8357();  
BMP085   bmp085 = BMP085();
#define TFT_GREY 0x5AEB
long Temperature = 0, Pressure = 0, Altitude = 0; 
float vario_down = -0.8;
float vario_up = 0.4; 
float alt[51];
float tim[51];
float beep;
float Beep_period;
float mux;
float BaseAltitude;
float Temp;
float voltage;
float mAltitude;
float mAltitude1;
 
 int analogInPin = A1;
const float p0 = 101325;
unsigned long bounseInput4P = 0UL;
int samples=40; 
int maxsamples=50;
int countPressVal = 0;
bool feedgps();
bool tmp1 = 0;
bool countPress = 0;
bool bounseInput4S = 0;
bool bounseInput4O = 0;
boolean  thermalling = false;
const int SoundPin =13;
int DelaySound = 1000;
 
void setup(void) { 
  
  tft.init();
  Serial.begin(9600); 
   
    Wire.begin();
    ss.begin(GPSBaud);//-и тут включаются тормоза 
 
 bmp085.init(MODE_ULTRA_HIGHRES, p0, false);
 bmp085.getTemperature(&Temperature);
 bmp085.calcTruePressure(&Pressure);
 bmp085.getAltitude(&Altitude);
 
 
  BaseAltitude = (float)44330 * (1 - pow(((float)Pressure/p0), 0.190295));
 mAltitude = 0;
 
}          
 
void loop(void) { 
  
     bool  bounceTmp =  (digitalRead (4)); 
    if (bounseInput4S)      
    {
        if (millis() >= (bounseInput4P + 40))
     
        {bounseInput4O= bounceTmp; bounseInput4S=0;}
    }
    else{
        if (bounceTmp != bounseInput4O )
        {bounseInput4S=1; bounseInput4P = millis();}
    }
    if (!(bounseInput4O))
    {
        if (! countPress)
        {
            countPressVal++;     
            for (int i = 0; i < countPressVal; i++)  // проиграть РЅРѕРСер Р Сеню
            {
     //           tone_out2.play(800, 100); 
     //           delay(200);                
            }
            countPress = 1;
        }
    }
    else{
        countPress=0;
    }
   
    if (countPressVal < 0 ) countPressVal = 0;
    if (tmp1) countPressVal = 0;            // == МЕНЮ ЧУВСТВ�ТЕЛЬНОСТ� Р СњР С’ ПОДЪЁМ ==
    if((countPressVal) == 0) {mux = 0.5;}  // 4 сигнала
    if((countPressVal) == 1) {mux = 0.3;}  // 1 сигнал
    if((countPressVal) == 2) {mux = 0.35;} // 2 сигнала
    if((countPressVal) == 3) {mux = 0.4;}  // 3 сигнала
  
    tmp1 =  countPressVal  >=  4;    
    vario_up = mux;   
    float tempo=millis();
    float vario=0;
    float N1=0;
    float N2=0;
    float N3=0;
    float D1=0;
    float D2=0;
    // float mAltitude = 0;
  int time=millis()/1000;
 
    
 
  bmp085.calcTruePressure(&Pressure);
 Altitude = (float)44330 * (1 - pow(((float)Pressure/p0), 0.190295));
  mAltitude1=(int(Altitude-BaseAltitude));
  if (mAltitude<mAltitude1)
  mAltitude=mAltitude1;
  
 tft.setTextColor(TFT_BLACK,TFT_WHITE);
   tft.setCursor(5, 300, 2);
   tft.setTextSize(2);
   tft.print("Temp" );
    tft.setCursor(70, 300, 2);
   tft.setTextSize(2);
    bmp085.getTemperature(&Temperature);
   tft.print(Temperature*0.1,1 );
  
   voltage = analogRead(A1)/1023.0;
     tft.setCursor(10, 350, 2);
     tft.print("bat ");
    tft.print (voltage*5.3,1); 
    tft.print("V"); 
    
   tft.setCursor(5, 400, 2);
   tft.setTextSize(2);
   tft.print("mA.m" );
   
 
  
    tft.setCursor(70, 400, 2);
   tft.setTextSize(2);
   tft.print(mAltitude,0); 
   tft.print("     ");
   tft.println();
   tft.setCursor(10, 440, 2);
   
 if (time/60/60<10) {  tft.print ("0"); }
 tft.print (time/60/60);
 tft.print (":");
 if (time/60%60<10) {  tft.print ("0"); }
 tft.print ((time/60)%60);
 tft.print (":");
 if (time%60<10) {  tft.print ("0"); }
 tft.print(time%60);   
 tft.print("  ");
     
   tft.setCursor(10, 40, 2);
   tft.setTextSize(2);
   tft.print("A.m"); 
  tft.setCursor(70,30,4);
  tft.setTextFont(4);
  tft.print("          ");
  tft.setCursor(70,30,4);
  tft.print(int(Altitude-BaseAltitude)); 
  tft.print("           ");
 
 
 
    for(int cc=1;cc<=maxsamples;cc++){                                   // усреднитель
        alt[(cc-1)]=alt[cc];
        tim[(cc-1)]=tim[cc];
    };
    alt[maxsamples]=Altitude;    tim[maxsamples]=tempo;
    float stime=tim[maxsamples-samples];
    for(int cc=(maxsamples-samples);cc<maxsamples;cc++){
        N1+=(tim[cc]-stime)*alt[cc];
        N2+=(tim[cc]-stime);
        N3+=(alt[cc]);
        D1+=(tim[cc]-stime)*(tim[cc]-stime);
        D2+=(tim[cc]-stime);
    };
   
    vario=1000*((samples*N1)-N2*N3)/(samples*D1-D2*D2);
 
 
  tft.setCursor(30, 210, 4);
  tft.setTextFont(4);
  tft.print("        "); 
  tft.setCursor(30, 210, 4); 
//  tft.setTextFont(4);
  tft.print(abs(vario),1);
  tft.print("   "); 
   tft.setTextColor(TFT_WHITE,TFT_WHITE);
  tft.setCursor(100, 210, 4);
// tft.setTextFont(4);
  tft.print("  ");
  tft.setTextColor(TFT_GREEN,TFT_WHITE); 
  
    if (vario>=0)
    {
tft.setCursor(5, 210, 0);
tft.setTextFont(4);
tft.println("+");
     }
    if (vario<0)
    {
 tft.setTextColor(TFT_RED,TFT_WHITE);      
tft.setCursor(5, 210, 0);      
tft.setTextFont(4);
tft.println("-");
  }
tft.fillRect(240,0,480,480,TFT_WHITE );
if (vario>vario_down&&vario<8)
     {
 
tft.fillRect(240,220,480, 20,TFT_GREEN); 
         }      
if (vario>1&& vario<15)
     {
tft.fillRect(240,195, 480, 20,TFT_GREEN);
      } 
if (vario>2&&vario<15)
          {        
 tft.fillRect(240,170, 480, 20,TFT_GREEN);  
         } 
if (vario>3&&vario<15)
         {    
  tft.fillRect(240,138, 480, 25,TFT_GREEN);                                   
                } 
if (vario>4&&vario<15)
         { 
  tft.fillRect(240,100, 480, 30,TFT_GREEN);  
               } 
if (vario>5&&vario<15)
         {                
  tft.fillRect(240,30, 480, 60,TFT_GREEN);                                 
             } 
if (vario<-0.7)
         { 
   tft.fillRect(240,245, 480, 20,TFT_RED);                            
      }
if (vario<-2)
         { 
 tft.fillRect(240,270, 480, 20,TFT_RED);  
           } 
if (vario<-3)
         { 
  tft.fillRect(240,295, 480, 20,TFT_RED);                                      
           } 
if (vario<-4)
         {
 tft.fillRect(240,320, 480, 30,TFT_RED);
            } 
if (vario<-5)
         {
 tft.fillRect(240,360, 480, 40,TFT_RED);                
   
    }
 
 
    if ((tempo-beep)>Beep_period)
    {
        beep=tempo;
        if (vario>vario_up && vario<15 )
        {
          tone(BUZZER_PIN,1200+(100*vario),300-(vario*5));
       
            Beep_period=350-(vario*5);
   
            thermalling = true;
               
        }
        else if (vario>0.1&&vario<0.4)
        {
            
           tone(BUZZER_PIN,600, 25); 
           }
        else if (vario<-0.1&&vario>-0.8)
        {
            
           tone(BUZZER_PIN,150, 25); 
     
        }
        else if ((vario < 0,4 ) && (thermalling == true))
        {
            thermalling = false;
           tone(BUZZER_PIN,100, 300); 
  
             
        }
        else if (vario< vario_down)
        {        
          Beep_period=200; 
          tone(BUZZER_PIN,300-(vario),340);
            
              thermalling = false;
            
 
            
        }
    }
 
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

anjei пишет:

изиняюсь испаравил

Ничего Вы не исправили.
 
Давайте по пунктам
 
1.
Вы линку в моём сообщении не заметили? Или проигнорировали? Как мы будем этот код обсуждать? "В строке №ХЗ ...."? Вставьте нормально.
 
2.
И где ссылки на библиотеки? Откуда мне знать, чем Вы там пользуетесь? С таким названием их может быть 100500.
 
3.
И где схема?