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.
-
luger
- Příspěvky: 197
- Registrován: 30 dub 2023, 11:06
Příspěvek
od luger » 31 kvě 2024, 11:45
Nedaří se mi odladit dvě podmínky za sebou a to mám prostudovat knihovnu ? Jsem odkojený Basicem (před 35 lety), musíte mě brát s velkou rezervou když něco nechápu.
Otázka je jednoduchá - proč vyhodnotí podmínku vzdálenosti a nevyhodnotí podmínku náklonu ???
Kód: Vybrat vše
zmerit_vzdalenost(); //změřit vzdálenost vpředu a uložit do "vzdalenost" - kmitání serva
if (test_naklonu()) { //kontrola náklonu pomocí gyroskopu vráceno true, takže je to naklopený
PIR (); //přejdi na PIR
}
else {
//vráceno false, takže je pavouk rovně
}
if (!Controller.isRunning()) { //Počkejte, dokud nebude ukončena akční skupina pohybu
if (vzdalenost > 160 ){
Controller.runActionGroup(TEREN_POKUS, 0);
-
kiRRow
- Příspěvky: 1240
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 31 kvě 2024, 15:04
On ji vyhodnotí, ale asi je výsledek false a tak to pošle do části podmínky, kde se nic neděje. Pokud něco ladíš, tak jak psal gilhad - ledky jsou fajn, nebo výpis do seriové linky
Kód: Vybrat vše
boolean test_naklonu () { // vyhodnocení náklonu z gyroskopu - při náklonu větším jak 20° v osách X nebo Y // funkce bude vracet boolean
gyroskop ();
if ((angle_x > 20 && angle_x < 235 ) or (angle_y > 20 && angle_y < 235 )){ // velký náklon = 1
Serial.println("naklon");
return true; // je to nakloněné
} else {
Serial.println("rovne");
return false; // není to naklonene
} // pohyb vodorovně - naklon = 0
}
//***************************************************************************************************************************************
//*****
-
kiRRow
- Příspěvky: 1240
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 31 kvě 2024, 15:13
Já taky začínal na BASICu, hrál jsem si pak s JavaScriptem, PHP, Delphi a C++ ... nějaké rozdíly tam jsou, ale základ je pořád stejný ... for je všude for a while všude while ... pokud se rozhoduji mezi buď a nebo, používám if, pokud vybírám jeden případ z 10ti používám switch/case, pokud z čísla 0-1024 potřebuji udělat 3situace používám if, elseif, else ...
-
kiRRow
- Příspěvky: 1240
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 31 kvě 2024, 15:19
jak vidím, tak ve složce s hlavním *.ino programem bude soubor LobotServoController.h a LobotServoController.cpp ... toto je knihovna a v ní pak hledej ty funkce jako runActionGroup a nebo isRunning atd ...
edit:
když je to include s uvozovkama, načítá soubor z lokální složky, pokud je s ostrýma závorkama, tak se prohledává hlavní složka knihoven, já ji mám třeba v dokumentech/arduino/libraries
jde tak potom třeba mít jednu knihovnu original pro 5programů a jednu skopírovanou upravenou pro jeden program speciálně
-
kiRRow
- Příspěvky: 1240
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 31 kvě 2024, 18:22
No na to se právě vkládají ty různé Serial.print a připojujou se ledky, abys věděl přesně kam se v tom programu ten procesor dostane.
Kód: Vybrat vše
void PIR () {
if (!Controller.isRunning()) { // Počkejte, dokud nebude ukončena akční skupina
Serial.println("pir by se melo spustit");
Controller.runActionGroup(LEHNOUT, 1); // lehnout
delay(400);
Controller.stopActionGroup(); // zastavit kroky
sonarServo.write (90,230,true); // zastavení serva
digitalWrite (10,LOW); // zhasnutí LED blesku
digitalWrite (11,LOW); // vynulování PIR
delay (1000);
start1:
if (( digitalRead(11) == HIGH) or (cekani >400 ) or (digitalRead(2) == HIGH)){ // čeká na PIR a zvuk nebo uplynutí určité doby
// v minutách ( x 60 )
pocitadlo = 0; // vynulování počtu kroků pavouka
cekani = 0; // vynulování doby čekání v PIR - cca ... min
}
else {
OLED ();
cekani = cekani + 1; // počítadlo čekání v PIR
//delay (10);
goto start1;
}
} else {
Serial.println("pir se nespusti");
}
}
pátrej dále
edit :
na displeji vidíš hodnotu nějaké proměnné ... ale při tom výpisu do sériové linky, nebo zápisu do led vidíš přesně místo programu
-
luger
- Příspěvky: 197
- Registrován: 30 dub 2023, 11:06
Příspěvek
od luger » 31 kvě 2024, 18:48
Díky, budu testovat. Ještě mám jeden drobný problém. Nevím jestli můžu mít připojený serial přes usb a zaroveň zapnout pavoučka. Abych něco neodpálil. Přece jenom jede na vyšším napětí (11,7 V). Zatím si na to dávám sakra pozor.
-
luger
- Příspěvky: 197
- Registrován: 30 dub 2023, 11:06
Příspěvek
od luger » 03 čer 2024, 17:51
Náklon vyřešen, nefunguje to úplně spolehlivě ale prozatím to stačí.
Chystám ochlupení pavoučka. Na foto je vidět šablona a výstřižky z kožešiny. Teď řeším lepení na skelet.
-
luger
- Příspěvky: 197
- Registrován: 30 dub 2023, 11:06
Příspěvek
od luger » 04 čer 2024, 10:43
Částečné olepení chlupama jedné nohy. První ochlupatím celou jednu nohu a uvidíme jak to bude vypadat a co to bude dělat za chodu. Pak stejně olepím všechny nožky a vrhnu se na skelet těla. To už bude těžší protože jsou tam senzory. Nějak si s tím poradím
-
Přílohy
-
-
Diego
- Příspěvky: 186
- Registrován: 23 črc 2017, 09:43
-
Kontaktovat uživatele:
Příspěvek
od Diego » 04 čer 2024, 11:35
To na me vybehnout tak se pos...
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti