14 kwietnia 2017

[Arduino] Przykład programu obliczajacego predkosc z przepływowego czujnika

word steps = 0;
float rotation = 0;
float speeder = 0;
int srednicaKola = 150;
float mph; //Utworzenie zmiennej mile/godzinę
float kmh; //Utowrzenie zmiennej km/h

void setup()
{
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), counter, RISING);
}

void loop()
{ onStep();

  Serial.print("Ilosc: ");
  Serial.println(rotation, DEC);
  Serial.print("Speed: ");
  Serial.print(kmh, DEC);
  Serial.println(" km/h ");
  delay(1000);
}

void counter() {
  steps++;
}

void onStep()
{
  static unsigned long lastTime;
  unsigned long timeNow = millis();
  if (timeNow - lastTime <= 1000) {
    return;
  }
  noInterrupts(); //przed obliczeniem wylaczyc przerwanie
  rotation = steps;
  speeder = ((2 * 3.1415 * 30) / (timeNow - lastTime)) * steps;

  mph = (srednicaKola / 2) * 3.14 * rotation * 60 / 5280;//Odczyt prędkości wiatru w milach/godzinę
  mph = mph / 1.5; // Kalibracja błędu odczytu, wartość należy dobrać we własnym zakresie
  kmh = mph * 1.609;
  Serial.print("kroki:");
  Serial.println(steps);
  steps = 0;

  interrupts() ; //po wyliczenu wlacz przerwanie
  // else steps=0;
  // Serial.println(rotation, DEC);
  lastTime = timeNow;

}

07 października 2015

Połączenie Aero2 poprzez Wvdial dla Huawei E169

Poniżej konfiguracja wvdial dla modemu Huawei E169 dla Aero2 którą wpisujemy do pliku /etc/wvdial.conf:

[Dialer Aero2]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","darmowy"
Init4 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Password = ;
Phone = *99***1#
Modem Type = Analog Modem
Stupid Mode = on
;Init2 = AT+CPIN="0000"
Baud = 9600
Auto DNS = on
Modem = /dev/ttyUSB0
ISDN = 0
Username = ;

04 września 2015

[MYSQL] Różnicowanie pomiędzy rekordami

Ostatnio myślałem jak utworzyć zapytanie wyliczajace różnice pomiędzy rekordami czyli jeżeli mamy coś takiego:

F1
F2
F3
F4
F5

to:

F1-F2
F2-F3
F3-F4
F4-F5

Jako klucza użyłem daty wprowadzenia z powodu iż łatwiej wyszukać ostatnie wprowadzenie rekordu oraz rekordu-1
Poniżej przedstawione zapytanie jak to działa:


SELECT
    t1.id,
    t2.id,
    t1.datawprowadzenia,
    t2.datawprowadzenia,
    t1.ciepla,
    t2.ciepla,
    t1.zimna,
    t2.zimna,
    t1.prad,
    t2.prad,
    t1.gaz,
    t2.gaz,
    t1.ciepla - t2.ciepla AS CieplaR,
    t1.zimna - t2.zimna AS zimnaR,
    t1.prad - t2.prad AS pradR,
    t1.gaz - t2.gaz AS gazR
FROM
    Odczyty t1,
    Odczyty t2
WHERE
    t2.id = (SELECT
            t3.id
        FROM
            Odczyty t3
        WHERE
            t3.datawprowadzenia < t1.datawprowadzenia AND t3.aktywny = 1
        ORDER BY datawprowadzenia DESC
        LIMIT 1)
        AND t2.aktywny = 1
        AND t1.aktywny = 1
ORDER BY t1.datawprowadzenia DESC