<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Zdravím,</p>
    <p>bez matiky se moc nepohnete ... . Musí na to ovšem být děti,
      čas,... poté se ptají co je rozdělit na třetiny či na poloviny a
      máte zlomky. Nebo nyní si přečte v 4.třídě, že kružnice se
      vykreslí přes sin/cos a tak zjišťuje co to je ... . Možná to
      vypadá občas složitě, ale je lépe něco vysvětlit než zarazit. Jít
      krok po kroku občas nejde ... .<br>
    </p>
    <p>Jirka<br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Dne 31.03.2021 v 12:27 Pavel Hudecek
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:6l.M68JP.5c21dDj%7DnXV.1WP4ws@seznam.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}.MsoChpDefault
        {mso-style-type:export-only;}div.WordSection1
        {page:WordSection1;}</style>
      <div class="WordSection1">
        <p class="MsoNormal">Je to lekce C, kde jsou jako zajímavost dva
          programy v C++. V lekci 1, před x měsící, bylo i použití Home
          a End. Děti které neumí psát na počítači, používat myš a
          počítat se zlomky a desetinnými čísly na mé kroužky naštěstí
          nechodí:-)</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Ten Váš mail jsem četl, ale můj kroužek
          nevyhověl některému z požadavků, myslím že místo normálního
          konání.</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">PH</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div
          style="mso-element:para-border-div;border:none;border-top:solid
          #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
          <p class="MsoNormal" style="border:none;padding:0cm"><b>Od: </b><a
              href="mailto:nesvacil@posys.eu" moz-do-not-send="true">Jiří
              Nesvacil</a></p>
        </div>
        <p>jdete správnou cestou, ale ještě bych to zjednodušil. Před
          čase jsem se ptal, zda nechte někdo nějaký on-line kroužek,
          ale ozval se jen jeden, zda to děkuji, ale to je málo. Zatím
          jsme tedy sami postoupili, ale dělám to jinak a mám
          následující fáce.</p>
        <p>a/ otevřít notepad a naučit aspoň napsat pár písmenek.<br>
          b/ naučit se s myší a okopírovat kousek textu.<br>
          c/ připravit kus kód, kde není nic v cizím jazyku, nejsou zde
          věci, které se naučili nedávno. Začnu jen  s tím, aby se
          přahazoval řádek v kódu. Něco jako jazyk "Karel" graficky. Jen
          přehodit pořadí, aby se pochopila posloupnost.<br>
          d/ další příklad volání metody s hodnotou třeba psun(5);<br>
          e/... proměnné, cykly,... zase tímto jednoduchým stylem.</p>
        <p>... objekty taky jednoduše. Neboli osobně bych vyházel
          všechny define, založil to na malé třídě. Začít třeba se
          základem proměnné v objektu tzv. instanční. Až následně do
          složitějších konstrukcí, ale opět i složité konstrukce na
          jednoduchém příkladu tj. bez ostatních věcí co se mohlo
          zapomenout.... . Je to o tom to dělat pomalu. Možná máte větší
          děti nebo toho znají více... .</p>
        <p>Jirka</p>
        <p><o:p> </o:p></p>
        <div>
          <p class="MsoNormal">Dne 30.03.2021 v 20:08 Pavel Hudecek
            napsal(a):<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal">Dobrý den všem,<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">Udělal jsem malou ukázku programu v C++
            pro děti na kroužek, prosím o zhodnocení, zda v tom nejsou
            nějaký nevhodný věci:-)<o:p></o:p></p>
          <p class="MsoNormal">(celé je to pro Xnano416 mající 1 LED a 1
            tlačítko)<o:p></o:p></p>
          <p class="MsoNormal">Otázka je, jak se to zmrší posláním
            v mailu…<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">#include <avr/io.h><o:p></o:p></p>
          <p class="MsoNormal">#include <avr/interrupt.h><o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">#define F_CPU                
            (20000000UL/6UL)<o:p></o:p></p>
          <p class="MsoNormal">#define
            LED_bit                               5 // LEDka<o:p></o:p></p>
          <p class="MsoNormal">#define TL_bit                  4 //
            tlačítko<o:p></o:p></p>
          <p class="MsoNormal">#define TEST_bit             3 // test
            přerušení osciloskopem<o:p></o:p></p>
          <p class="MsoNormal">#define TEST_bit2           2 // test
            čekání osciloskopem<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">#define TL_jeStisk          ((PORTB.IN
            & (1<<TL_bit)) == 0)<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">volatile unsigned int       ms=0;<o:p></o:p></p>
          <p class="MsoNormal">volatile unsigned char    msSync=0;<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">void cekej(unsigned int n); // prototyp
            funkce - jen aby za ním bylo vidět jak funkce vypadá<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">class clTlac { //
            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">public:<o:p></o:p></p>
          <p class="MsoNormal">                clTlac() { // konstruktor
            - spusti se pri vytvoreni objektu
            ----------------------------<o:p></o:p></p>
          <p class="MsoNormal">                               
            PORTB.PIN4CTRL = PORT_PULLUPEN_bm;<o:p></o:p></p>
          <p class="MsoNormal">                               // zapnout
            pull-up pro tlačítko<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">                void cek() { // cekani na
            stisk
            --------------------------------------------------------<o:p></o:p></p>
          <p class="MsoNormal">                              
            while(TL_jeStisk) cekej(0);<o:p></o:p></p>
          <p class="MsoNormal">                              
            while(!TL_jeStisk) cekej(0);<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                void stisk(); // udalost
            stisku tlacitka - jen deklarace<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                bool stav=false;<o:p></o:p></p>
          <p class="MsoNormal">};<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">class clLED { //
            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                friend void
            cekej(unsigned int n);<o:p></o:p></p>
          <p class="MsoNormal">                // friend smí i do
            private<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">public:<o:p></o:p></p>
          <p class="MsoNormal">                const unsigned int PMAX =
            F_CPU / 1000UL;<o:p></o:p></p>
          <p class="MsoNormal">                const unsigned int P1 =
            PMAX / 100;       <o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">                clLED() { // konstruktor
            - spusti se pri vytvoreni objektu
            -----------------------------<o:p></o:p></p>
          <p class="MsoNormal">                              
            PORTB.OUTSET = 1<<LED_bit; // nastavit na 1, aby LEDka
            nesvítila od začátku<o:p></o:p></p>
          <p class="MsoNormal">                               PORTB.DIR
            = (1<<LED_bit) | (1<<TEST_bit) |
            (1<<TEST_bit2) ; // zapnout výstupy pro LED<o:p></o:p></p>
          <p class="MsoNormal">                              
            PORTB.PIN5CTRL = PORT_INVEN_bm; // Invertovat, aby LED
            svitila pri 1 (1 v datech)<o:p></o:p></p>
          <p class="MsoNormal">                               <o:p></o:p></p>
          <p class="MsoNormal">                              
            PORTMUX_CTRLC = PORTMUX_TCA02_ALTERNATE_gc;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CTRLA = TCA_SINGLE_CLKSEL_DIV1_gc;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CTRLB = TCA_SINGLE_CMP2EN_bm |
            TCA_SINGLE_WGMODE_SINGLESLOPE_gc;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CTRLC = 0;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CTRLD = 0;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_PER = F_CPU / 1000UL;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_INTCTRL = TCA_SINGLE_OVF_bm;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_INTFLAGS = TCA_SINGLE_OVF_bm;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CMP2 = P1;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CTRLA |= TCA_SINGLE_ENABLE_bm;<o:p></o:p></p>
          <p class="MsoNormal">                              
            __asm__("sei");<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">                void svitit(uint8_t proc)
            { // rozsvitit na zadane %
            -----------------------------------<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CMP2 = P1 * proc;<o:p></o:p></p>
          <p class="MsoNormal">                               tim = 0;<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                void blikat(unsigned int
            t, unsigned char h, unsigned char l) { //
            ---------------------<o:p></o:p></p>
          <p class="MsoNormal">                               tim  = t;<o:p></o:p></p>
          <p class="MsoNormal">                               cnt  = 0;<o:p></o:p></p>
          <p class="MsoNormal">                               pwmH = P1
            * h;<o:p></o:p></p>
          <p class="MsoNormal">                               pwmL = P1
            * l;<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CMP2 = pwmH;<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                unsigned int
            procToPWM(unsigned char n) { // prevod procent na PWM
            ---------------------<o:p></o:p></p>
          <p class="MsoNormal">                               return P1
            * n;<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">private:<o:p></o:p></p>
          <p class="MsoNormal">                unsigned int pwmL = 0,
            pwmH = PMAX, tim  = 0, cnt  = 0;<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                void togglePwm() { //
            prehodit PWM z low na hi / naopak
            --------------------------------<o:p></o:p></p>
          <p class="MsoNormal">                               if
            (TCA0_SINGLE_CMP2 == pwmH)<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CMP2 = pwmL;<o:p></o:p></p>
          <p class="MsoNormal">                               else<o:p></o:p></p>
          <p class="MsoNormal">                              
            TCA0_SINGLE_CMP2 = pwmH;<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">};<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">// Tady se podle tříd clTlac a clLED
            vytvoří objekty Tlacitko a Led. To spustí jejich
            konstruktory.<o:p></o:p></p>
          <p class="MsoNormal">clTlac     Tlacitko;<o:p></o:p></p>
          <p class="MsoNormal">clLED     Led;<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">void cekej(unsigned int n) { //
            ==============================================<o:p></o:p></p>
          <p class="MsoNormal">                static bool
            tlacStickPred=false;<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                __asm__("cli");<o:p></o:p></p>
          <p class="MsoNormal">                ms=0;<o:p></o:p></p>
          <p class="MsoNormal">                __asm__("sei");<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                while(1) {<o:p></o:p></p>
          <p class="MsoNormal">                              
            PORTB.OUTTGL = (1<<TEST_bit2);<o:p></o:p></p>
          <p class="MsoNormal">                               <o:p></o:p></p>
          <p class="MsoNormal">                               if
            (msSync==1) { // ----------------------------------------<o:p></o:p></p>
          <p class="MsoNormal">                                              
            msSync=0;<o:p></o:p></p>
          <p class="MsoNormal">                                              
            <o:p></o:p></p>
          <p class="MsoNormal">                                              
            Tlacitko.stav = TL_jeStisk;<o:p></o:p></p>
          <p class="MsoNormal">                                              
            <o:p></o:p></p>
          <p class="MsoNormal">                                              
            if (Led.tim>0) { // je zapnute blikani<o:p></o:p></p>
          <p class="MsoNormal">                                                              
            if (++Led.cnt>Led.tim) {<o:p></o:p></p>
          <p class="MsoNormal">                                                                              
            Led.cnt=0;<o:p></o:p></p>
          <p class="MsoNormal">                                                                              
            Led.togglePwm();<o:p></o:p></p>
          <p class="MsoNormal">                                                              
            }<o:p></o:p></p>
          <p class="MsoNormal">                                              
            }<o:p></o:p></p>
          <p class="MsoNormal">                                              
            <o:p></o:p></p>
          <p class="MsoNormal">                               } // if
            (msSync==1)<o:p></o:p></p>
          <p class="MsoNormal">                               <o:p></o:p></p>
          <p class="MsoNormal">                               if
            (!tlacStickPred && Tlacitko.stav) { // právě bylo
            stisknuto, vyvolat událost<o:p></o:p></p>
          <p class="MsoNormal">                                              
            Tlacitko.stisk();<o:p></o:p></p>
          <p class="MsoNormal">                               }<o:p></o:p></p>
          <p class="MsoNormal">                              
            tlacStickPred=Tlacitko.stav;<o:p></o:p></p>
          <p class="MsoNormal">                               <o:p></o:p></p>
          <p class="MsoNormal">                              
            __asm__("cli");<o:p></o:p></p>
          <p class="MsoNormal">                               if
            (ms>=n) break;<o:p></o:p></p>
          <p class="MsoNormal">                              
            __asm__("sei");<o:p></o:p></p>
          <p class="MsoNormal">                } // while(1)<o:p></o:p></p>
          <p class="MsoNormal">                __asm__("sei");<o:p></o:p></p>
          <p class="MsoNormal">}<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">// implementace obsluhy události stisk
            tlačítka<o:p></o:p></p>
          <p class="MsoNormal">void clTlac::stisk() { //
            ===================================================<o:p></o:p></p>
          <p class="MsoNormal">                static bool b=false;<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                // zatímco v mainu se
            čekat musí, tady se naopak nesmí<o:p></o:p></p>
          <p class="MsoNormal">                if (b) {<o:p></o:p></p>
          <p class="MsoNormal">                              
            Led.blikat(200, 100, 0);<o:p></o:p></p>
          <p class="MsoNormal">                } else {<o:p></o:p></p>
          <p class="MsoNormal">                              
            Led.blikat(200, 60, 30);<o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal">                b = !b;<o:p></o:p></p>
          <p class="MsoNormal">}<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">int main(void) { //
            ###########################################################<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                // tady nic neni:
            inicializace je v konstruktorech<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                Led.blikat(100, 70, 20);<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                while (1) { //
            ---------------------------------------------------<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">                               // je
            jedno co tu je, hlavně že to obsahuje čekání<o:p></o:p></p>
          <p class="MsoNormal">                              
            cekej(100);<o:p></o:p></p>
          <p class="MsoNormal">                              
            Tlacitko.cek();<o:p></o:p></p>
          <p class="MsoNormal">                               <o:p></o:p></p>
          <p class="MsoNormal">                }<o:p></o:p></p>
          <p class="MsoNormal">}<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">ISR (TCA0_OVF_vect) { //
            =====================================================<o:p></o:p></p>
          <p class="MsoNormal">                PORTB.OUTTGL =
            (1<<TEST_bit);<o:p></o:p></p>
          <p class="MsoNormal">                ms++;<o:p></o:p></p>
          <p class="MsoNormal">                msSync=1;<o:p></o:p></p>
          <p class="MsoNormal">                <o:p></o:p></p>
          <p class="MsoNormal">                TCA0_SINGLE_INTFLAGS =
            TCA_SINGLE_OVF_bm;<o:p></o:p></p>
          <p class="MsoNormal">}<o:p></o:p></p>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
  <div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2">
<br /><br />
<hr style='border:none; color:#909090; background-color:#B0B0B0; height: 1px; width: 99%;' />
<table style='border-collapse:collapse;border:none;'>
        <tr>
                <td style='border:none;padding:0px 15px 0px 8px'>
                        <a href="http://www.avg.com/internet-security">
                                <img border=0 src="http://static.avast.com/emails/avg-mail-stamp.png" alt="Logo AVG" />
                        </a>
                </td>
                <td>
                        <p style='color:#3d4d5a; font-family:"Calibri","Verdana","Arial","Helvetica"; font-size:12pt;'>
                                Tento e-mail byl zkontrolován na viry antivirovým softwarem AVG.
                                <br><a href="http://www.avg.com/internet-security">www.avg.cz</a>
                        </p>
                </td>
        </tr>
</table>
<br />
<a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"> </a></div></body>
</html>