Arduino i android, sterowanie oświetleniem.

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
rumunn95
Majsterkowicz
Posty: 174
Rejestracja: 12 mar 2015, 18:32

Arduino i android, sterowanie oświetleniem.

Post autor: rumunn95 » 18 cze 2019, 10:36

Witam zbudowałem sobie ala SmartHome z arduino które kontroluje zestaw solarny i komunikuje sie przez BT z tabletem zabudowanym na ścianie na którym zrobiłem aplikacje w MIT App invetor która to wyświetla mi aktualne temperatury solara, zbiornika CWU, temp zewnętrzna i wewnętrzna.
Do tego dodałem 4 przyciski do oświetlenia i sterowania brama i furtka. Otóż problem jaki mam to jeżeli wyjdę z aplikacji na tablecie to przerywa komunikacje z BT i zaświeca mi światło w kuchni tak jakbym wcisnął przycisk włącznika. Jak sobie z tym poradzić? wrzucam kod z arduino jak i MIT App inventor.

Kod: Zaznacz cały

int relKuchnia = 9;
int relBarek = 8;
int relGate = 7;
int relFurtka = 6;
int kuchniaState = 0;
int barekState = 0;
int data = 0;


void setup() {
  Serial.begin(9600);
  sensors.begin();
  sensors.setResolution(tempSolar, 10);
  sensors.setResolution(tempZbiornik, 10);
  sensors.setResolution(tempZewnetrzna, 10);
  sensors.setResolution(tempWewnetrzna, 10);
  lcd.begin(20, 4);
  lcd.createChar(0, stopnie);
  lcd.createChar(1, kran);
  lcd.createChar(2, kolektor);
  lcd.createChar(3, goWest);
  lcd.createChar(4, goEast);
  lcd.clear();
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.backlight();
  pinMode(BTN_PIN, INPUT);
  pinMode(sensE, INPUT);
  pinMode(sensW, INPUT);
  pinMode(rel1, OUTPUT);
  pinMode(rel2, OUTPUT);
  pinMode(rel3, OUTPUT);
  pinMode(relKuchnia, OUTPUT);
  pinMode(relBarek, OUTPUT);
  pinMode(relGate, OUTPUT);
  pinMode(relFurtka, OUTPUT);
  pinMode(relKuchnia, HIGH);
  pinMode(relBarek, HIGH);
  pinMode(relGate, HIGH);
  pinMode(relFurtka, HIGH);
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("STEROWNIK SOLARNY");
  lcd.setCursor(3, 1);
  lcd.print("Z OBROTNICA v2.1");
  lcd.setCursor(4, 3);
  lcd.print("RumunN95 ;-)");
  delay(3500);
  lcd.clear();
}


void loop() {

  sensors.requestTemperatures();
      if (Serial.available() > 0) {
      data = Serial.read();
      
        if (kuchniaState == 0 && data == 'K') {
          digitalWrite(relKuchnia, HIGH);
          data = 0;
          kuchniaState = 1;
            
        }
        if (kuchniaState == 1 && data == 'K') {
          digitalWrite(relKuchnia, LOW);
          data = 0;
          kuchniaState = 0;
          
        }
        if (barekState == 0 && data == 'B') {
          digitalWrite(relBarek, HIGH);
          data = 0;
          barekState = 1;
            
        }
        if (barekState == 1 && data == 'B') {
          digitalWrite(relBarek, LOW);
          data = 0;
          barekState = 0;
          
        }
       // if (!(data == 'X')) {
         // digitalWrite(relKuchnia, HIGH);
          //data = 0;
          //kuchniaState = 1;
        //}
      }
    
  czujki();
  histereza();
  zmParametry();
  traker();
  int btnData = analogRead(BTN_PIN);

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis2 > interval2) {
    previousMillis2 = currentMillis;
    printTemperature(tempSolar);
    Serial.print(" °C");      ////°°°°°°
    Serial.print("|");
    printTemperature(tempZbiornik);
    Serial.print(" °C");
    Serial.print("|");
    printTemperature(tempWewnetrzna);
    Serial.print(" °C");
    Serial.print("|");
    printTemperature(tempZewnetrzna);
    Serial.print(" °C");
  }
}
void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error;)");
    //lcd.print("Err")
  } else {
    Serial.print(tempC);
    //lcd.print(tempC);
  }
}

void printTempLcd(DeviceAddress deviceAddress)
{
  float tempLcd = sensors.getTempC(deviceAddress);
  if (tempLcd == -127.00) {
    lcd.print("Error;)");
    //lcd.print("Err")
  } else {
    lcd.print(tempLcd);
    //lcd.print(tempC);
  }
}
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


ODPOWIEDZ

Strony partnerskie: