Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
-
Dadasys
- Příspěvky: 18
- Registrován: 17 dub 2020, 14:52
- Reputation: 0
Příspěvek
od Dadasys » 30 dub 2020, 12:52
Přeci jen je potřeba doladit jednu drobnost. Po zapnutí do sítě se motor točí bez ohledu na ldr čidlo a polohu dveří. Dumám, jak docílit toho, aby motor po zapnutí stál až do prvního čtení světla..
Kód: Vybrat vše
const int EnMotorPin = 9; // enable motor - pin 9 PWM
const int CloseDoorPin = 8; // direction close motor - pin 8
const int OpenDoorPin = 7; // direction open motor - pin 7
const int photocellPin = A0; // photocell connected to analog 0
const long eventTime_1_LDR = 20000; // 20 vteřin
unsigned long previousTime_1 = 0;
int photocellVal; // analog reading of the photocel
bool daylight = true; // daylight status
int darkthreshold = 20;
int daythreshold = 350;
int systemState = 0;
int SPEED = 220;
int bottomSwitchPin = 2; // Reed switches top and bottom of coop door
int topSwitchPin = 4;
bool topSwitchState; // true if door is up
bool bottomSwitchState; // true if door is down
void setup() {
Serial.begin(9600);
pinMode(bottomSwitchPin, INPUT);
pinMode(topSwitchPin, INPUT);
pinMode(EnMotorPin, OUTPUT);
pinMode(CloseDoorPin, OUTPUT);
pinMode(OpenDoorPin, OUTPUT);
}
void loop() {
systemState = 0;
unsigned long currentTime = millis();
if ( currentTime - previousTime_1 >= eventTime_1_LDR) {
photocellVal = analogRead(photocellPin); // read inputs
previousTime_1 = currentTime;
}
if (photocellVal > daythreshold)
{
daylight = true;
}
if (photocellVal < darkthreshold)
{
daylight = false;
}
topSwitchState = digitalRead(topSwitchPin);
bottomSwitchState = digitalRead(bottomSwitchPin);
// read system status
if (daylight == true && topSwitchState == true)
{
systemState = 0; // motor stop
}
if (daylight == true && topSwitchState == false)
{
systemState = 1; // drive door up
}
if (daylight == false && bottomSwitchState == true)
{
systemState = 0; // motor stop
}
if (daylight == false && bottomSwitchState == false)
{
systemState = 2; // drive door down
}
DispVals();
switch (systemState) {
case 0: // motor stop
digitalWrite(CloseDoorPin, LOW);
digitalWrite(OpenDoorPin, LOW);
analogWrite(EnMotorPin, 0);
break;
case 1: //drive door up
digitalWrite(CloseDoorPin, LOW);
digitalWrite(OpenDoorPin, HIGH);
analogWrite(EnMotorPin, SPEED);
break;
case 2: // drive door down
digitalWrite(CloseDoorPin, HIGH);
digitalWrite(OpenDoorPin, LOW);
analogWrite(EnMotorPin, SPEED);
break;
default:
digitalWrite(CloseDoorPin, LOW);
digitalWrite(OpenDoorPin, LOW);
analogWrite(EnMotorPin, 0);
break;
}
}
void DispVals()
{
Serial.print("topSW ");
Serial.print(topSwitchState);
Serial.print("\t");
Serial.print("botSW ");
Serial.print(bottomSwitchState);
Serial.print("\t");
Serial.print("PhotoVal ");
Serial.print(photocellVal);
Serial.print("\t");
Serial.print("daylight ");
Serial.print(daylight);
Serial.print("\t");
Serial.print("systemState ");
Serial.print(systemState);
Serial.print("\t");
if (systemState == 0)
{
Serial.println("\t door stopped");
}
if (systemState == 1)
{
Serial.println("\t door driving up");
}
if (systemState == 2)
{
Serial.println("\t door driving down");
}
}
-
kiRRow
- Příspěvky: 1170
- Registrován: 07 kvě 2019, 07:03
- Reputation: 0
- Bydliště: Opava
Příspěvek
od kiRRow » 30 dub 2020, 13:12
V setupu, po tom co nastavíš inputy a outputy, tam musíš nastavit výstupy tak aby se ti motor netočil. Ideálně by měl provést třeba otevření a zastavit se, aby po startu byl vždy v jedné a určité poloze - jakože něco jako kalibrace.
-
BigSandy
- Příspěvky: 220
- Registrován: 23 zář 2017, 07:09
- Reputation: 0
Příspěvek
od BigSandy » 02 kvě 2020, 02:25
Jen jsem to tak rychlo prolit a používáš jen modul času DS3231?
Jak jsi s tým spokojený.
Já otvíraní kurníku dělal už před 5 roky take s hodinami a po roce, když jsem nacházel chrápat slepice venku to honem předělával na fotoodpor GL5528.
Přes zimu už sedi slipky v 17:30 hod v kurníku a přes leto ještě ve 20:30 litaji po zahradě
-
Axamith
- Příspěvky: 533
- Registrován: 09 srp 2017, 08:17
- Reputation: 0
-
Kontaktovat uživatele:
Příspěvek
od Axamith » 02 kvě 2020, 07:49
Okrajově sleduji debatu o slepicích a pořád nechápu, proč se tady řeší časové rozsahy, i když slunce zapadá v danou dobu, pořád zde vstupuje faktor zatažené oblohy. Já bych to také řešil sledování konkrétních světelných podmínek.
-
Dadasys
- Příspěvky: 18
- Registrován: 17 dub 2020, 14:52
- Reputation: 0
Příspěvek
od Dadasys » 02 kvě 2020, 08:15
kiRRow píše: ↑30 dub 2020, 13:12
V setupu, po tom co nastavíš inputy a outputy, tam musíš nastavit výstupy tak aby se ti motor netočil.
Zkoušel jsem nastavit podle SZ, ale pořád se točí. Zatím řeším přidáním delay v setupu..
-
pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
-
Kontaktovat uživatele:
Příspěvek
od pavel1tu » 02 kvě 2020, 12:06
Axamith píše: ↑02 kvě 2020, 07:49
Okrajově sleduji debatu o slepicích a pořád nechápu, proč se tady řeší časové rozsahy, i když slunce zapadá v danou dobu, pořád zde vstupuje faktor zatažené oblohy. Já bych to také řešil sledování konkrétních světelných podmínek.
Kamarád to tak měl a zrušil to,
u nás pod horama se často zatáhne na chvilku a pak zase roztáhne a stávalo se, že se dveře zavřely a slepice byly venku.
Teď z toho má "hybrida" a je spokojenější.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
-
pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
-
Kontaktovat uživatele:
Příspěvek
od pavel1tu » 02 kvě 2020, 14:46
Dadasys píše: ↑02 kvě 2020, 08:15
Zkoušel jsem nastavit podle SZ, ale pořád se točí. Zatím řeším přidáním delay v setupu..
A nepoužíváš relátka co fungují inverzně ?
Tj. když pošleš "1" relé rozepne, když "0" relé sepne ?
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
-
Dadasys
- Příspěvky: 18
- Registrován: 17 dub 2020, 14:52
- Reputation: 0
Příspěvek
od Dadasys » 02 kvě 2020, 14:50
Nemám tam žádné relé.. Jede to pres
l298n
Odesláno z mého Lenovo P2a42 pomocí Tapatalk
-
pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
-
Kontaktovat uživatele:
Příspěvek
od pavel1tu » 02 kvě 2020, 17:41
No a jak máš ten setup()
Hned po deklaraci co je výstup,
musíš tam nastavit nějaký směr, já mám směr LOW, LOW což je asi STOP a ovládací PWM na nulu - pro jistotu.
Máš to dobře zapojené ?
Tohle mám na stole, sice s jiným můstkem, mám velký motor, a funguje mi to.
https://howtomechatronics.com/tutorials ... -h-bridge/
Já tedy ještě propojil GND mezi zdroji 5/12V mám je nezávislé.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
-
Dadasys
- Příspěvky: 18
- Registrován: 17 dub 2020, 14:52
- Reputation: 0
Příspěvek
od Dadasys » 02 kvě 2020, 20:10
Celý kód je o několik příspěvků výš. Napájí se 12V ten můstek a z něj je 5V výstup do arduina. Zapojení kdyžtak nakreslím. D
Odesláno z mého Lenovo P2a42 pomocí Tapatalk
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 44 hostů