• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dodanie BEEP
#11
Pomóc pomogę tylko w czym?
millis() to "zegar" który zlicza czas w milisekundach od momentu startu programu.
Jeśli chcesz coś zrobić z użyciem millis() musisz zapamiętać w zmiennej aktualną wartość millis()(zapamietaneMIllis) aby w kolejnych cyklach pętli programu sprawdzać czy minął zadany czas(zadanyCzas).
Kod PHP:
static unsigned long zapamietaneMillis;
static 
bool wykonajPolecenie 0;
if (
digitalRead(5)) {
    
zapamietaneMillis millis();
    
wykonajPolecenie 1;
}

if ((
millis() - zapamietaneMillis zadanyCzas) && wykonajPolecenie){
    
wykonajPolecenie 0;
    
cos trzebaby zrobic

Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#12
Pomyślałem o takim rozwiązaniu aby dodatkowo wprowadzić zmienną i taką kombinację z nią:
zmienna =1 
stan wysoki na pinie 12=1
jeżeli stan wysoki na pin 12=1 i zmienna=1 to buzer =1 przez jakiś czas
potem zmienna=0 
jeżeli  stan niski na pin 12 =0 to zmienna =1

Czy to ma sens i jak to ubrać w kod???
 
Odpowiedź
#13
Co tutaj zrobiłem źle???
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);
int Buzz=3;
const int tempplus=6;
const int tempminus=7;
const int wlacznik=5;
float tempz = 26;   //inicjalizacja i przypisanie wartości tempz
byte address[8] = {0x28, 0xFE, 0xE4, 0x1F, 0x7, 0x0, 0x0, 0x62};
float temperatura;  //inicjalizacja wartości zmiennoprzecinkowej
void setup()
{
 sensors.begin();  //rozpoczęcie pracy DS18B20
 pinMode(wlacznik,INPUT_PULLUP);
 pinMode(tempplus, INPUT_PULLUP);
 pinMode(tempminus, INPUT_PULLUP);
 pinMode(13,OUTPUT);
 pinMode(3,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(tempplus)==LOW){tempz++;}  
   if(digitalRead(tempminus)==LOW){tempz--;}
   lcd.setCursor(14,3);                      
   lcd.print(tempz);                        

   if(digitalRead(wlacznik)==LOW)            
   {                                          
 delay(20);                                
 stan=!stan;                                
 digitalWrite(13,stan);
 while(digitalRead(wlacznik)==LOW);
 delay(20);
   }
   if (sensors.available())
 {
 temperatura = sensors.readTemperature(address);
 sensors.request(address);
 }
lcd.setCursor(14,0);
lcd.print(temperatura);


if (temperatura >=tempz){digitalWrite(13,HIGH);
 lcd.setCursor(14,2);
 lcd.print("PRACA");
  int i=0;
 if(Buzz==true){
 Buzz=false;
 while (i<3)
 {
   digitalWrite(Buzz,HIGH);
   delay(50);
   digitalWrite(Buzz,LOW);
   delay(50);
   i++;
 }
 }
 
}
if (temperatura<=tempz-1){digitalWrite(13,LOW);
 lcd.setCursor(14,2);
 lcd.print("STOP ");
 Buzz=true;
}
delay(300);
}
 
Odpowiedź
#14
Witam,
Błąd: w loop () int i = 0;
Pzdr
 
Odpowiedź
#15
(31-03-2017, 23:42)ferdricco napisał(a): Co tutaj zrobiłem źle???
1. Dalej nie formatujesz poprawnie programu a masz od tego kombinacje klawiszy.
2. Nie podałeś opisu działania programu. Ja mogę się domyślać "co poeta miał na myśli" ale niekoniecznie musi być zgodne z Twoimi oczekiwaniami.
3. Wydaje mi się że pisałem już o nazwach zmiennych a Twoje dalej są mało zrozumiałe. Dobra nazwa zmiennej "sama się komentuje". 
Moim zdaniem użyłeś zmiennej Buzz raz jako nazwę pinu a raz jako informację że buzer ma pracować. Użyj symulatora - usuń część programu odczytującą temperaturę i wyświetlanie. Temperaturę możesz zmieniać wpisując wartość do zmiennej z poziomu symulatora.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#16
Dzięki wszystkim za pomoc. Temat udało mi się ogarnąć za pomocą dodatkowej zmiennej. działa tak jak chciałem. Temat uważam za zamknięty.
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości