<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=23&amp;t=3684&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-08-26T16:44:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=3684&amp;mode</id>
<entry>
<author><name><![CDATA[FlatronL1919S]]></name></author>
<updated>2018-08-26T16:44:53+01:00</updated>
<published>2018-08-26T16:44:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=211033#p211033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=211033#p211033"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=211033#p211033"><![CDATA[
super projekt a czy mógłbyś zamieścić schemat tego zegarka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18804">FlatronL1919S</a> — 26 sie 2018, o 16:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BoWiUe]]></name></author>
<updated>2013-08-21T23:25:48+01:00</updated>
<published>2013-08-21T23:25:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46608#p46608</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46608#p46608"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46608#p46608"><![CDATA[
miałbym kłopoty z założeniem ..... u syna <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1649">BoWiUe</a> — 21 sie 2013, o 23:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janeczqu]]></name></author>
<updated>2013-08-21T23:20:00+01:00</updated>
<published>2013-08-21T23:20:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46607#p46607</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46607#p46607"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46607#p46607"><![CDATA[
U mnie raczej przekaźnik który wyłączy listwę od kompa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=823">janeczqu</a> — 21 sie 2013, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BoWiUe]]></name></author>
<updated>2013-08-21T23:17:42+01:00</updated>
<published>2013-08-21T23:17:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46606#p46606</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46606#p46606"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=46606#p46606"><![CDATA[
Pomysł bomba! A komunikaty w stylu &quot;www.idź wreszcie spać.pl&quot; , &quot;czas się wybierać na zajęcia&quot; czy &quot;jak teraz nie wyjdziesz to napewno się spóźnisz&quot; zrobiły by z tego niesamowita pomoc dla niechętnie patrzących na zegar.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1649">BoWiUe</a> — 21 sie 2013, o 23:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krokodyl1220]]></name></author>
<updated>2013-07-28T12:12:52+01:00</updated>
<published>2013-07-28T12:12:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43667#p43667</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43667#p43667"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43667#p43667"><![CDATA[
<div class="quotetitle">mesho napisał(a):</div><div class="quotecontent"><br />wyłącznik bezdotykowy do wyzwalania mówienia obecnej godziny.<br /></div><br /><br />Aktywowany głosem? (tylko głośno myślę, nie, żebym proponował wyzwanie czy coś <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=768">krokodyl1220</a> — 28 lip 2013, o 12:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2013-07-28T09:00:50+01:00</updated>
<published>2013-07-28T09:00:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43647#p43647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43647#p43647"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43647#p43647"><![CDATA[
Wyświetlacz pełni tu raczej funkcje debuggera, wszystko rozchodzi się o to, co wychodzi z głośników;) Może faktycznie będę dążył do utworzenia jakiegoś zegara wolno-stojącego dla niewidomych, można by było się pokusić o jakiś wyłącznik bezdotykowy do wyzwalania mówienia obecnej godziny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 28 lip 2013, o 09:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2013-07-27T22:58:28+01:00</updated>
<published>2013-07-27T22:58:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43626#p43626</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43626#p43626"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43626#p43626"><![CDATA[
Fajny zegarek <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />&quot; ...nagrać KUKUŁKĘ żeby kukała zawsze np o 12-tej &quot;   ja proponuję hejnał <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Fajnie wyglądała by większa czcionka.<br />Jeśli chcesz to tu masz gotowca: <a href="http://forum.atnel.pl/topic1741.html"  class="postlink">http://forum.atnel.pl/topic1741.html</a><br />Kod nie jest idealny, ale działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 27 lip 2013, o 22:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-27T19:36:07+01:00</updated>
<published>2013-07-27T19:36:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43601#p43601</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43601#p43601"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43601#p43601"><![CDATA[
<div class="quotetitle">mesho napisał(a):</div><div class="quotecontent"><br />Właśnie to mi się podoba, że możliwości są ograniczone tylko wyobraźnią:)<br /></div><br /><br />DOKŁADNIE jak mówisz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />A jeśli chodzi o taki program - to uwierz, że nie chodzi od razu o jakąś zaawansowaną wielozadaniowość, która wg ciebie miałaby być jedyną alternatywą dla goto. Po prostu musisz się więcej próbować uczyć stosowania funkcji w C i wyprowadzania jak największych fragmentów kodu z pętli głównej programu do tychże funkcji - od tego się zaczyna. A później przyjdzie czas i na wielowątkowość <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2013, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2013-07-27T18:30:08+01:00</updated>
<published>2013-07-27T18:30:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43597#p43597</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43597#p43597"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43597#p43597"><![CDATA[
Nie, już trochę się grzebie przy tym C, a takie babole to wszystko przez to że książki mało czytam (sam zresztą widziałeś w którymś temacie moim), a próbuję robić &quot;na chłopski rozum&quot;, rozbić kolejne opcje na pojedyncze pętle, chociaż nie wiedziałem, że goto jest aż takie &quot;ble&quot;. <br />Rozumiem, żeby wszystko co się da było w jednej pętli, doprowadzić do tej pseudo wielozadaniowości, też tak można, nie przeczę i wedle rady będę starał się tworzyć tą metodą jak i nie wdrożę jej w ten projekt;)<br />Nad programem jeszcze popracuję, myślałem o wykorzystaniu budzika z RTC, można dodać jakiś odgłos, jak to kiedyś była moda na specjalne dzwonki budzika w telefonie:) Właśnie to mi się podoba, że możliwości są ograniczone tylko wyobraźnią:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 27 lip 2013, o 18:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-27T17:34:41+01:00</updated>
<published>2013-07-27T17:34:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43591#p43591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43591#p43591"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43591#p43591"><![CDATA[
ooops <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no rzeczywiście te instrukcje goto w kodzie w C to niestety troszkę powodują gęsią skórkę <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... Ale jak rozumiem to być może jakiś projekt pierwszy poważniejszy, być może przesiadka z Bascoma i dlatego tak nim tu pachnie przez to goto <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... i liczę, że kolega weźmie sobie to do serca starając się ZAPOMNIEĆ na zawsze, że takie polecenie w C istnieje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ok<br /><br />Obejrzałem całość <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... i potwierdzam, że sama idea bardzo fajna można sobie nawet nagrać KUKUŁKĘ żeby kukała zawsze np o 12-tej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />PLUS za pomysłowość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2013, o 17:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[luki]]></name></author>
<updated>2013-07-27T15:40:13+01:00</updated>
<published>2013-07-27T15:40:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43584#p43584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43584#p43584"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43584#p43584"><![CDATA[
Projekt bardzo fajny,oryginalny moja sugestia to takie zorganizowanie kodu które wyeliminuje używanie poleceń &quot;goto&quot; nawet mirek w swoich ksiażkach mówił żeby używać go tylko w ostateczności w przyszłym tygodniu przetestuje w realu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=273">luki</a> — 27 lip 2013, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-27T14:11:24+01:00</updated>
<published>2013-07-27T14:11:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43580#p43580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43580#p43580"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43580#p43580"><![CDATA[
O żesz w mordkę kurczątka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ale fajny projekcik <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />wieczorkiem jednak dopiero będę miał czas dokładniej poczytać i posłuchać dłużej Ivony <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />hahaha co projekt w naszym DIY to nie można się oderwać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2013, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2013-07-27T13:59:36+01:00</updated>
<published>2013-07-27T13:59:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43579#p43579</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43579#p43579"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43579#p43579"><![CDATA[
Nie koniecznie naręczny, przecież jako wolno stojący też się sprawdzi.<br /><br />Ba, nawet dla nas widzących mógłby to byc ciekawy gadżet którym można zaimponować znajomym.<br /><br />Pamiętam kiedy zrobiłem gadający dzwonek do drzwi to w klatce była mała sensacja. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 27 lip 2013, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2013-07-27T13:57:07+01:00</updated>
<published>2013-07-27T13:57:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43578#p43578</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43578#p43578"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43578#p43578"><![CDATA[
Zastanawiałem się nad tym... Gdyby jeszcze tylko zmieścić to wszystko w obudowie zegarka naręcznego, oj czemu nie:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 27 lip 2013, o 13:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2013-07-27T13:49:43+01:00</updated>
<published>2013-07-27T13:49:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43576#p43576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43576#p43576"/>
<title type="html"><![CDATA[Re: Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43576#p43576"><![CDATA[
Groźby by się znalazły. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br />Bardzo przydatne urządzenie np. dla niewidomych...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 27 lip 2013, o 13:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2013-07-27T13:46:37+01:00</updated>
<published>2013-07-27T13:46:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43575#p43575</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43575#p43575"/>
<title type="html"><![CDATA[Gadający zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3684&amp;p=43575#p43575"><![CDATA[
<img src="http://forum.atnel.pl/_obrazki/o/54/b0faa4214967a6836e4178481cb9c63a.jpg" alt="Obrazek" /><br />Witam!<br /><br />Chciałbym przedstawić kolejny projekt nad którym pracuję, ale urósł już on do jako takiej formy. Jako że mamy dostęp do odtwarzania plików wav z karty pamięci, czemu by tego nie wykorzystać aby stworzyć mówiący zegar?<br /><br />Jako że głosu jakiegoś specjalnego głosu radiowego nie mam, postanowiłem posłużyć się syntezatorem Ivona, który w wersji trial był wystarczający, abym mógł wygenerować to co na tą chwilę potrzebuję.<br /><br />W połączeniu z zegarem RTC PCF8583 powstał gadający zegar, posiadający na tą chwilę dwie funkcje gadania - godzina na życzenie oraz wypowiadanie o równej godzinie automatycznie.<br /><br />Zresztą co będę się dużo rozpowiadał - wszystko mówi poniższe nagranie:<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div> <br /><br />A co się kryje w kodzie? Oto i on:<br /><br />[syntax=c]/*<br /> * main.cF_CPU = 16MHz<br /> *<br /> * MCU = Atmega32<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;PetitFS/diskio.h&quot;<br />#include &quot;PetitFS/pff.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;player.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;ZEGAR/pcf_zegar.h&quot;<br /><br />#define PCF8583_ADDR 0xA2<br /><br />//zmienne na potrzeby tworzenia adresu plikow wav<br />char godzina&#91;5&#93;, minuta&#91;5&#93;, minuta_j&#91;5&#93;; //zmienne string przechowujace godzine z pcf'a<br />char godz_mow&#91;20&#93; = &quot;/godziny/&quot;; //zmienne przechowujace adres pliku dzwiekowego godziny<br />char min_mow&#91;20&#93; = &quot;/minuty/&quot;; //zmienne przechowujace adres pliku dzwiekowego minuty<br />char min_mow_j&#91;20&#93; = &quot;/minuty/&quot;; //zmienne przechowujace adres pliku dzwiekowego jednostek minut na wypadek liczb wiekszych od 20<br /><br />//funkcje porzadkujace kod<br />void czysc_tablice(void); //czyszczenie tablic do adresow plikow wav<br />void wyswietl_czas(void);<br />void zapisz_czas(uint8_t sekundy, uint8_t minuty, uint8_t godziny); //zapis czasu do pcf'a<br />void odczyt_czas(void);<br />uint8_t godziny_stara, godziny_nowa;<br /><br />//! **************** main() ***********************************************<br />int main(void) {<br />przyciski(); //funkcja uruchamiajaca obsluge tact-switchy<br />przygotuj_IO(); //uruchom wszystko od przerwan przez lcd po ustawienia wyjsc<br /><br />odczyt_czas(); //odczytaj czas z pcf'a<br /><br />start: //etykieta startu<br />godziny_nowa = godziny; //pierwsze porownanie przed podjeciem warunku<br />godziny_stara = godziny; //do wypowiedzenia &quot;wybila godzina &#91;x&#93;&quot;<br /><br />lcd_cls();<br /><br />while (1) {<br />lcd_locate(0, 1);<br />lcd_str(&quot;Clock by Mesho&quot;);<br />if (int0_flag) {<br /><br />odczyt_czas(); //odczytaj czas z pcf'a<br />// wyœwietlenie czasu na LCD<br />wyswietl_czas();<br />int0_flag = 0;<br />}<br /><br />//warunek do wypowiedzenia wybila godzina &#91;...&#93;<br />godziny_nowa = godziny;<br />if (godziny_stara != godziny_nowa) { //jeżeli poprzednia godzina różni się od obecnej<br />godziny_stara = godziny_nowa;<br />goto wybila;<br />}<br />godziny_stara = godziny_nowa;<br /><br />if (!(PINC &amp; P1))<br />goto mow_godzine;<br />if (!(PINC &amp; P2))<br />goto nastaw;<br /><br />}<br />mow_godzine:<br />//czysc_tablice();<br />// **************** pêtla g³ówna **********************************<br />while (1) {<br /><br />itoa(godziny, godzina, 10);<br />strncat(godz_mow, godzina, 2);<br />strcat(godz_mow, &quot;.wav&quot;);<br /><br />if ((minuty &lt; 20) || (minuty &gt;= 20 &amp;&amp; minuty % 10 == 0)) { //jezeli minuty mniejsze od 20, lub wieksze od 10 i są wielokrotnoscia 10<br />itoa(minuty, minuta, 10); //konwersja na string<br />strncat(min_mow, minuta, 2); //laczenie adresu<br />strcat(min_mow, &quot;m.wav&quot;); //koncowka adresu<br />}<br />if (minuty &gt;= 20 &amp;&amp; (minuty % 10) != 0) { //jezeli minuty wieksze od 20 i nie są wielokrotnoscia 10<br />itoa(minuty - (minuty % 10), minuta, 10); //konwersja na string pliku dziesiatek<br />strncat(min_mow, minuta, 2); //łączenie adresu<br />strcat(min_mow, &quot;m.wav&quot;); //koncowka adresu<br /><br />itoa(minuty % 10, minuta_j, 10); //konwersja na string pliku jedności<br />strncat(min_mow_j, minuta_j, 2); //laczenie adresu<br />strcat(min_mow_j, &quot;m.wav&quot;); //koncowka adresu<br />}<br /><br />if (pf_mount(&amp;Fs))<br />continue; /* Initialize FS */<br />if (pf_opendir(&amp;Dir, &quot;&quot;))<br />break;<br /><br />if (play(&quot;godzina.wav&quot;))<br />break;// odtwarzaj plik WAV<br />_delay_ms(200);<br /><br />if (godziny) { //jezeli nie ma północy<br />if (play(godz_mow))<br />break;// odtwarzaj plik WAV<br />} else if (play(&quot;/godziny/24.wav&quot;)) //jeżeli jest północ powiedz dwudziesta czwarta<br />break;// odtwarzaj plik WAV<br /><br />if (minuty) { //jeżeli minuty większe od 0<br />if (minuty &gt;= 20 &amp;&amp; (minuty % 10) != 0) { //jezeli liczba wieksza od 20 i nie jest wielokrotnoscia 10 powiedz dziesiatke i jednosc<br />if (play(min_mow))<br />break;<br />if (play(min_mow_j))<br />break;<br />} else { //jak nie powiedz tylko cala liczbe<br />if (play(min_mow))<br />break;<br />}<br />}<br />czysc_tablice();<br />goto start;<br />}<br /><br />nastaw: _delay_ms(500);<br />while (1) {<br />lcd_locate(0, 0);<br />lcd_str(&quot;Nastaw godzine:&quot;);<br />// wyœwietlenie czasu na LCD<br />wyswietl_czas();<br />if (!(PINC &amp; P3)) {<br />godziny++;<br />_delay_ms(200);<br />}<br />if (!(PINC &amp; P4)) {<br />godziny--;<br />_delay_ms(200);<br /><br />}<br />if (godziny &gt; 23)<br />godziny = 0; //blokada wyjscia poza zakres godzin<br />if (godziny &lt; 0)<br />godziny = 23; //blokada wyjscia poza zakres godzin<br /><br />if (!(PINC &amp; P2))<br />goto nastaw_min;<br />}<br />nastaw_min: _delay_ms(500);<br />lcd_cls();<br />while (1) {<br />lcd_locate(0, 0);<br />lcd_str(&quot;Nastaw minute:&quot;);<br />wyswietl_czas();<br /><br />if (!(PINC &amp; P3)) {<br />minuty++;<br />_delay_ms(200);<br />}<br />if (!(PINC &amp; P4)) {<br />minuty--;<br />_delay_ms(200);<br /><br />}<br />if (minuty &gt; 59)<br />minuty = 0; //blokada wyjscia poza zakres minut<br />if (minuty &lt; 0)<br />minuty = 59; //blokada wyjscia poza zakres minut<br />if (!(PINC &amp; P2)) {<br />_delay_ms(200);<br />zapisz_czas(55, minuty, godziny);<br />goto start;<br />}<br />}<br /><br />wybila:<br />while (1) {<br /><br />itoa(godziny, godzina, 10);<br />strncat(godz_mow, godzina, 2);<br />strcat(godz_mow, &quot;.wav&quot;);<br /><br />if (pf_mount(&amp;Fs))<br />continue; // Initialize FS<br />if (pf_opendir(&amp;Dir, &quot;&quot;))<br />break;<br /><br />if (play(&quot;wybila.wav&quot;))<br />break;// odtwarzaj plik WAV<br />if (godziny) { //jezeli nie ma północy<br />if (play(godz_mow))<br />break;// odtwarzaj plik WAV<br />} else if (play(&quot;/godziny/24.wav&quot;)) //jeżeli jest północ powiedz dwudziesta czwarta<br />break;// odtwarzaj plik WAV<br />czysc_tablice();<br />goto start;<br />}<br /><br />}<br />//********************************************************************************************<br /><br />void zapisz_czas(uint8_t sekundy, uint8_t minuty, uint8_t godziny) {<br />bufor&#91;0&#93; = 0;// setne czêœci sekundy<br />bufor&#91;1&#93; = dec2bcd(sekundy);// sekundy<br />bufor&#91;2&#93; = dec2bcd(minuty);// minuty<br />bufor&#91;3&#93; = dec2bcd(godziny);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamiêci RAM naszego RTC<br />TWI_write_buf(PCF8583_ADDR, 0x01, 4, bufor);<br />}<br /><br />void odczyt_czas(void) {<br />//odczyt 4 bajtów do bufora od adresu 0x01 z pamiêci RAM naszego RTC<br />TWI_read_buf(PCF8583_ADDR, 0x01, 4, bufor);<br /><br />sekundy = bcd2dec(bufor&#91;ss&#93;);<br />minuty = bcd2dec(bufor&#91;mm&#93;);<br />godziny = bcd2dec(bufor&#91;hh&#93;);<br />}<br /><br />void wyswietl_czas(void){<br />lcd_locate(1, 5);<br />if (godziny &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if (minuty &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />}<br /><br />void czysc_tablice(void) {<br />//czyszczenie tablic na ponowne wypelnienie<br />for (uint8_t i = 9; i &lt; 11; i++)<br />godz_mow&#91;i&#93; = '\0';<br />for (uint8_t i = 8; i &lt; 10; i++)<br />min_mow&#91;i&#93; = '\0';<br />for (uint8_t i = 8; i &lt; 10; i++)<br />min_mow_j&#91;i&#93; = '\0';<br />}[/syntax]<br /><br />Klasycznie biblioteki z książek zamazałem, kto je posiada i ma łeb na karku - będzie potrafił złożyć to do kupy:) Co do samego odtwarzania - starałem się maksymalnie uprościć procedurę wyboru pliku z żądaną godziną i minutą, pewnie wyższym udało by się to zrobić lepiej, ale działa. Nad programem jeszcze będę pracował, na razie na tą chwilę jest może nieco bałagan w kodzie, wprowadzę obsługę przycisków bez _delay_ms(), efektywniejsze nastawianie zegara i może jeszcze jakieś dodatki - zależy co do głowy przyjdzie.<br /><br /><a href="https://docs.google.com/file/d/0ByyXOOtWDAmuWFI4ZGFTUWdYNUE/edit?usp=sharing"  class="postlink">https://docs.google.com/file/d/0ByyXOOtWDAmuWFI4ZGFTUWdYNUE/edit?usp=sharing</a><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/381/0406a3fe960d4bed926c196a9105790f.PNG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/381/0406a3fe960d4bed926c196a9105790f.PNG" alt="Obrazek" /></a><br />Resztę plików, jako że ich się trochę uzbierało, umieściłem razem z plikami wygenerowanymi przez syntezator do karty pamięci.<br /><br />Jakieś pytania, sugestie, groźby?<br /><br />Pozdrawiam,<br />Mesho <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 27 lip 2013, o 13:46</p><hr />
]]></content>
</entry>
</feed>