Arduino -osnovna šola - 01.12.21 ob 20:00

Arduino je pojav za katerega bi težko rekli, da opisuje samo HW ali samo SW, zato mu tu namenajm poseben prostor.

Moderator: tilz0R

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a VolkD » 02 Dec 2021, 22:10

VolkD je napisal/-a:Kje pa imaš definirano spremenljivko _FadeValue ?

Ta spremenljivka se nahaja v objektu LEDFadeCls in ni potrebe, da bi bila vsem vidna.
Torej podobno kot _FadeTime.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 67633
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20700 krat
Prejel zahvalo: 10573 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a skat » 02 Dec 2021, 22:10

Za danes bo dovolj! Moram it plužit sneg, ga je že kakih 10cm.
ne sekiraj se, če kaj crkne, vsaka šola nekaj stane!
skat
 
Prispevkov: 370
Pridružen: 30 Jan 2015, 07:50
Kraj: Ribnica
Zahvalil se je: 103 krat
Prejel zahvalo: 87 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 42

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a valter » 02 Dec 2021, 23:07

Uh sem se kar namučil.
LedFade.h

Koda: Izberi vse
#ifndef __LEDFADE_H__
#define __LEDFADE_H__

#include <stdint.h>
#include <Arduino.h>

#include "LED.h"

class LEDFadeCls : public LEDCls
{
   public:
      LEDFadeCls(uint8_t pin);
     
      void Fade(uint32_t time);
     
      virtual void Loop() override;
     
   private:
      uint32_t _FadeTime;
     uint32_t   _FadeValue;
     uint32_t   _FadeDir;
     uint32_t  Pin _;
};




#endif


Brez napak
valter
 
Prispevkov: 1211
Pridružen: 21 Jan 2015, 10:52
Kraj: Lokev,Vinica,Boa
Zahvalil se je: 178 krat
Prejel zahvalo: 258 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 27

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 03 Dec 2021, 09:41

Izgeda da ti v LEDFade.h manjka _FadeValue.
Še glede napak, ki jih javlja arduino - vedno poglejte samo prvo izpisano napako. Ostale so večinoma posledice prve.

Drugače pa - To, kar smo naredili do sedaj je daleč najtežja stvar za osvojit. Vse ostalo bo veliko bolj preprosto. Je pa to osnova. Prva stopnica, ki pa je res zelo visoka.
Tako da ne obupat.
Kdor misli obupat ali pa ima kakšnekoli težave naj pride k meni v kabinet in če imal le čas bom pomagal.
https://meet.jit.si/kroko
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a valter » 03 Dec 2021, 20:20

Kaj ni nobenega junaka?
Me matra ta fade .. nikakor ne zalavfa.
v mainu.cpp
Koda: Izberi vse
#include <stdint.h>
#include <Arduino.h>

#include "pins.h"
#include "LED.h"
#include "LEDBlink.h"
#include "LEDFade.h"

#include "main.h"

LEDBlinkCls _LED_R(PIN_LED_R);
LEDFadeCls  _LED_G(PIN_LED_G);
LEDFadeCls _LED_B(PIN_LED_B);

void setup()
{
   Serial.begin(115200);
   
   _LED_R.begin();
   _LED_G.begin();
   _LED_B.begin();
 
  _LED_R.Blink(500);
  _LED_G.Fade(500);
  _LED_B.Fade(500);
 
      
   
}

void loop()
{
   _LED_R.Loop();
   _LED_G.Loop();
   _LED_B.Loop();
}


Blink dela , fade pa ne ??'
valter
 
Prispevkov: 1211
Pridružen: 21 Jan 2015, 10:52
Kraj: Lokev,Vinica,Boa
Zahvalil se je: 178 krat
Prejel zahvalo: 258 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 27

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 03 Dec 2021, 20:47

@skat - vse kar vemo je, da je nekaj narobe s spremenljivko _FadeValue . Ali je ta definirana tam, kjer mora biti? Inicializacijo vidim tudi da imaš zakomentirano, kar ni OK.
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a VolkD » 03 Dec 2021, 21:14

valter je napisal/-a:Kaj ni nobenega junaka?
Kako da ne,....

Na https://meet.jit.si/kroko je video kako moja LED dela.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 67633
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20700 krat
Prejel zahvalo: 10573 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a valter » 03 Dec 2021, 22:18

Matr 5 minut z Darkotom in je "proradilo".
Napaka pa je bila , da sem delal v 2 mapah in logično vse pobrkal.
Zahvala gre Krokotu in seveda Darkotu.
Niso samo podpičja važna pri C++ :twisted:
V bistvu sem vse napravil prav :_banghead sem pa LEDFade.cpp dal v napačno mapo..
Seveda če bi bil pri arduinotu pozoren , bi opazil da manjka LEDFade.cpp.
Za spodbudo ostalim:
C-ja nisem nikoli uporabljal .Še več sem ga prav sovražil.
Nanj sem prešel šele s pojavom arduinota (bolj copy-paste)
Sedaj pa se je spremenilo (s Krokotom) Sploh ni bav bav...
Zato priporočam še ostalim da se potrudijo.
Res super Hvala vsem sodelujočim.
valter
 
Prispevkov: 1211
Pridružen: 21 Jan 2015, 10:52
Kraj: Lokev,Vinica,Boa
Zahvalil se je: 178 krat
Prejel zahvalo: 258 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 27

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a mirkatmir » 04 Dec 2021, 02:06

Napake ne javi nobene, gori pa neprestano rdeča led. Nekje bluzim, se vidi koliko je ura. :_helpsos

LEDFade.h:
Koda: Izberi vse
#ifndef __LEDFade_h__
#define __LEDFade_h__

#include <stdint.h>
#include <Arduino.h>

#include "LED.h"

class LEDFadeCls : public LEDCls
{
    public:
        LEDFadeCls(uint8_t pin);

        void Fade(uint32_t time);

        virtual void Loop() override;
        //void Loop();

    private:
        uint32_t _FadeTime;
        uint8_t _FadeValue;
        uint8_t _FadeDir;
        uint8_t _Pin;

};

#endif


in LEDFade.cpp

Koda: Izberi vse
#include "DelayUtils.h"
#include "LEDFade.h"

LEDFadeCls::LEDFadeCls(uint8_t pin) :
  LEDCls(pin),
  _FadeTime(0),
  _FadeValue(0),
  _FadeDir(0)
 
{   
}

void LEDFadeCls::Fade(uint32_t time)
{
   _FadeTime = time * 1000 / 255;
    _FadeValue = 0;
    _FadeDir = +1;
   _Time = DelayUtils::DelayInitUS();
}

void LEDFadeCls::Loop()
{
    if (DelayUtils::DelayCheckUS(_Time, _FadeTime))
    {
        if (_FadeValue == 0)
            _FadeDir = +1;
        else if (_FadeValue == 255)
            _FadeDir = -1;
        _FadeValue += _FadeDir;
        analogWrite(_Pin, _FadeValue);
    }
}

lp, Miran (Miro S51SK)
Uporabniški avatar
mirkatmir
 
Prispevkov: 1498
Pridružen: 14 Jan 2015, 21:05
Kraj: Ribnica - JN75IR
Zahvalil se je: 225 krat
Prejel zahvalo: 379 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 59

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a VolkD » 04 Dec 2021, 02:51

Za začetek,...
Za _Pin je vseeno ali potrebujemo predznak ali ne. Vrednosti tega polje tako in tako nikoli niso negativne . Prav tako ne potrebujemo vrednosti nad 127.

Kaj pa _FadeDir ?
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 67633
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20700 krat
Prejel zahvalo: 10573 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a VolkD » 04 Dec 2021, 03:02

Ko zgornje rešiš, .... kam boš shranil pri tem novem objektu pin, torej to kar kot prameter pošlješ v objekt.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 67633
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20700 krat
Prejel zahvalo: 10573 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a VolkD » 04 Dec 2021, 03:09

VolkD je napisal/-a:Za začetek,...
Za _Pin je vseeno ali potrebujemo predznak ali ne. Vrednosti tega polje tako in tako nikoli niso negativne . Prav tako ne potrebujemo vrednosti nad 127.

Kaj pa _FadeDir ?
Zanimivo. Dela vseeno tudi če v spremenljivko, ki je unsigned vpišemo -1.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 67633
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20700 krat
Prejel zahvalo: 10573 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 04 Dec 2021, 10:36

Seveda dela. Gre zgolj za interpretacijo bitov. Sodobni računalniki za pretvorbo bitov v števila uporabljajo dvojiški komplement.
Tule je več branja na to temo:
https://en.wikipedia.org/wiki/Two%27s_complement
https://sl.wikipedia.org/wiki/Dvoji%C5%A1ki_komplement

Ste pa ravnokar dobili novo domačo nalogo. Preberite tole:
https://anzeljg.github.io/rin2/book2/2202/index.html
in rešite naloge na koncu. Če kaj ni jasno vprašajte učitelja Krokota :-)
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a VolkD » 04 Dec 2021, 11:43

Kroko je napisal/-a:Seveda dela. Gre zgolj za interpretacijo bitov.
Ja, seveda gre za interpretacijo, saj pri 0 ali pri +1 naj nebi bilo problemov. Ampak kaj če v unsigned spremenljivko vpišemo 128, potem jo pa uporabimo kot signed ?
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 67633
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20700 krat
Prejel zahvalo: 10573 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 04 Dec 2021, 12:06

Pretvarjanju med različnimi tipi se reče "casting".
Pretvarjanju tipov ne da bi se izgubil pomen se reče "implicit casting". Primer:
Koda: Izberi vse
uint8_t a = 10;
uint16_t b;
b = a; //implicit cast


Drugi primer bi bil takole:
Koda: Izberi vse
uint16_t a = 10;
uint8_t b;
b = a; //implicit cast - ampak to dobimo warning, da lahko pride do izgube podatkov. Žal arduino warningov ne pokaže


Da to rešimo naredimo "explicit cast". S tem točno povemo, da to res želimo narediti:
Koda: Izberi vse
uint16_t a = 10;
uint8_t b;
b = (uint8_t )a; //explicit cast ("c" zapis)

oziroma povsem enako z malce drugačnim zapisom:
Koda: Izberi vse
uint16_t a = 10;
uint8_t b;
b = uint8_t (a); //explicit cast ("functional" zapis)


Povsem enako je s signed/unsigned. Če to mešamo in implicitno castamo se imamo samo za "zahvalit" Arduino šlampariji, ki skrije vse warninge, da je nekaj hudo narobe.
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a skat » 04 Dec 2021, 14:21

Tudi meni je uspelo sprogramirati Fade delovanje. Malo s pomočjo sina profi programerja, ki je takoj videl, da so imena različna, čeprav samo v Velike/male črke ali s podčrtaji :D

Ampak način razmišljanja in elemente takega programiranja moram pa še prežvečit in prebavit, da pride v kri.
ne sekiraj se, če kaj crkne, vsaka šola nekaj stane!
skat
 
Prispevkov: 370
Pridružen: 30 Jan 2015, 07:50
Kraj: Ribnica
Zahvalil se je: 103 krat
Prejel zahvalo: 87 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 42

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a valter » 04 Dec 2021, 18:05

skat je napisal/-a:

Ampak način razmišljanja in elemente takega programiranja moram pa še prežvečit in prebavit, da pride v kri.

Se podpišem .
To je bilo izi , saj je Kroko vse napravil. Ampak sedaj tudi C ni več tako zagulen.
valter
 
Prispevkov: 1211
Pridružen: 21 Jan 2015, 10:52
Kraj: Lokev,Vinica,Boa
Zahvalil se je: 178 krat
Prejel zahvalo: 258 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 27

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a skat » 05 Dec 2021, 10:14

Še en link z zapiski o C++ : https://e6.ijs.si/~jslak/c++/index.html
ne sekiraj se, če kaj crkne, vsaka šola nekaj stane!
skat
 
Prispevkov: 370
Pridružen: 30 Jan 2015, 07:50
Kraj: Ribnica
Zahvalil se je: 103 krat
Prejel zahvalo: 87 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 42

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a transalp » 05 Dec 2021, 11:07

Kroko, prosim te za pojasnilo - tule je moj delujoči LEDFade.cpp:
Koda: Izberi vse
#include "DelayUtils.h"
#include "LEDFade.h"

LEDFadeCls::LEDFadeCls(uint8_t pin):
  LEDCls(pin),
  _FadeTime(0),
  _FadeValue(0),
  _FadeDir(0)
{
   
}

void LEDFadeCls::Fade(uint32_t time)
{
   _FadeTime = time * 1000 / 255;
   
   _FadeValue = 0;
   _FadeDir = +1;
   
   _Time = DelayUtils::DelayInitUS();
}

void LEDFadeCls::Loop() //override;
{
   if (DelayUtils::DelayCheckUS(_Time, _FadeTime))
   {
               
      if (_FadeValue == 0)
         _FadeDir = +1;
      else if (_FadeValue == 255)
         _FadeDir = -1;
            
      _FadeValue += _FadeDir;
            
      Set(_FadeValue);
      // analogWrite(_Pin, _FadeValue); //ne dela in javi, da je "const uint8_t LEDCls::_Pin private in this context"
   }
}


Za output _FadeValue na izhodni pin sem uporabil "Set" iz "LEDCls". Če poskusim z "analogWrite" na "_Pin" (zakomentirano v vrstici 37), javi, da je "private in this context". :?: :?: :?:
Any sufficiently advanced technology is indistinguishable from magic.
[Arthur C. Clarke]
Uporabniški avatar
transalp
 
Prispevkov: 320
Pridružen: 18 Jan 2015, 10:27
Kraj: Ig
Zahvalil se je: 143 krat
Prejel zahvalo: 98 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 50

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a gumby » 05 Dec 2021, 11:14

Kroko je napisal/-a:...Žal arduino warningov ne pokaže...

Tole se mi zdi precej narobe... sploh pri začetnikih ne bi smel tega delat.
Jaz imam še vedno vklopljeno, da warninge obravnava, kot napake. Te zelo hitro nauči, da "lepo" programiraš :)
my brain hurts
Uporabniški avatar
gumby
 
Prispevkov: 2858
Pridružen: 14 Jan 2015, 18:49
Kraj: Lendava
Zahvalil se je: 123 krat
Prejel zahvalo: 786 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 80

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 05 Dec 2021, 12:04

transalp je napisal/-a:Kroko, prosim te za pojasnilo...


_Pin lastnost (property) je privatna lastnost razreda LEDCls. Nihče drug te lastnosti ne vidi.
Če želiš da izpeljan razred (LEDFadeCls) vidi to lastnost, jo moraš deklarirati kot "protected:".
Če želiš za vsi vidijo neko lastnost jo moraš deklarirati kot "public:".

Pa še to. To niso spremenljivke. _Pin, _BlinkTime, _FadeValue in ostalo so lastnosti razreda in ne spremenljivke. Navadite se na to tako gledati, in bo bolj preprosto.

Na primer, imamo razred "oseba". Osebe imajo "ime" in "priimek". Ti lastnosti poznajo vsi. Oseba ima tudi nek "hobi", po pa poznajo samo njeni otroci. Ima tudi "pin" številko ki pa je nihče ne pozna.

Koda: Izberi vse
class OsebaCls
{
  public:
    string Ime;
    string Priimek;
  protected:
    string Hobi;
  private:
    string Pin;
}
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a transalp » 05 Dec 2021, 12:14

Hvala lepa. Bil sem zelo površen in nisem pogledal vsebine LED.h ... :_banghead
Any sufficiently advanced technology is indistinguishable from magic.
[Arthur C. Clarke]
Uporabniški avatar
transalp
 
Prispevkov: 320
Pridružen: 18 Jan 2015, 10:27
Kraj: Ig
Zahvalil se je: 143 krat
Prejel zahvalo: 98 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 50

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 05 Dec 2021, 14:34

Kaj pa je bolj prav? Naj v "LEDFadeCls" uporabimo "Set" iz "LEDCls" ali direktno "analogWrite"?

Razmislite. In napišite kaj se vam zdi bolj prav in zakaj.
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a transalp » 05 Dec 2021, 16:37

Meni se zdi bolj prav uporabiti "Set" iz "LEDCls" ... :roll:
Any sufficiently advanced technology is indistinguishable from magic.
[Arthur C. Clarke]
Uporabniški avatar
transalp
 
Prispevkov: 320
Pridružen: 18 Jan 2015, 10:27
Kraj: Ig
Zahvalil se je: 143 krat
Prejel zahvalo: 98 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 50

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a S55RU » 05 Dec 2021, 20:09

Nekako mi je uspelo napisati delujoč Fade, vsaj mislim da je pravilno delujoč. Kako bi se dalo FadeValue izpisati na serijski monitor, da bi človek lahko debugiral pravilno delovanje?
Malo sem si izpisal še komentarje, da se ne bom naslednjič lovil.

LEDFade.cpp
Koda: Izberi vse
#include "DelayUtils.h"
#include "LEDFade.h"

//konstruktor
LEDFadeCls::LEDFadeCls(uint8_t pin):
  LEDCls(pin), //kličemo kar konstruktor starša
  _FadeTime(0) //inicializacija (damo na 0)
{
   
}

void LEDFadeCls::Fade (uint32_t time)
{
   _FadeTime = time * 1000 / 255;
   
   _FadeValue=0;
   _FadeDir=+1;
   
   _Time=DelayUtils::DelayInitUS();
}

void LEDFadeCls::Loop() //override lastnosti iz LEDCls
{
   if (DelayUtils::DelayCheckUS (_Time, _FadeTime))
   {
      if (_FadeValue == 0)
            _FadeDir = +1;
      else if (_FadeDir ==255)
            _FadeDir =-1;
               
         _FadeValue +=_FadeDir;
                  
         Set(_FadeValue); //pošlji nazaj v Set, ki je lastnost v LED.h
   }
}


Ter LEDFade.h
Koda: Izberi vse

#ifndef __LEDFADE_H__
#define __LEDFADE_H__

#include <stdint.h>
#include <Arduino.h>

#include "LED.h"  //obvezno includat.h starša, če hočemo uporabljati njegove lastnosti

//razred LEDFade izhaja iz razreda LED (public-> ker hočemo vse lastnosti razreda videti navzven)
class LEDFadeCls : public LEDCls
{
   public:
      LEDFadeCls(uint8_t pin); //konstruktor
      
      void Fade(uint32_t time);
      
      //virtualna funkcija, preglasimo njeno obnašanje, ki je definirano v starševskem .h
      virtual void Loop() override;
      
   private:
      uint32_t _FadeTime;
      uint8_t _FadeValue;
      int8_t _FadeDir;
};

#endif // __LEDFADE_H__
Uporabniški avatar
S55RU
 
Prispevkov: 552
Pridružen: 18 Jan 2015, 01:18
Kraj: Posočje
Zahvalil se je: 160 krat
Prejel zahvalo: 102 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 12

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a Kroko » 05 Dec 2021, 20:20

Na prvi uč izgleda ok.

Na serijski minitor pa izpisuješ z
Koda: Izberi vse
Serial.print(_FadeValue);

Ne pozabi v main.cpp, v Setup() najprej narediti
Koda: Izberi vse
Serial.begin(115200);
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6113
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2420 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a S55RU » 05 Dec 2021, 20:33

Hvala. Sem razmišljal malo drugače in poskušal uvoziti _FadeValue v main.cpp in od tam printati, pa sem imel same težave in sem obupal.

Rezultat je sledeč, da gre od 0 do 255, nato skoči nazaj na 0 in spet proti 255. Torej le v eno smer. Ne bi moralo povečevati do 255, nato obrniti smeri in zmanjševati proti 0? Torej 0, 1, 2, ..., 254, 255, 254,..., 1, 0, 1,...?
Screenshot_2.png
Nimate dovoljenj za ogled prilog tega prispevka.
Uporabniški avatar
S55RU
 
Prispevkov: 552
Pridružen: 18 Jan 2015, 01:18
Kraj: Posočje
Zahvalil se je: 160 krat
Prejel zahvalo: 102 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 12

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a S55RU » 05 Dec 2021, 20:42

Mi je uspelo najti napako. Zatipk v LEDFade.cpp (popravek označen z bold-popravek bold v codi seveda ne dela). Namesto _FadeValue==255 sem imel _FadeDir==255. Sedaj dela OK:
Screenshot_3.png


Koda: Izberi vse
#include "DelayUtils.h"
#include "LEDFade.h"

//konstruktor
LEDFadeCls::LEDFadeCls(uint8_t pin):
  LEDCls(pin), //kličemo kar konstruktor starša
  _FadeTime(0) //inicializacija (damo na 0)
{
   
}

void LEDFadeCls::Fade (uint32_t time)
{
   _FadeTime = time * 1000 / 255;
   
   _FadeValue=0;
   _FadeDir=+1;
   
   _Time=DelayUtils::DelayInitUS();
}

void LEDFadeCls::Loop() //override lastnosti iz LEDCls
{
   if (DelayUtils::DelayCheckUS (_Time, _FadeTime))
   {
      if (_FadeValue == 0)
            _FadeDir = +1;
      else if (_FadeValue ==255)
            _FadeDir =-1;
               
         _FadeValue +=_FadeDir;
                  
         Set(_FadeValue); //pošlji nazaj v Set, ki je lastnost v LED.h
         Serial.print(_FadeValue);
         Serial.print('\n');
         delay(10);
   }
}

Nimate dovoljenj za ogled prilog tega prispevka.
Uporabniški avatar
S55RU
 
Prispevkov: 552
Pridružen: 18 Jan 2015, 01:18
Kraj: Posočje
Zahvalil se je: 160 krat
Prejel zahvalo: 102 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 12

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a tomazp » 06 Dec 2021, 16:56

S55RU je napisal/-a:Hvala. Sem razmišljal malo drugače in poskušal uvoziti _FadeValue v main.cpp in od tam printati, pa sem imel same težave in sem obupal.


Sedaj imaš _FadeValue deklariran kot privat lastnost in je zato vidna samo razredu. Prestavi jo v public in bo vidna tudi iz main.cpp. Od tam jo boš lahko natisnil s Serial.print.
tomazp
 
Prispevkov: 750
Pridružen: 19 Jan 2015, 09:14
Kraj: Ljubljana
Zahvalil se je: 147 krat
Prejel zahvalo: 257 krat
Uporabnika povabil: Zeci
Število neizkoriščenih povabil: 53

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a tomazp » 06 Dec 2021, 17:05

Morda bo komu koristno. Ko sem šel ponovno čez posnetke sem si naredil nekaj koristnih zaznamkov, ki morajo biti v "flashu", da se ne pozabijo. V EEram je običajno treba na začetku večkrat vpisati zadeve, ker jih drugače pozabi :)
Nimate dovoljenj za ogled prilog tega prispevka.
tomazp
 
Prispevkov: 750
Pridružen: 19 Jan 2015, 09:14
Kraj: Ljubljana
Zahvalil se je: 147 krat
Prejel zahvalo: 257 krat
Uporabnika povabil: Zeci
Število neizkoriščenih povabil: 53

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a valter » 06 Dec 2021, 17:43

Super ,zelo koristno :_bow
valter
 
Prispevkov: 1211
Pridružen: 21 Jan 2015, 10:52
Kraj: Lokev,Vinica,Boa
Zahvalil se je: 178 krat
Prejel zahvalo: 258 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 27

Re: Arduino -osnovna šola - 01.12.21 ob 20:00

OdgovorNapisal/-a RaInfFiMa » 09 Dec 2021, 10:04

Kroko je napisal/-a:Verjetno bomo takrat prešli kar na ESP32. WiFi in modri zob se mi zdijo kul :-) Pa multicore procesor...
Bom še malo naštudiral kako to izvesti. Vi pa do takrat kakšen evro v štumf. Elektronika ni poceni. Hitro je 20-30 EUR, sploh če bomo imeli kakšno fino periferijo. TFT, kakšen senzor in pa JTAG debugiranje so skoraj nuja. Če ste za seveda.

+1
Mdr 6, 12
Uporabniški avatar
RaInfFiMa
 
Prispevkov: 833
Pridružen: 26 Jan 2015, 12:19
Kraj: Sv. Marija na hribu (nad Koprom)
Zahvalil se je: 490 krat
Prejel zahvalo: 179 krat
Uporabnika povabil: forest70
Število neizkoriščenih povabil: 34

Prejšnja

Vrni se na Arduino

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost