Arduino funkce Lookdown (z Picaxe)

Odpovědět
Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Arduino funkce Lookdown (z Picaxe)

Příspěvek od Ludek » 05 črc 2022, 06:59

zdravím,
prosím, jaká je to funkce u Arduina, u Picaxe to je Lookdown. To znamená, že mám někde 16 dat - formát long
a potřebuji zjistit jeho pořadí. Jde mi o to, že si chci kody z infra dalkového ovladače někam uložit, a on mi řekne rovnou jeho číslo.
Nechci tam mít 16x if...
Jak se to řeší v Arduinu?

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino funkce Lookdown (z Picaxe)

Příspěvek od kiRRow » 05 črc 2022, 07:45

Použiješ cyklus, který proběhne 16x a pokaždé porovná dataKterýHledáš s jednímZDatCoProhledáváš. Pokud to najde to co hledáš, můžeš cyklus přerušit a to číslo co hledáš je pak počet cyklů, který proběhnul, než jsi našel.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino funkce Lookdown (z Picaxe)

Příspěvek od kiRRow » 05 črc 2022, 08:02

Pak už z toho jen uděláš funkci, které řekneš KdeToJe = lookDown(najdi, v poli dat);

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Arduino funkce Lookdown (z Picaxe)

Příspěvek od AstroMiK » 05 črc 2022, 08:02

Kód: Vybrat vše




long pole[] = {15487,1234564,5464789,32131,4646,87978,654564,50,90,0,80};


void setup(void)
  {
    Serial.begin(9600);
  }


void loop(void)
  {
    if (Serial.available())
      {
        long zadano = Serial.parseInt();
        Serial.print("cislo: ");
        Serial.print(zadano);
        Serial.print(" ma v poli index: ");
        Serial.println(lookdown(zadano));
      }
  }


// vstupy:  'cislo' , ktere se ma najit v poli hodnot
//          globalni pole s hodnotami 'pole[]'
// vystup: index polozky (pokud se zadane cislo v poli nachazi)
//             nebo specialni cislo -1 (pokud pole cislo neobsahuje)
int lookdown(long cislo)
  {
    
    for (byte i = 0; i < (sizeof(pole)/4); i++)     // "sizeof(pole)/4" vrati pocet long zaznamu v poli (kazdy long ma 4 bajty)
      {
        if (cislo == pole[i])  return i;            // pri shode vrati index polozky v poli (pocitano od nuly)
      }
    return -1;                                      // pole cislo neobsahuje, vrati nejakou specialni hodnotu
  }

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Arduino funkce Lookdown (z Picaxe)

Příspěvek od Ludek » 05 črc 2022, 19:06

Not tedy..........
díky moc, už to chápu... ale to je tedy řádků :-) zlatej bejzik :-)
díky

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Arduino funkce Lookdown (z Picaxe)

Příspěvek od Ludek » 05 črc 2022, 19:13

Tedy tohle Forum je SUPER...
AstroMik jsi BOREC a diky MOC... toto jsem potřeboval :-)

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino funkce Lookdown (z Picaxe)

Příspěvek od kiRRow » 06 črc 2022, 10:02

a jak myslíš, že to řeší ten basic, když to stejně nakonec jde přes kompilátor do procesoru, který to řeší výpočtem a podmíněným skokem, pokud v minulém výpočtu vyšla nula... výhodou je větší kontrola nad programem, nevýhodou je : musíš si to pochopit a napsat "sám"

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Bing [Bot] a 5 hostů