Arduino wiele warunków w jednym czasie

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Witam, mam problem ponieważ napisałem program w arduino do podgrzewania wody oraz bluetooth. Bluetooth otwiera bramę rolowaną czyli daje impuls lecz wysyłając sygnał do modułu muszę chwilkę czekać aż przejdą przerwania które są konieczne w moim programie dodałem już warunek bluetooth kilkukrotnie do programu po to aby zredukować czas lecz to mnie nie zadowala chciałbym tak zrobić aby program obsługujący bluetooth był na osobnej pętli lub coś w tym stylu generalnie chodzi o to aby dwa programy były rozpatrywane w jednym czasie. Drugim moim problemem jest to że jak już widzicie poniżej program jest napisany tak, że jeżeli temperatura spadnie poniżej 4 stopni grzeje ją aż do 9 a ja potrzebuję to również ograniczyć czasowo czyli aż do dziewięciu stopni z ograniczeniem do 10 min grzani.

z góry dziękuję za pomoc poniżej dodaję program

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
int data;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
Serial.begin(9600);
sensors.begin();
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
pinMode(9, OUTPUT);
lcd.begin (16,2);
lcd.setCursor(3,0);
lcd.print(“LOADING…”);
lcd.setCursor(3,1);
lcd.print(“PLEASE WAIT”);
}
void loop()
{
sensors.requestTemperatures();
Serial.println(“”);
delay(200);
Serial.print(“temp: “);
Serial.println(sensors.getTempCByIndex(0));
if (sensors.getTempCByIndex(0)>9)digitalWrite(8, HIGH);
if (sensors.getTempCByIndex(0)<4)digitalWrite(8, LOW);
if (sensors.getTempCByIndex(0)>9)digitalWrite(13, LOW);
if (sensors.getTempCByIndex(0)<4)digitalWrite(13, HIGH);
if (13, LOW) Serial.print(“grzeję wodę “);
if (13, HIGH)Serial.print(“czuwam”);
{
data=Serial.read();
if (data==48)digitalWrite(9, LOW);
delay(1000);
digitalWrite(9, HIGH);
}
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print(“TEMP.H2O=”);
lcd.print(sensors.getTempCByIndex(0));
lcd.print(“*C”);
lcd.setCursor(5,1);
if (sensors.getTempCByIndex(0)<4)lcd.print(“STAN:1”);
if (sensors.getTempCByIndex(0)>9)lcd.print(“STAN:0”);
delay (1000);
lcd.setCursor(1,1);
lcd.print(“PROGRAMED BY:”);
delay(500);
{
data=Serial.read();
if (data==48)digitalWrite(9, LOW);
delay(1000);
digitalWrite(9, HIGH);
}
lcd.setCursor(1,1);
lcd.print(“xxxxxxxxxxxxxxxx”);
delay(500);
{
data=Serial.read();
if (data==48)digitalWrite(9, LOW);
delay(1000);
digitalWrite(9, HIGH);
}
lcd.setCursor(1,1);
lcd.print(“TEL:ddd-yyy-xxx”);
delay(50);

}

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Ocena: 1/5 (głosów: 1)

Podobne posty

Jeden komentarz

Odpowiedz

anuluj

Masz uwagi?