Skocz do zawartości

gintur

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna

Osiągnięcia użytkownika gintur

Aktywny debiutant

Aktywny debiutant (2/19)

  • To już rok!
  • To już 5 lat!

Odznaki

1

Reputacja

  1. Witam. Chciałbym zrobić automatyczną podmianę wody sterowaną przez Arduino Nano. Plan jest taki ;pojemnik 20 L,2x czujnik poziomu,2x pompa,2 x elektrozawór.W pojemniku zamontowane są 2 pompki oraz 2 czujniki poziomu min i poziom max .Działanie programu: 1.Start 2.Otwiera się elektrozawór E1 wody brudnej. 3.Zawór ma się otworzyć na 1min potem ma się zamknąć. 4.Napełniony zbiornik przy pomocy czujnika Poz.Max uruchamia pomkę P1 która opróznia zbiornik do poziomu min 5.Czujnik Poz Min wyłącza pompke P1 i tym samym załącza elektrozawór wody czystej E2 6.Uruchomiony elektrozawór E2 wpuszcza wode do zbiornika w okreslonym czasie albo do momentu kiedy czujnik poziomu Max go wyłączy i tym samym załączy pompke P2 która oprózni wode ze zbiornika do poziomu czujnika Min który wyłączy pompkę . 7 Koniec programu. Pomysł był taki aby Arduino wykonało 2 etapy 1.wpuścić wodę brudną i odpompować 2.napełnić pojemnik wodą czystą a następnie ją odpompować . Program ,który próbuje zlepić ,wykonuje się tak do pkt.5 opisu no i zaczynaja się schody jak to dalej pisać . Czy możliwe jest aby 2 pompy były obsłużone przez tylko 2 czujniki poziomu? Czy każda z pomp musi mieć swój oddzielny czujnik poz min/max czyli łącznie 4 szt?Nie mogę sobie właśnie z tym poradzić aby czujniki w etapie pierwszym (woda brudna ) nie sterowały w tym samym czasie pompą i elektrozaworem w etapie drugim (woda czysta) bo póki co tak właśnie jest . Pomoże ktoś? [code] int czujMin; // czujnik min int czujMax; //czujnik max bool E1; //elektrozawór wody brudnej bool E2; //elektrozawór wody czystej void setup() { pinMode(8,OUTPUT); //wyj.na elektrozawór E2 pinMode(6,INPUT_PULLUP); //przycisk START programu pinMode(7,OUTPUT); //wyj.na elektrozawór E1 pinMode(4,OUTPUT); // wyj. na pompe wody brudnej pinMode(3,INPUT_PULLUP); // czujnik poziomu max pinMode(5,INPUT); //czujnik poziomu min digitalWrite(7,LOW); digitalWrite(8,LOW); E1=false; E2= false; } void loop(){ if(digitalRead(6)==LOW) {digitalWrite(7,HIGH); delay(10000);} else{digitalWrite(7,LOW);} //delay(10000);} czujMax = digitalRead(3); czujMin = digitalRead(5); if(!czujMax==HIGH){E1 = true;} if(czujMin==HIGH){ E1 = false; } if(E1){ digitalWrite(4,HIGH);} else{digitalWrite(4,LOW);} if(czujMin==LOW && !czujMax==HIGH) {E2=true;} if(E2){ digitalWrite(8,HIGH);} else{digitalWrite(8,LOW);} } [/code]
  2. Witam zmajstrowałem sobie na bazie arduino nano sterownik dwóch lamp LED. Kod który posiadam wyświetla godzinę ,date,temperature zasilacza,sygnał PWM wyrażony w procentach.Kod działa bez problemów. Wgrywając kod do arduino pobiera on sobieaktualny czas i datę z laptopa.Chciałbym to zmienić i zrobić tak aby datę i czas można było ustawić za pomocą np. 3 przycisków.Znalazłem taki kod ,który wyswietla czas i date i mogę ustawić je przyciskami.Postanowiłem' jakby'' połączyć ze sobą 2 kody i te polecenia które odpowiadają za nastawę czasu i daty przepisałem do mojego pierwszego kodu ,niestety kod nie chce się skompilować .Czy mógłby ktoś mi podpowiedzieć gdzie jest błąd? #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define BACKLIGHT_PIN LiquidCrystal_I2C lcd(0x3F,16,2); #include "RTClib.h" #include<OneWire.h> #define ONE_WIRE_BUS 2 RTC_DS1307 RTC; OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int LED1 = 3; //lampa nr 1 int LED2 = 5; // lampa nr 2 int GODZ; int MIN; int SEC; int mocD1; // do syg PWM int T = 2; int Ton=45; //temp wł/wył wentylatora int Toff=27; //temp wł/wył wentylatora int P1=6; // menu od ustawiania czasu int P2=7; // przycisk + int P3=8; // przycisk - int hourupg; int minupg; int yearupg; int monthupg; int dayupg; int menu=0; void setup() { DateTime now = RTC.now(); lcd.setBacklight(HIGH); lcd.init(); lcd.begin(16,2); lcd.clear(); Wire.begin(); //czas.adjust(DateTime(__DATE__, __TIME__)); pinMode(P1,INPUT); pinMode(P2,INPUT); pinMode(P3,INPUT); pinMode(T,INPUT); // termometr pinMode(9,OUTPUT);//wentylator pinMode(3,OUTPUT); //lampa led 1 pinMode(5,OUTPUT); //lampa led 2 Serial.begin(9600); sensors.begin(); RTC.begin(); //if(! RTC.isrunning()) { lcd.println("RTC is NOT running!"); // RTC.adjust(DataTime(_DATE_,_TIME_)); } int menu=0; } void loop() { sensors.requestTemperatures(); lcd.setCursor(11,0); lcd.print(sensors.getTempCByIndex(0)); if ((sensors.getTempCByIndex(0))> Ton) { digitalWrite(9,LOW); } if ((sensors.getTempCByIndex(0)) < Toff) { digitalWrite(9,HIGH); } int CZAS = (now.hour()*60+now.minute());// aktualny czas int dzienG = 13; // rozpoczęcie oświetlenia w godz int dzienM = 00; // w minutach int nocG = 22; // ustawienie koniec oswietlenia w godz int nocM = 00; // w minutach int maxD1 = 60; // ilosc krokow z tablicy int STEP = 1; int ZMIANA =60; //dlugosc rozjasniania lub sciemniania tutaj wynosi 60 min int czas1=(dzienG*60+dzienM); //obliczenie czas rozjasnienia int czas2=(nocG*60+nocM); //obl czasu gaszenia int GODZ=now.hour(); int MIN=now.minute(); int SEC=now.second(); //Serial.print(sensors.requestTemperatures()); static int D1; int mocD1[61] = { 0,5,8,11,14, 18,20,25, 28,30,32,36,40,46,50, 56,58,60,62,68,72,74,78, 80,84,86,90,94,98,106, 112,118,120,124,128,130, 136,138,142,146,150,156,160,164, 172,176,182,184,192,200, 204,208,216,220,228,232,238, 240,244,248,254 }; if (CZAS<czas1) { D1= 0; } if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA))) { D1 = ((CZAS-czas1)/STEP); } if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA))) { D1 = maxD1; } if (((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2)) { D1 = ((czas2-CZAS)/STEP); } if (czas2<=CZAS) { D1 = 0; } analogWrite(LED1,mocD1[D1]); analogWrite(LED2,mocD1[D1]); lcd.setCursor(9,1); lcd.print("PWM"); lcd.print(' '); lcd.print((D1*100/maxD1)); lcd.print("%"); if(digitalRead(P1)) { menu=menu+1; } if(menu==0) { DisplayDateTime(); } if (menu==1) { DisplaySetHour(); } if (menu==2) { DisplaySetMinute(); } if (menu==3) { DisplaySetYear(); } if (menu==4) { DisplaySetMonth(); } if (menu==5) { DisplaySetDay(); } if (menu==6) { StoreAgg(); delay(500); menu=0; } delay(100); } void DisplayDateTime() { DateTime now = RTC.now(); lcd.setCursor(0,1); //lcd.print("Hour"); if (now.hour()<=9) { lcd.print("0"); } lcd.print(now.hour(),DEC); hourupg=now.hour(); lcd.print(":"); if(now.minute()<=9) { lcd.print("0"); } lcd.print(now.minute(),DEC); minupg=now.minute(); lcd.print(":"); if (now.second()<=9) { lcd.print("0"); } lcd.print(now.second(),DEC); lcd.setCursor(0,0); //lcd.print("Date"); if (now.day()<=9) { lcd.print("0"); } lcd.print(now.day(),DEC); dayupg=now.day(); lcd.print("/"); if (now.month()<=9) { lcd.print("0"); } lcd.print (now.month(),DEC); monthupg=now.month(); lcd.print("/"); lcd.print(now.year(),DEC); yearupg=now.year(); } void DisplaySetHour() { lcd.clear(); DateTime now = RTC.now(); if(digitalRead(P2)==HIGH) { if(hourupg==23) { hourupg=0; } else { hourupg=hourupg+1; } } if(digitalRead(P3)==HIGH) { if(hourupg==0) { hourupg=23; } else {hourupg=hourupg-1; } } lcd.setCursor(0,0); lcd.print("Set time:"); lcd.setCursor(0,1); lcd.print(hourupg,DEC); delay(200); } void DisplaySetMinute() { lcd.clear(); if(digitalRead(P2)==HIGH) { if(minupg==59) { minupg=0; } else { minupg=minupg+1; } } if(digitalRead(P3)==HIGH) { if(minupg==0) { minupg=59; } else { minupg=minupg-1; } } lcd.setCursor(0,0); lcd.print("Set Minutes:"); lcd.setCursor(0,1); lcd.print(minupg,DEC); delay(200); } void DisplaySetYear() { lcd.clear(); if(digitalRead(P2)==HIGH) { yearupg=yearupg+1; } if(digitalRead(P3)==HIGH) { yearupg=yearupg-1; } lcd.setCursor(0,0); lcd.print("Set Year:"); lcd.print(yearupg,DEC); delay(200); } void DisplaySetMonth() { lcd.clear(); if(digitalRead(P2)==HIGH) { if (monthupg==12) { monthupg=1; } else { monthupg=monthupg+1; } } if (digitalRead(P3)==HIGH) { if (monthupg==1) { monthupg=12; } else { monthupg=monthupg-1; } } lcd.setCursor(0,0); lcd.print("Set Month:"); lcd.setCursor(0,1); lcd.print(monthupg,DEC); delay(200); } void DisplaySetDay() { lcd.clear(); if(digitalRead(P2)==HIGH) { if(dayupg==31) { dayupg=1; } else { dayupg=dayupg+1; } } if(digitalRead(P3)==HIGH) { if (dayupg==1) { dayupg=31; } else { dayupg=dayupg-1; } } lcd.setCursor(0,0); lcd.print("Set Day:"); lcd.setCursor(0,1); lcd.print(dayupg,DEC); delay(200); } void StoreAgg() { lcd.clear(); lcd.setCursor(0,0); lcd.print("SAVING IN"); lcd.setCursor(0,1); lcd.print("PROGRESS"); RTC.adjust(DateTime(yearupg,monthupg,dayupg,hourupg,minupg,0)); delay(200); }
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.