<?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=47&amp;t=9154&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-09T10:12:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=9154&amp;mode</id>
<entry>
<author><name><![CDATA[SyntaxError]]></name></author>
<updated>2014-11-09T10:12:04+01:00</updated>
<published>2014-11-08T23:51:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9154&amp;p=102972#p102972</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9154&amp;p=102972#p102972"/>
<title type="html"><![CDATA[Funkcja do tworzenia melodyjek.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9154&amp;p=102972#p102972"><![CDATA[
Pierwszy post na forum więc witam wszystkich. <br />Napisałem sobie takie coś. Może się komuś przyda, funkcja grająca dowolny dźwięk z zakresu dwóch oktaw. <br />[syntax=cpp]#include &quot;Arduino.h&quot;<br />void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)<br />{<br />          int x; <br />          long delayAmount = (long)(1000000/frequencyInHertz);<br />          long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));<br />          for (x=0; x&lt;loopTime; x++) { <br />              digitalWrite(speakerPin, HIGH);<br />              delayMicroseconds(delayAmount);<br />              digitalWrite(speakerPin, LOW);<br />              delayMicroseconds(delayAmount);<br />          } <br />}<br /><br />char toup(char x) {<br />if(x=='a') return 'A';<br />if(x=='b') return 'B';<br />if(x=='c') return 'C';<br />if(x=='d') return 'D';<br />if(x=='e') return 'E';<br />if(x=='f') return 'F';<br />if(x=='g') return 'G';<br />if(x=='h') return 'H';<br />if(x!='a' || x!='b' || x!='c' || x!='d' || x!='e' || x!='f' || x!='g' || x!='h') return x; <br />}<br /><br />void playsn(int pin, int okt, char dzwiek, bool is, int dlugosc) {<br />int frequency;<br />switch(okt) {<br />case 1: { <br />if(toup(dzwiek)=='C' &amp;&amp; is==false) frequency=523;<br />if(toup(dzwiek)=='C' &amp;&amp; is==true) frequency=554;<br /><br />if(toup(dzwiek)=='D' &amp;&amp; is==false) frequency=587;<br />if(toup(dzwiek)=='D' &amp;&amp; is==true) frequency=622;<br /><br />if(toup(dzwiek)=='E') frequency=659;<br /><br />if(toup(dzwiek)=='F' &amp;&amp; is==false) frequency=698;<br />if(toup(dzwiek)=='F' &amp;&amp; is==true) frequency=740;<br /><br />if(toup(dzwiek)=='G' &amp;&amp; is==false) frequency=784;<br />if(toup(dzwiek)=='G' &amp;&amp; is==true) frequency=830;<br /><br />if(toup(dzwiek)=='A' &amp;&amp; is==false) frequency=880;<br />if(toup(dzwiek)=='A' &amp;&amp; is==true) frequency=932;<br /><br />if(toup(dzwiek)=='H' || toup(dzwiek)=='B') frequency=987;<br />} break;<br />case 2: {<br />if(toup(dzwiek)=='C' &amp;&amp; is==false) frequency=1046;<br />if(toup(dzwiek)=='C' &amp;&amp; is==true) frequency=1108;<br /><br />if(toup(dzwiek)=='D' &amp;&amp; is==false) frequency=1174;<br />if(toup(dzwiek)=='D' &amp;&amp; is==true) frequency=1244;<br /><br />if(toup(dzwiek)=='E') frequency=1318;<br /><br />if(toup(dzwiek)=='F' &amp;&amp; is==false) frequency=1397;<br />if(toup(dzwiek)=='F' &amp;&amp; is==true) frequency=1479;<br /><br />if(toup(dzwiek)=='G' &amp;&amp; is==false) frequency=1568;<br />if(toup(dzwiek)=='G' &amp;&amp; is==true) frequency=1661;<br /><br />if(toup(dzwiek)=='A' &amp;&amp; is==false) frequency=1760;<br />if(toup(dzwiek)=='A' &amp;&amp; is==true) frequency=1864;<br /><br />if(toup(dzwiek)=='H' || toup(dzwiek)=='B') frequency=1975;<br />} break;<br /><br />} //switch<br />beep(pin, frequency, dlugosc);<br />}[/syntax]<br /><br />Krótki opis funkcji i argumentów:<br /><strong>playsn(int PIN, int OKTAWA, char DŹWIĘK, bool POLOWKA, int DLUGOSC);</strong><br /><br />PIN - Pin, na którym generujemy dźwięk. <br />OKTAWA - Do wyboru 1(niższa) lub 2(wyższa). <br />DŹWIĘK - Literka odpowiadająca nutce, np. C lub D lub E lub F lub G lub A lub H lub B.<br />POLOWKA - Flaga podwyższająca o pół tonu jeśli jest prawdą, np. playsn(0, 1, 'F', true, 500); da dźwięk Fis lub playsn(0, 1, 'A', true, 500); da dźwięk Ais. <br />DLUGOSC - Czas trwania dźwięku w milisekundach.<br /><br />A tu przykład jakiejś tam banalnej melodyjki: <br />[syntax=cpp]//Tu wklej sobie te moje trzy funkcje, czy tam zrób z nich sobie biblioteke i #include. <br />void setup() {<br />pinMode(0, OUTPUT);<br />}<br /><br />void loop() {<br />playsn(0, 1, 'A', false, 150);<br />delay(50);<br /><br />playsn(0, 1, 'H', false, 150);<br />delay(50);<br /><br />playsn(0, 2, 'C', true, 150);<br />delay(50);<br /><br />playsn(0, 2, 'E', false, 150);<br />delay(50);<br /><br />delay(200); // pauza <br /><br />playsn(0, 2, 'C', true, 150);<br />delay(50);<br /><br />playsn(0, 2, 'E', false, 150);<br />delay(50);<br /><br />delay(200); // pauza <br /><br /><br /><br />playsn(0, 1, 'A', true, 150);<br />delay(50);<br /><br />playsn(0, 2, 'C', false, 150);<br />delay(50);<br /><br />playsn(0, 2, 'D', false, 150);<br />delay(50);<br /><br />playsn(0, 2, 'F', false, 150);<br />delay(50);<br /><br />delay(200); // pauza <br /><br />playsn(0, 2, 'D', false, 150);<br />delay(50);<br /><br />playsn(0, 2, 'F', false, 150);<br />delay(50);<br /><br />delay(200); // pauza <br />}[/syntax]<br /><br />EDIT: Sorry, na czerwono jak byk pisze &quot;Do wstawiania kodu używamy znacznika 'syntax' zamiast znacznika 'code' &quot; i tak też zrobiłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6548">SyntaxError</a> — 8 lis 2014, o 23:51</p><hr />
]]></content>
</entry>
</feed>