<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>