22-03-2017, 00:01
Witam. Wykonałem sobie projekt sterownika pompy CO. W sumie hasa bez zarzutów ale chciałem dołożyć taki mały gadżet do tego ustrojstwa, a mianowicie sygnalizacje buzerem. W momencie załączenia pompy sterownik wyemituje dzwięk 2x beep, a przy wyłączeniu jeden beep. Szczerze to nie mam pojęcia jak to zrobić. Ostatnia próba zakończyła się na tym że jak osiągnoł temperaturę docelową to beepkał cały czas. Proszę o jakąś podpowiedź.
Kod:
#include <OneWire.h>
#include <DS18B20.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DS18B20 sensors(&oneWire);
const int A=6;
const int B=7;
float tempz = 50;
byte address[8] = {0x28, 0x16, 0x5A, 0x1E, 0x7, 0x0, 0x0, 0x88};
float temperatura;
void setup()
{
sensors.begin();
pinMode(5,INPUT_PULLUP);
pinMode(A, INPUT_PULLUP);
pinMode(B, INPUT_PULLUP);
pinMode(12,OUTPUT);
lcd.begin(20, 4);
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T.Pieca ~");
lcd.setCursor(0,2);
lcd.print("Stan pompy ~");
lcd.setCursor(0,3);
lcd.print("Start pompy ~");
}
boolean stan=0;
void loop()
{
if(digitalRead(A)==LOW){tempz++;}
if(digitalRead(B)==LOW){tempz--;}
lcd.setCursor(14,3);
lcd.print(tempz);
if(digitalRead(5)==LOW)
{
delay(20);
stan=!stan;
digitalWrite(12,stan);
while(digitalRead(5)==LOW);
delay(20);
}
if (sensors.available())
{
temperatura = sensors.readTemperature(address);
sensors.request(address);
}
lcd.setCursor(14,0);
lcd.print(temperatura);
if (temperatura >=tempz){digitalWrite(12,HIGH);
lcd.setCursor(14,2);
lcd.print("PRACA");
}
if (temperatura<=tempz -6){digitalWrite(12,LOW);
lcd.setCursor(14,2);
lcd.print("STOP ");
}
}