--org-mode: WHOLE FILE

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?board=projects

-- This is more about "Exhibition What you've made with Arduino." --

Arduino is a general purpose I/O board.

- An example of input would be a temperature sensor,
- an example of an output would be a relay.

In this example application, the Arduino could be programmed as
- a computerised temperature controller.

This is but one application of the Arduino, others would include:
- Robots,
- Embedded Electronics,
- Web Devices via Ethernet Shield, etc.

A range of completed projects can be found on the Arduino Forums here:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?board=projects

-- This is more about "Uses Of Arduino" --

http://www.tinkersoup.de/product_info.php?products_id=363

-- This is more about "Fritzing Starter Kit / Arduino Uno" --

http://fritzing.org/shop/starter-kit/

-- This is more about "STARTER KIT Get a Fritzing Starter Kit to start learning Arduino and support Fritzing" --

/* Dallam
Ez a program piezoelektromos kristállyal dallamot játszik.
Megfelelő gyakorisággal 5V (HIGH), majd 0V (LOW) feszültséget
küld a piezoelektromos kristályra.
A HIGH és a LOW érték váltakozása tulajdonképpen szögletes
hullám:
__ _____ ___ 5V
_| |__| |____| |_ 0V

szün magas szün magas szün magas szün

A négyszögletes hullám szöneteinek, magas, és alacsony részeinek
id𕆾li hosszúsága meghatározható az Arduino lap
beprogramozásával.

A piezoelektromos kristály egy vékony, körlap alakú fémlemezre
(membránra) van ragasztva, ezért a membrán a kristállyal együtt
változtatja alakját:
5V feszültségnél a membrán kidomborodik,
0V feszültségnél pedig visszanyeri eredeti, sík alakját.

Ha a membrán ezt az alakváltozást megfelelő gyakorisággal
(rezgésszámmal) teszi, akkor a rezgésszámnak megfelelő
magasságú hangot hoz létre.

Az áramkör:
* a piezo elem + (piros) kivezetése csatlakozik a digitális
9-ik tűre,
* a piezo elem - (fekete) kivezetése le van földelve.

http://arduino.cc/en/Tutorial/Melody

Készítette: dátum ismeretlen,
szerző ismeretlen.
Magyarra fordította és átírta 2012. július 6-án
Csányi Pál

A zenei hang magasságát a következő matematikai képlet adja:

magasIdeje = időszakasz / 2 = 1 / (2 x hangRezgésszáma)

ahol a magasIdeje a négyszöghullám magas részének id𕆾li
hossza.
A különböző hangokat a következő táblázat írja le:

hang rezgésszám időszakasz magasIdeje
c 261 Hz 3830 1915
d 294 Hz 3400 1700
e 329 Hz 3038 1519
f 349 Hz 2864 1432
g 392 Hz 2550 1275
a 440 Hz 2272 1136
h 493 Hz 2028 1014
C 523 Hz 1912 956

Ez a példaprogram public domain szabadalom alatt áll.
*/

-- This is more about "A program fejléce" --

// a piezoelektromos kristály "hangszóró" a 9-ik
// digitális tűre van csatlakoztatva
int hangszoroTu = 9;

// a hangjegyek száma a dallamban
int ahangjegyekszama = 28;

// a dallam egy sorozatban vannak megadva
// a betűk a hangjegyeket, a végén a szóköz szünetet jelent
char hangjegysor[] = "cecegg cecegg Chagfa gfedcc ";

// az egymást követő hangok hossza egy sorozatban van megadva
int hanghossza[] = { 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,1,1,1,2,1,1,1,1,1,1,2,1,4 };
int sebesseg = 300;

-- This is more about "Változók megadása" --

// létrehozza a szolaHang függvényt, amely megszólaltatja a hangot
// a függvény két egész számú változót kér, melyek: hang és idotartam
// a hang változó a szolaHangjegyHangja függvényben kap értéket
// Itt rezegtetjük meg a membránt!
void szolaHang(int hang, int idotartam) {

// alább egy ismétlᔝő rész következik:
// tedd, míg i kisebb (időtartam x 1000L) értékénél
// Mi az L? Válasz itt, az U & L formatters cím alatt:
//http://arduino.cc/en/Reference/IntegerConstants
// i értékét növeld minden lépésben a hang változó kétszeresével
// i += hang * 2 jelentése: i = i + hang x 2
for (long i = 0; i < idotartam * 1000L; i += hang * 2) {
// 5 Voltot adunk a piezoelektromos kristálynak
digitalWrite(hangszoroTu, HIGH);
// legyen 5V a 'hang' értékének megfelelő időhosszig
delayMicroseconds(hang);
// 0 Voltot adunk a piezoelektromos kristálynak
digitalWrite(hangszoroTu, LOW);
// legyen 0V a 'hang' értékének megfelelő időhosszig
delayMicroseconds(hang);
}
}

-- This is more about "szolaHang függvény" --

// létrehozza a szolaHangjegyHangja függvényt, amely
// kér egy betűjel (hangjegy), és egy egész számú (idotartam) változót,
// megadja a hangjegyek neveit és a nekik megfelelő hosszúságú időtartamot,
// ameddig majd kapják a szögletes hullám MAGAS értékét.
void szolaHangjegyHangja(char hangjegy, int idotartam) {
char hangjegynevek[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'h', 'C' };
int hangok[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

// lejátssza a hangjegy nevének megfelelő hangot
for (int i = 0; i < 8; i++) {
// ha a hangjegyeknevek sorozatból az egyik elem
// megfelel a hangjegy változó pillanatnyi értékének
if (hangjegynevek[i] == hangjegy) {
// akkor hívja a szolaHang függvényt a következő változókkal
// hangok és időtartam; itt a hangok[i] értéke
// lesz a hang változó értéke a szolaHang függvény számára
szolaHang(hangok[i], idotartam);
}
}
}

-- This is more about "szolaHangjegyHangja függvény" --

// a digitális 9-ik tű kimenetre van beállítva
void setup() {
pinMode(hangszoroTu, OUTPUT);
}

-- This is more about "Beállítások" --

// ezt ismételgeti, míg le nem játszotta
// a dallam összes hangját
void loop() {
// amíg az i változó értéke nem lesz 28, addig ismétli
// a lenti parancsokat, vagyis lejátssza egyenként
// a dallam hangjait
for (int i = 0; i < ahangjegyekszama; i++) {
// ha a hangjegysor eleme szóköz,
if (hangjegysor[i] == ' ') {
// akkor szünet lesz egy darabig
delay(hanghossza[i] * sebesseg); // ez a szünet
} else {
// máskülönben megszólal egy hang a hangjegysorból
// hívjuk a szolaHangjegyHangja függvényt, megadva neki a
// a hangjegysor egyik elemét, a hang hosszát szorozva a sebességgel
szolaHangjegyHangja(hangjegysor[i], hanghossza[i] * sebesseg);
}

// szünet a dallam hangjai között
delay(sebesseg / 2);
}
}

-- This is more about "Hurok rész" --