Pomysł na komputer akwariowy
Moderator: Administracja
Kod: Zaznacz cały
#include <Servo.h>
Servo servo1; // create servo object to control a servo
Servo servo2; // create servo object to control a servo
Servo servo3; // create servo object to control a servo
Servo servo4; // create servo object to control a servo
//###############################//
float dawka1 = 8; // dawka 1 pompy w ml
float dawka2 = 2; // dawka 2 pompy w ml
float dawka3 = 1; // dawka 3 pompy w ml
float dawka4 = 4; // dawka 4 pompy w ml
float poj1 = 1; // ilosc pompowanej cieczy na 1 ruch (1 pompy w ml)
float poj2 = 1; // ilosc pompowanej cieczy na 1 ruch (2 pompy w ml)
float poj3 = 1; // ilosc pompowanej cieczy na 1 ruch (3 pompy w ml)
float poj4 = 1; // ilosc pompowanej cieczy na 1 ruch (4 pompy w ml)
int cykl1 = 24; // odstep czasu w jakim ma byc podawana dawka w h (pompa 1)
int cykl2 = 24; // odstep czasu w jakim ma byc podawana dawka w h (pompa 2)
int cykl3 = 24; // odstep czasu w jakim ma byc podawana dawka w h (pompa 3)
int cykl4 = 24; // odstep czasu w jakim ma byc podawana dawka w h (pompa 4)
int zab = 1; // wyprzedzenie z jakim mam zostac uwolniona blokada cyklu w h
int servo1_min = 0;
int servo1_max = 180;
int servo2_min = 0;
int servo2_max = 180;
int servo3_min = 0;
int servo3_max = 180;
int servo4_min = 0;
int servo4_max = 180;
//##################################
int poz = 0;
int poz2 = 0;
int stat = 1;
int ruch = 0;
int ruchy = 0;
int ruchy2 = 0;
void setup()
{
servo1.attach(2);
servo2.attach(3);
servo3.attach(4);
servo4.attach(5);
servo1.write(servo1_min);
servo2.write(180-servo2_min);
servo3.write(servo3_min);
servo4.write(180-servo4_min);
delay(1000);
}
void loop()
{
// przeliczanie dawek na ilosc ruchow serw w pompach / wysyla dane do serwa
if (stat == 1) {ruchy = (dawka1 / poj1)+1;poz2 = map(poz,0,180,servo1_min,servo1_max) ;servo1.write(poz2);}
if (stat == 2) {ruchy = dawka2 / poj2;poz2 = map(poz,0,180,servo2_min,servo2_max) ;servo2.write(180-poz2);}
if (stat == 3) {ruchy = dawka3 / poj3;poz2 = map(poz,0,180,servo3_min,servo3_max) ;servo3.write(poz2);}
if (stat == 4) {ruchy = dawka4 / poj4;poz2 = map(poz,0,180,servo4_min,servo4_max) ;servo4.write(180-poz2);}
// zlicza ruchy pompy
if(poz == 0){ruchy2= ruchy2 + 1;}
// powoduje ruch serva
if (poz == 0 ) { ruch = 0;} else if (poz == 180) {ruch = 1;}
if (ruch == 0 & stat > 0) { poz = poz++;} else if (ruch == 1 & stat > 0) { poz = poz--;}
if (ruchy == ruchy2){stat=stat+1;ruchy2 = 0;}
if (stat == 5){stat = 0 ;}
delay(4);
}