Skocz do zawartości

Bolto

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O Bolto

  • Ranga
    1/10
  1. #define LED1 A3 unsigned long aktualnyCzas=0; unsigned long zapamietanyCzasLED1=0; unsigned long zapamietanyCzasLED2=0; #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 13 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int swiatlo=0; int podswietlenie=0; int wilg=0; int wilgproc=0; void setup() { lcd.init(); lcd.init(); lcd.backlight(); Serial.begin(9600); pinMode(A3, OUTPUT); lcd.clear(); } void loop() { sensors.requestTemperatures(); wilg=analogRead(A6); wilgproc = map(wilg,105,545,100,0); swiatlo=analogRead(A0); lcd.setCursor(2,0); lcd.print("Wilgotnosc Gleby:"); lcd.setCursor(9,1); lcd.print(wilgproc); lcd.setCursor(12,1); lcd.print("%"); lcd.setCursor(0,2); lcd.print("Temperatura Pokoju:"); lcd.setCursor(6,3); lcd.print(sensors.getTempCByIndex(0),1); lcd.setCursor(10,3); lcd.print("st.C"); delay(1000); if (swiatlo < 4) { lcd.noBacklight(); } else { lcd.backlight(); } aktualnyCzas = millis(); if(wilgproc <= 30){ if (aktualnyCzas - zapamietanyCzasLED1 >= 30000UL) { zapamietanyCzasLED1 = aktualnyCzas; digitalWrite(LED1, HIGH); } else if(aktualnyCzas - zapamietanyCzasLED2 >= 10000UL) { zapamietanyCzasLED2 = aktualnyCzas; digitalWrite(LED1, LOW); } } } Napisałem coś takiego działa to tak że po 30 sekundach od włączenia programu( jeśli warunek jest spełniony) załącza się zasilanie na sekundę a ja chciałbym żeby po spełnieniu warunku wilgproc <=30 załączyła się dioda na 30 sekund i była wyłączona przez 10 pytanie brzmi co robię nie tak
  2. #define LED1 3 int stanLED1 = LOW; int stanLED2 = HIGH; unsigned long aktualnyCzas = 0; unsigned long zapamietanyCzasLED1 = 0; unsigned long zapamietanyCzasLED2 = 0; void setup(){ Serial.begin(9600); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop(){ aktualnyCzas = millis(); //Pobierz liczbe milisekund od startu if (aktualnyCzas - zapamietanyCzasLED1 >= 1000UL) { //Jeśli różnica wynosi ponad 1 sekund zapamietanyCzasLED1 = aktualnyCzas; //Zapamietaj aktualny czas stanLED1 = !stanLED1; //Zmieniamy stan diody na przeciwny digitalWrite(LED1, stanLED1); //ustawiamy nowy stan na diodzie } else if (aktualnyCzas - zapamietanyCzasLED2 >= 3000UL) { //Jeśli różnica wynosi ponad 0,5 sekundy zapamietanyCzasLED2 = aktualnyCzas; //Zapamietaj aktualny czas stanLED2 = !stanLED2; //Zmieniamy stan diody na przeciwny digitalWrite(LED1, stanLED2); //ustawiamy nowy stan na diodzie } } Tak to się prezentuje niestety obawiam się że słabo opanowałem materiał z tej części i zrobiłem straszną głupotę więc proszę o wyrozumiałość z góry dziękuję i pozdrawiam.
  3. Witam czy jest ktoś w stanie mi wytłumaczyć w jaki sposób przerobić program z tej części tak aby migać jedną diodą tylko dwoma różnymi czasami przykładowo załączyć na sekundę i wyłączyć na dwie
×
×
  • Utwórz nowe...