Aktuálne pracujem na kurníku pre sliepočky, a chcem ich automaticky zatvárať, aj otvárať. Používam motor STEP MOTOR 28BYJ-48, 2 vypínače (horný a dolný) + senzor svetla.
Príklad: Ak začne byť vidno, zapni motor, až dokedy nebude stlačené horné tlačidlo, následne motor vypni. Teraz čakaj, dokedy bude svetla málo, zapni motor a po stlačení dolného tlačidla, vypni, a čakaj na ráno........
Všetko by bolo super, v podstate, fungovať mi to funguje, ale prerušovane.. nakoľko to stále overuje podmienky, a je medzi tým pauza, ktorú nejak neviem ovplyvniť..
Kód: Vybrat vše
void loop()
{
uint16_t lux = lightMeter.readLightLevel();
Serial.print("Light: ");
Serial.print(lux);
delay(1);
if ( lux > 700){ //ak svetlo je vacie ako, chod hore, dokedy nestlacim tlacidlo hore
dirStatus =1;
}
if ( lux < 10){ //ak menšie, chod dole, dokedy nestlacim tlacidlo dole
dirStatus = 2;
}
//if (digitalRead(dole) == HIGH && digitalRead(hore) == LOW) { // if BOTH the switches read HIGH podmienka pre vypnutie motora
//dirStatus =3;
}
if(dirStatus ==1){
poleStep++;
driveStepper(poleStep);
}else if(dirStatus ==2){
poleStep--;
driveStepper(poleStep);
}else{
driveStepper(8);
}
if(poleStep>7){
poleStep=0;
}
if(poleStep<0){
poleStep=7;
}
// delay(1);
}// loop
void driveStepper(int c)
{
digitalWrite(Pin1, pole1[c]);
digitalWrite(Pin2, pole2[c]);
digitalWrite(Pin3, pole3[c]);
digitalWrite(Pin4, pole4[c]);
}//driveStepper end here
je tu void, ktorý musí byť vždy spustený,je to možné ták, aby to neskákalo, respektíve, ako nadradím void driveStepper (int c)? alebo máte niekto knižnicu k tomuto motoru, poprípade lepší kód ako ja?
Vďaka moc.