Stránka 15 z 26

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 11:45
od luger
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); 

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 15:04
od kiRRow
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
}
 

//***************************************************************************************************************************************
//*****

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 15:13
od kiRRow
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 ...

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 15:19
od kiRRow

Kód: Vybrat vše

#include "LobotServoController.h"
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ě

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 16:34
od luger
Myslím že ledky nepotřebuju, vidím to na displeji. Změna sklonu je na řádku "foto:" změna 1/0
Video:
https://www.youtube.com/shorts/KmdAK8lYFtQ

Tak proč to přehlíží ?

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 18:22
od kiRRow
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

Re: Pavouk Hiwonder

Napsal: 31 kvě 2024, 18:48
od luger
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.

Re: Pavouk Hiwonder

Napsal: 03 čer 2024, 17:51
od luger
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.
IMG_20240603_173017_282.jpg

Re: Pavouk Hiwonder

Napsal: 04 čer 2024, 10:43
od luger
Čá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 :D
IMG_20240604_103422_261.jpg

Re: Pavouk Hiwonder

Napsal: 04 čer 2024, 11:35
od Diego
To na me vybehnout tak se pos... :D