Arduino Dozownik Nawozu Akwarystyczny

Masz problem z Arduino? Tutaj możesz szukać pomocy.
Awatar użytkownika
wojtekizk
Starszy majsterkowicz
Posty: 311
Rejestracja: 19 lis 2013, 10:54
Lokalizacja: Bydgoszcz

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: wojtekizk » 21 mar 2014, 19:08

Witam
Chłopie pomyśl chwilkę sam... przecież wystarczy, że zmiernisz ten fragment w petli loop:
for(int i=0;i<4;i++)
na to:
for(int i=0;i<2;i++)
..szczyt lenistwa :-) (położyć się na fajnej kobiecie i czekać na trzęsienie ziemi :-)
Pozdrawiam

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 22 mar 2014, 12:46

Ok sprawdze wszytko jutro wieczorem
Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 24 mar 2014, 16:28

Witam serwo pracuje bez przerwy nie przestaje pracować po podaniu dawki

Kod: Zaznacz cały

#include <Servo.h>
Servo servo[4];                         // defincja 4 serw 
int smin[4];                            // w sumie nie wiem po co min i max
int smax[4];
int ruchy;                              // ilośc ruchów do obliczenia 
float dawki[4]={4, 5.6, 3, 2.4};        // przykładowe dawki
float poj[4]={0.4, 0.8, 0.5, 0.3};      // przykładowe pojemności dla jednego ruchu
//--------------------------------------------------
void setup()
{
  for(int i=1;i<=1;i++)                  // w pętli podpinamy 4 serwa do programu
  {
    smin[i-1]=0;                         // nie wiem po co skoro serwo ma wyk. ruch od 0-180 st.
    smax[i-1]=180;                       // nie wiem po co skoro serwo ma wyk. ruch od 0-180 st.
    servo[i-1].attach(i);                // podpinamy serwa do pinów 1,2,3,4
  }  
}  
// -------------------------------------------------
void loop()
{
  for(int i=0;i<1;i++)
    {
    ruchy=(int)(dawki[i]/poj[i]);      // mi wychodzi odpowiednio: 10, 7, 6, 8 ruchów :-) 
    for(int k=1;k<=ruchy;k++)
      {
      servo[i].write(180);delay(2000); // naciągamy strzykawkę, czekamy, (tu dobierz czas dla delay)
      servo[i].write(0);delay(2000);   // wypluwamy ze strzykawki, czekamy (tu dobierz czas)
      }
   // ... i tak dla każdego z 4 serw 
   }
}
// --- koniec ---------------------------------------
Awatar użytkownika
wojtekizk
Starszy majsterkowicz
Posty: 311
Rejestracja: 19 lis 2013, 10:54
Lokalizacja: Bydgoszcz

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: wojtekizk » 24 mar 2014, 18:00

Witam
ech... przecież o to chodzi... potem w programie będziesz wywoływał to raz na dobę... teraz sprawdzasz pracę serw w niekończącej się pętli. Myśl chłopie :-) Zrobiłeś właśnie mały kroczek człowieka, a wielki krok dla ludzkości :-) To co jest w ciele loop-a będzie potem funkcją dozuj(), dozowanie, nawożenie, czy jakoś tam...
Mam nadzieję, że ustawianie działek w setupie (wcześniejszy kod) działa poprawnie, jeśli tak, to teraz pomyśl nad zegarem RTC :-)
Jak sobie nie poradzisz to pisz.
Pozdrawiam
Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 27 mar 2014, 22:02

witam
mam problem z modułem rtc okazało się ze moja płytka Leonardo, wykorzystuje piny D2 i D3 do komunikacji I2C a nie jak w uno A4 i A5 , można to jakoś zmienić bo będę potrzepał tych pinów;]
Ostatnio zmieniony 27 mar 2014, 22:21 przez Dabalwwy, łącznie zmieniany 1 raz.
Awatar użytkownika
wojtekizk
Starszy majsterkowicz
Posty: 311
Rejestracja: 19 lis 2013, 10:54
Lokalizacja: Bydgoszcz

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: wojtekizk » 27 mar 2014, 22:11

Witam
Kurcze, już powinieneś wiedzieć - jest problem - OK... a gdzie jest kod? :-)
Pozdrawiam
Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 27 mar 2014, 23:35

z tymi pinami sobie poradziłem leonardo ma socjalne piny sda i scl program na razie wygląda tak:

Kod: Zaznacz cały

#include <Servo.h>
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>


RTC_DS1307 RTC;
LiquidCrystal lcd(13,12,11,10,9,8);



Servo servo[4];                         // defincja 4 serw 
int smin[4];                            // w sumie nie wiem po co min i max
int smax[4];
int ruchy;                              // ilośc ruchów do obliczenia 
float dawki[4]={4, 5.6, 3, 2.4};        // przykładowe dawki
float poj[4]={0.4, 0.8, 0.5, 0.3};      // przykładowe pojemności dla jednego ruchu
//--------------------------------------------------
void setup()
{
   Serial.begin(9600);
    Wire.begin();
    RTC.begin();
    lcd.begin(16,4);
    
  for(int i=1;i<=1;i++)                  // w pętli podpinamy 4 serwa do programu
  {
    //smin[i-1]=0;                         // nie wiem po co skoro serwo ma wyk. ruch od 0-180 st.
    //smax[i-1]=180;                       // nie wiem po co skoro serwo ma wyk. ruch od 0-180 st.
    servo[i-1].attach(i);                // podpinamy serwa do pinów 1,2,3,4
  }  
}  
// -------------------------------------------------
void loop()
{
   DateTime now = RTC.now();
    
    lcd.setCursor(6,0); 
  lcd.print("ZEGAR");
    
  lcd.setCursor(4,1); 
  lcd.print(now.year(), DEC);
  lcd.print('/');
  lcd.print(now.month(), DEC);
  lcd.print('/');
  lcd.print(now.day(), DEC);
  lcd.print(' ');
  lcd.setCursor(0,2);
  lcd.print(now.hour(), DEC);
  lcd.print(':');
  lcd.print(now.minute(), DEC);
  lcd.print(':');
  lcd.print(now.second(), DEC);
  
  
  if((now.hour()==15) 
    {
  for(int i=0;i<1;i++)
    {
    ruchy=(int)(dawki[i]/poj[i]);      // mi wychodzi odpowiednio: 10, 7, 6, 8 ruchów :-) 
    for(int k=1;k<=ruchy;k++)
      {
      servo[i].write(180);delay(500); // naciągamy strzykawkę, czekamy, (tu dobierz czas dla delay)
      servo[i].write(0);delay(500);   // wypluwamy ze strzykawki, czekamy (tu dobierz czas)
      }
   // ... i tak dla każdego z 4 serw 
   }}
}
Awatar użytkownika
wojtekizk
Starszy majsterkowicz
Posty: 311
Rejestracja: 19 lis 2013, 10:54
Lokalizacja: Bydgoszcz

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: wojtekizk » 28 mar 2014, 08:17

Witam
Dobra, teraz RTC na tapetę.
Wyświetla Ci głupoty, bo ma nieustawiony czas. Zajrzyj do samej biblioteki tam stoi taka linia, którą musisz dodać w setupie:

Kod: Zaznacz cały

RTC.adjust(DateTime(__DATE__, __TIME__)); 
Co się tam dzieje? Ano do modułu jest "przepisywany" czas z Twojego komputera. Od teraz jesli masz bateryjkę w module to sam moduł odlicza czas niezależnie od Arduino.
Ale Uwaga !!! Tą linijkę w setupie dajesz tylko raz lub tylko wtedy gdy chcesz aktualizować czas, bo np. po miesiącu zegar spóźnia Ci się np. 20 sekund :-)
Czyli wgrywasz program do Arduino a potem zaremuj tą linijkę:

Kod: Zaznacz cały

// RTC.adjust(DateTime(__DATE__, __TIME__)); 
... i wszystko musi śmigać :-)
Pozdrawiam
ps. Ja uzywam Leonardo (klon z firmy And-Tech) i dopiero teraz zauważyłem, że oni zastosowali zworki aby zachować zgodność z np. UNO w zakresie pinów A4 i A5. U mnie SDA i SCL można łączyć po staremu, więc nawet nie zauważyłem, że oryginał ma inaczej. Człowiek uczy się całe życie... i głupi umiera :-)
Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 30 mar 2014, 19:30

Z tym rtc to wiedzialem o co tam chodzi ze trzeba raz ustawic czas i smiga, dobrze odlicza teraz tylko nie wiem jak ma wygladac if zeby sprawdzalo godzine i minuty jednoczesnie
Awatar użytkownika
wojtekizk
Starszy majsterkowicz
Posty: 311
Rejestracja: 19 lis 2013, 10:54
Lokalizacja: Bydgoszcz

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: wojtekizk » 31 mar 2014, 13:58

Witam

Kod: Zaznacz cały

if((now.hour()==15 && now.minute()==10)  // 15.10 pociąg do Yumy
Pozdrawiam
Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 1 kwie 2014, 07:59

Dzięki jutro zajmę się reszta i zobaczymy jak to wyjdzie
Dabalwwy
Młodszy majsterkowicz
Posty: 41
Rejestracja: 4 wrz 2013, 11:10

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: Dabalwwy » 1 kwie 2014, 14:10

Mam jeszcze jedna prośbę proszę o pomoc w napisaniu czegoś takiego jak funkcja ustaw(); Tylko żeby można było w niej ustawić czas mam dwie zmienne int h i s , chce zęby po wykonaniu funkcji wstaw wyświetlała się funkcja czas i zęby na przykład przycisk można była ja ostawić i zatwierdzić
Awatar użytkownika
wojtekizk
Starszy majsterkowicz
Posty: 311
Rejestracja: 19 lis 2013, 10:54
Lokalizacja: Bydgoszcz

Re: Arduino Dozownik Nawozu Akwarystyczny

Post autor: wojtekizk » 7 kwie 2014, 08:57

Witam
Nie mam teraz za wiele czasu, cóż wiosna... ale tak na szybko poczytaj w dziale tutorials post "gotowiec1 "
Pozdrawiam
ODPOWIEDZ

Strony partnerskie: