60 nap alatt Arduino #07 - SOS villogó
-
- Újonc
- Hozzászólások: 5
- Csatlakozott: 2015. augusztus 17. hétfő, 20:51
Re: 60 nap alatt Arduino #07 - SOS villogó
Üdv mindenkinek!
ez az én SOS kódom /elég kezdetleges/
void setup() {
// a 13-as PIN kimenet
pinMode(13, OUTPUT);
}
void loop() {
//S
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
//O
digitalWrite(13, HIGH); // LED bekapcs
delay(600); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(600); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(600); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(600); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(600); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(600); // késleltetés - világítás közti szünet időtartama
//S
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(2000); // késleltetés - két SOS közti szünet időtartama
}
Rákerestem a neten, és a GitHub -on találtam egy sokkal elegánsabbat (-:
int LED = 13;
int s = 300;
int o = 800;
void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT);
}
void character(int speed) {
digitalWrite(LED, HIGH);
delay(speed);
digitalWrite(LED, LOW);
delay(300);
}
void loop() {
// put your main code here, to run repeatedly:
for (int x = 1; x <= 3; x++) {
character(s);
}
delay(100);
for (int x = 1; x <= 3; x++) {
character(o);
}
delay(100);
for (int x = 1; x <= 3; x++) {
character(s);
}
delay(2000);
}
Amit kérdezni szeretnék ezzel kapcsolatban: - miért lesz az én kódom, ami sokkal hosszabban van megírva csak 9 byte és a GitHub féle 15 byte?
A GitHub féle kódot még csak kezdem megérteni, de valószínűleg lesz még kérdésem vele kapcsolatban.
Egyelőre ennyi, várom a hozzászólásokat.
Üdv!
K.D.
ez az én SOS kódom /elég kezdetleges/
void setup() {
// a 13-as PIN kimenet
pinMode(13, OUTPUT);
}
void loop() {
//S
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
//O
digitalWrite(13, HIGH); // LED bekapcs
delay(600); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(600); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(600); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(600); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(600); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(600); // késleltetés - világítás közti szünet időtartama
//S
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(300); // késleltetés - világítás közti szünet időtartama
digitalWrite(13, HIGH); // LED bekapcs
delay(300); // késleltetés - világítás időtartama
digitalWrite(13, LOW); // LED kikapcs
delay(2000); // késleltetés - két SOS közti szünet időtartama
}
Rákerestem a neten, és a GitHub -on találtam egy sokkal elegánsabbat (-:
int LED = 13;
int s = 300;
int o = 800;
void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT);
}
void character(int speed) {
digitalWrite(LED, HIGH);
delay(speed);
digitalWrite(LED, LOW);
delay(300);
}
void loop() {
// put your main code here, to run repeatedly:
for (int x = 1; x <= 3; x++) {
character(s);
}
delay(100);
for (int x = 1; x <= 3; x++) {
character(o);
}
delay(100);
for (int x = 1; x <= 3; x++) {
character(s);
}
delay(2000);
}
Amit kérdezni szeretnék ezzel kapcsolatban: - miért lesz az én kódom, ami sokkal hosszabban van megírva csak 9 byte és a GitHub féle 15 byte?
A GitHub féle kódot még csak kezdem megérteni, de valószínűleg lesz még kérdésem vele kapcsolatban.
Egyelőre ennyi, várom a hozzászólásokat.
Üdv!
K.D.
Re: 60 nap alatt Arduino #07 - SOS villogó
9 / 15 byte hogy jött ki???
Jelen leckékben még NEM ismert a for, a változó fogalma...
Jelen leckékben még NEM ismert a for, a változó fogalma...

-
- Újonc
- Hozzászólások: 5
- Csatlakozott: 2015. augusztus 17. hétfő, 20:51
Re: 60 nap alatt Arduino #07 - SOS villogó

Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: 60 nap alatt Arduino #07 - SOS villogó
Ez a változók helyfoglalása. Ha If/ciklus/szubrutin van, az plusz memóriát igényel.
A programméret a felette levő sor. ~1200..1300 byte.
A programméret a felette levő sor. ~1200..1300 byte.
Re: 60 nap alatt Arduino #07 - SOS villogó
Sziasztok !
Az eddig tanultak alapján az én SOS villogóm
Az eddig tanultak alapján az én SOS villogóm
/* Feladat: SOS jelsorozat elvillogtatása
Jel Időtartam
Rövid (ti) 1 egység
Hosszú (tá) 3 egység
Jelköz (Betűn belüli szünet a jelek között.) 1 egység
Betűköz (Betűk közötti szünet.) 3 egység
Szóköz (Szavak és mondatok közötti szünet.) 7 egység
*/
void setup() {
pinMode(13, OUTPUT); //13 pin kimenet (LED)
}
void loop() {
// S morse kód: ti,ti,ti
digitalWrite(13, HIGH); // LED bekapcsolás
delay(200); // várakozás (1 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, HIGH); // LED bekapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, HIGH); // LED bekapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(600); // 3 egység szünet, betűköz
// O morse kód: tá,tá,tá
digitalWrite(13, HIGH); // LED bekapcsolás
delay(600); // várakozás (3 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, HIGH); // LED bekapcsolás
delay(600); // várakozás (3 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, HIGH); // LED bekapcsolás
delay(600); // várakozás (3 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(600); // 3 egység szünet, betűköz)
// S morse kód: ti,ti,ti
digitalWrite(13, HIGH); // LED bekapcsolás
delay(200); // várakozás (1 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, HIGH); // LED bekapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, HIGH); // LED bekapcsolás
delay(200); //várakozás (1 egység)
digitalWrite(13, LOW); // LED kikapcsolás
delay(1400); // 7 egység szünet, szóköz
}
Re: 60 nap alatt Arduino #07 - SOS villogó
Sziasztok!
Most, hogy elkezdtem a "60 nap alatt Arduino" tanfolyást, ami nagyon bejön,
ez lenne az első HF megoldásom.
Most, hogy elkezdtem a "60 nap alatt Arduino" tanfolyást, ami nagyon bejön,
ez lenne az első HF megoldásom.

Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: 60 nap alatt Arduino #07 - SOS villogó
Az első próba ilyen lett.Jelenleg a tesztelés még nem történt meg. Reménység szerint működik.
Láttam más megoldásokat, de az eddig tanultak alapján próbáltam megcsinálni.
Megpróbáltam a fórumra beküldést, de az elég durván nézett ki, így a másol, beillesztést választottam.
Bár a BUÉK-ot is meg lehetne próbálni, de már a morze ABC rég volt.
//S O S próba
//rövid jel 100
//hosszú jel 500
//betű köz 500
//szóköz 1000
void setup () {
pinMode (13, OUTPUT)
//'13-as pin' bemenetté válik
}
//A program indítása S O S
void loop () {
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)//
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(500)//betű köz
digitalWrite (pin, HIGH); led bekapcsol
delay(500)//tá
digitalWrite (pin, LOW); led kikapcsol
delay(500)
digitalWrite (pin, HIGH); led bekapcsol
delay(500)//tá
digitalWrite (pin, LOW); led kikapcsol
delay(500)
digitalWrite (pin, HIGH); led bekapcsol
delay(500)//tá
digitalWrite (pin, LOW); led kikapcsol
delay(500)//betű köz
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)//
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(1000)//szóköz
}
Láttam más megoldásokat, de az eddig tanultak alapján próbáltam megcsinálni.
Megpróbáltam a fórumra beküldést, de az elég durván nézett ki, így a másol, beillesztést választottam.
Bár a BUÉK-ot is meg lehetne próbálni, de már a morze ABC rég volt.

//S O S próba
//rövid jel 100
//hosszú jel 500
//betű köz 500
//szóköz 1000
void setup () {
pinMode (13, OUTPUT)
//'13-as pin' bemenetté válik
}
//A program indítása S O S
void loop () {
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)//
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(500)//betű köz
digitalWrite (pin, HIGH); led bekapcsol
delay(500)//tá
digitalWrite (pin, LOW); led kikapcsol
delay(500)
digitalWrite (pin, HIGH); led bekapcsol
delay(500)//tá
digitalWrite (pin, LOW); led kikapcsol
delay(500)
digitalWrite (pin, HIGH); led bekapcsol
delay(500)//tá
digitalWrite (pin, LOW); led kikapcsol
delay(500)//betű köz
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)//
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(100)
digitalWrite (pin, HIGH); led bekapcsol
delay(100)//ti
digitalWrite (pin, LOW); led kikapcsol
delay(1000)//szóköz
}
Re: 60 nap alatt Arduino #07 - SOS villogó
Bocs, de egy csomó szintaktikai hibát kaptam. Így van az, ha a hibaüzenetet az ember nem értelmezi.
A jóváhagyott a következő:
//S O S próba
//rövid jel 100
//hosszú jel 500
//betű köz 500
//szóköz 1000
void setup() {
pinMode(13, OUTPUT);
//'13-as pin' kimenetté válik
}
//A program indítása S O S
void loop() {
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);//
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(500);//betű köz
digitalWrite(13, HIGH); //led bekapcsol
delay(500);//tá
digitalWrite(13, LOW); //led kikapcsol
delay(500);
digitalWrite(13, HIGH); //led bekapcsol
delay(500);//tá
digitalWrite(13, LOW); //led kikapcsol
delay(500);
digitalWrite(13, HIGH); //led bekapcsol
delay(500);//tá
digitalWrite(13, LOW); //led kikapcsol
delay(500);//betű köz
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);//
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(1000);//szóköz
}
A jóváhagyott a következő:
//S O S próba
//rövid jel 100
//hosszú jel 500
//betű köz 500
//szóköz 1000
void setup() {
pinMode(13, OUTPUT);
//'13-as pin' kimenetté válik
}
//A program indítása S O S
void loop() {
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);//
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(500);//betű köz
digitalWrite(13, HIGH); //led bekapcsol
delay(500);//tá
digitalWrite(13, LOW); //led kikapcsol
delay(500);
digitalWrite(13, HIGH); //led bekapcsol
delay(500);//tá
digitalWrite(13, LOW); //led kikapcsol
delay(500);
digitalWrite(13, HIGH); //led bekapcsol
delay(500);//tá
digitalWrite(13, LOW); //led kikapcsol
delay(500);//betű köz
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);//
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(100);
digitalWrite(13, HIGH); //led bekapcsol
delay(100);//ti
digitalWrite(13, LOW); //led kikapcsol
delay(1000);//szóköz
}
Re: 60 nap alatt Arduino #07 - SOS villogó
Az én is így oldottam meg.
A morse jelek hossza meghatározott!
/*
rövid jel (ti – 1 egység hosszú);
hosszú jel (tá 3 egység hosszú);
rövid szünetjel (jelköz – 1 egység hosszú);
hosszú szünetjel (betűköz – 3 egység hosszú);
nagyon hosszú szünetjel (szóköz és mondatköz - 7 egység hosszú).
*/
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(300);
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(700);
A morse jelek hossza meghatározott!
/*
rövid jel (ti – 1 egység hosszú);
hosszú jel (tá 3 egység hosszú);
rövid szünetjel (jelköz – 1 egység hosszú);
hosszú szünetjel (betűköz – 3 egység hosszú);
nagyon hosszú szünetjel (szóköz és mondatköz - 7 egység hosszú).
*/
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(300);
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(700);
Re: 60 nap alatt Arduino #07 - SOS villogó
Látens tudásként már a C++ nyelv függvévy-központúságát is ismerhetik a tanulók, hiszen használják a setup() és a loop() függvényeket.
Akor a sormintázást a fizikusok lustaságával minimálisra lehetne csökkenteni, kiküszöbölve a programsorok ismétlődését.
Eretnek megoldást javaslok:
Ne csak a setup() és a voop() függvény legyen a kódban, hanem minden kettőnél többször ismétlődő részletet tegyünk ki külön egységbe.
És mivel egy C++ dialektusban vagyunk, ez a külön egység legyen szintén függvény! (habár sem bemenő paramétere, sem visszatérő értéke nem lesz, a C++ nyelvi sajátossága miatt akkor is függvénynek nevezzük ezeket)
A dolog előnye, hogy ha változtatni kell az időzítéseket, azt legelől, egy helyen megtehetjük, nem kell a sormintát végigbogarászni az időzítések után.
Akor a sormintázást a fizikusok lustaságával minimálisra lehetne csökkenteni, kiküszöbölve a programsorok ismétlődését.
Eretnek megoldást javaslok:
Ne csak a setup() és a voop() függvény legyen a kódban, hanem minden kettőnél többször ismétlődő részletet tegyünk ki külön egységbe.
És mivel egy C++ dialektusban vagyunk, ez a külön egység legyen szintén függvény! (habár sem bemenő paramétere, sem visszatérő értéke nem lesz, a C++ nyelvi sajátossága miatt akkor is függvénynek nevezzük ezeket)
Kód: Egész kijelölése
//S O S próba
const int tti=100; //rövid jel 100 ms
const int tta=300; //hosszú jel 300 ms
const int ttk=100; //ti-tá köz: 100 ms
const int tbk=300; //betűköz 300 ms
//const int szki=500; //szóköz 500 ms
const byte pin=13; //LED-es láb a panelon
void setup()
{
pinMode(pin, OUTPUT); //'13-as pin' kimenetté válik
}
//A program indítása
void loop()
{
ess; //meghívja az 'S' betűt összeállító részt
ooo; //meghívja az 'O' betűt összeállító részt
ess; //meghívja az 'S' betűt összeállító részt
szun; // a szó végén hagy egy szóközt (ttk+tbk+tbk)
}
// És eddig tart a futó rész
//----------------------------------
//kiszolgáló függvények
//----------------------------------
// Az 'S' betű ti ti ti szünet
void ess()
{
ti; //meghívja a TI jelet összeállító részt
ti; //meghívja a TI jelet összeállító részt
ti; //meghívja a TI jelet összeállító részt
szun; // a betű végén hagy egy szóközt (ttk+tbk)
}
// Az 'O' betű ta ta ta szünet
void ooo()
{
ta; //meghívja a TA jelet összeállító részt
ta; //meghívja a TA jelet összeállító részt
ta; //meghívja a TA jelet összeállító részt
szun; // a betű végén hagy egy szóközt (ttk+tbk) ta;
}
//Egy ti jel 100ms-ig felgyullad majd vár ttk-ig
void ti ()
{
digitalWrite (pin, HIGH);
delay(tti);
digitalWrite (pin, LOW);
delay(ttk);
}
// Egy TÁ jel 300ms-ig felgyullad majd vár ttk-ig
void ta ()
{
digitalWrite (pin, HIGH);
delay(tta);
digitalWrite (pin, LOW);
delay(ttk);
}
// szünet a betűk és a szavak között. vár tbk-ig
void szun()
{
delay(tbk);
}
Kód: Egész kijelölése
const int tti=100; //rövid jel 100 ms
const int tta=300; //hosszú jel 300 ms
const int ttk=100; //ti-tá köz: 100 ms
const int tbk=300; //betűköz 300 ms
//const int szki=500; //szóköz 500 ms
Re: 60 nap alatt Arduino #07 - SOS villogó
csak arra nem emlékszem, hogy a változókat tanultuk-e már ekkor? 

Re: 60 nap alatt Arduino #07 - SOS villogó
Nem, még ekkor nincsen a tudásban a változók...
És sem a függvények.
Csak az alapok:
- In/out lábállítás,
- high/low kimenetként,
- LED bekötése,
- setup(), loop(),
- delay().
Ebből csak a "sorminta" megvalósítható....
És sem a függvények.
Csak az alapok:
- In/out lábállítás,
- high/low kimenetként,
- LED bekötése,
- setup(), loop(),
- delay().
Ebből csak a "sorminta" megvalósítható....

http://www.tavir.hu - a gazda 

Re: 60 nap alatt Arduino #07 - SOS villogó
Sziasztok!
Nagy nehezen rászántam magam az Arduino rendszer tanulására, kipróbálására. Első benyomások pozitívak.
Az #1 házi is elkészült.
Nagy nehezen rászántam magam az Arduino rendszer tanulására, kipróbálására. Első benyomások pozitívak.
Az #1 házi is elkészült.
Kód: Egész kijelölése
// Ebben a példában nemzetközi vészjelzést (SOS) fogunk küldeni
// fényjel formában, egy LED segítségével. Szükséges eszközök:
// Arduino Nano R3, vagy más kompatibilis panel, 1 db LED
// (lehetőleg erős, hideg fehér, hogy minél távolabbra érjen a
// fénye), 1 db R= 180÷270 ohmos ellenállás. (180 ohm esetén kb.
// 10 mA fog folyni a LED-en; I=U/R, U=5V=Uled+Uellenállás,
// Uled=3,2V, így Uellenállás=1,8V, I=1,8V/180ohm=10mA, a LED
// maximális árama 20 mA lehet).
/* Nézzük a kapcsolást:
Az ellenállás egyik végét csatlakoztassuk a GND-re, a másikat
a LED katódjára, a LED másik lábát, anódot (új LED esetén a
hosszabbik láb) csatlakoztassuk a Nano lap 13.digitális lábához
El is készült az áramkörünk! Ha a 13. lábon logikai 1 szint
van, az az HIGH, a LED világít, ellenkező esetben nem.
Az Arduino panel tartalmaz egy beépített LED-et, amely szintén
a 13. lábra van kötve, ezen is nyomon követhetjük a működést.
*/
// A MORSE kódredszer:
// A XIX. század elején szükségessé vált egy egyezményes
// jelrendszer, mivel Morse szabadalmaztatott egy elektromos
// jeltovábbításra képes távírót. Aszisztense, Alfred Lewis
// alkotta meg az első kódrendszert. Ez a kód a betűkhöz rendelt
// rövid, és hosszű jelekből áll. A vivő lehet fény, hang,
// elektron, vagy bármi, amit érzékelni tudunk.
// A cél, az SOS betűcsoport elküldése fény formájában.
// A Morse táblázatból kinéztem az S, és O betűnek megfelelő
// jelsorozatot, S -> TiTiTi (...), O -> TáTáTá (---). A jel
// hosszak egyezményesen: Ti (.) -> egy egység (1)
// Tá (-) -> három egység (111)
// Betűköz (Betűk közti szünet.) -> három egység (000)
// Jelköz (Betűn belüli szünet ) -> egy egység (0)
// A fényjelünk így fog kinézni:
// Ti.Ti.Ti...Tá.Tá.Tá...Ti.Ti.Ti
// 101010001110111011100010101
// Én az egységnyi időt 300 miliszekundumban határoztam meg.
// Nyugodtan választhatunk másikat EI átírásával.
const byte LED = 13; // A LED lábszámot egy konstansban,
// 1 Byte hosszban tároljuk.
const int EI = 300; // Egy egységnyi idő milisekundumban
const char H = HIGH; // Hogy ne kelljen sokat gépelni,
const char L = LOW; // bár úgyis másolás/beillesztés van.
void setup() {
pinMode(LED, OUTPUT); // A 13. láb kimenetként konfigurálva
digitalWrite(LED, L); // Kezdetben nem világít a LED
}
void loop() {
delay(1000); // 2 másodpercenként küld SOS-t
digitalWrite(LED, H); // LED be
delay(EI); // Ti
digitalWrite(LED, L); // LED ki
delay(EI); // Jelköz
digitalWrite(LED, H); // LED be
delay(EI); // Ti
digitalWrite(LED, L); // LED ki
delay(EI); // Jelköz
digitalWrite(LED, H); // LED be
delay(EI); // Ti
digitalWrite(LED, L); // LED ki
delay(3 * EI); // Betűköz
digitalWrite(LED, H); // LED be
delay(3 * EI); // Tá
digitalWrite(LED, L); // LED ki
delay(EI); // Jelköz
digitalWrite(LED, H); // LED be
delay(3 * EI); // Tá
digitalWrite(LED, L); // LED ki
delay(EI); // Jelköz
digitalWrite(LED, H); // LED be
delay(3 * EI); // Tá
digitalWrite(LED, L); // LED ki
delay(3 * EI); // Betűköz
digitalWrite(LED, H); // LED be
delay(EI); // Ti
digitalWrite(LED, L); // LED ki
delay(EI); // Jelköz
digitalWrite(LED, H); // LED be
delay(EI); // Ti
digitalWrite(LED, L); // LED ki
delay(EI); // Jelköz
digitalWrite(LED, H); // LED be
delay(EI); // Ti
digitalWrite(LED, L); // Adás vége,LED kikapcsol
delay(1000); // Egy másodperc múlva vissza előre
}
Re: 60 nap alatt Arduino #07 - SOS villogó
Én is elkezdtem ar Arduino tanfolyamot az Arduino C++ nyelv megismerése miatt. Assemblerben már évtizedek ota programozgatok, gondoltam nem árt némi tapasztalatot szerezni a magasabb nyelvben is. Egy kicsit elszomoritott amit itt láttam, rengeteg megoldás ugyanarra a feladatra, rengeteg kisebb nagyobb trükk, amik ismertetése többnyire elmaradt. Gyakran az kodirásmod is kérdéseket vet fel, amire sem itt (sajnos sem máshol) igen nehéz válaszokat találni. Ráadásul az Arduino sugoja utcahosszal lemarad pl. az AVR Studio 4.0 sugojátol, ahol szinte az utolso pontig megvan a válasz, ha hiba van, sajnos az Arduino sugojábol ez hiányzik (mondom, amikor már sikerült egy komplex kb 500 soros programot irnom 6 bemenettel és 10 kimenettel és kb 2 tucat különbözö ütemmel).
Az itteni forum célját sem igen értem, a tanfolyam kezdöknek szol (#7 lecke), tehát jo lenne kerülni az alternativákat, azaz ugyanarra a feladatra a megoldások sokaságát, anélkül, hogy Robert vagy valaki más, kitérne az egyes megoldások (eddig nem tanult) részleteire. Remélem a folytatásban a sok ballaszt mellett erre is lesz idö és keret. Csupán egy didaktikai megjegyzés.
Az itteni forum célját sem igen értem, a tanfolyam kezdöknek szol (#7 lecke), tehát jo lenne kerülni az alternativákat, azaz ugyanarra a feladatra a megoldások sokaságát, anélkül, hogy Robert vagy valaki más, kitérne az egyes megoldások (eddig nem tanult) részleteire. Remélem a folytatásban a sok ballaszt mellett erre is lesz idö és keret. Csupán egy didaktikai megjegyzés.
Éljenek a vonatok!
http://www.youtube.com/playlist?list=PLF2674BF4E3765682
http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Re: 60 nap alatt Arduino #07 - SOS villogó
Egy-egy programozási feladatot legalább többtucat módon meg lehet oldani. A programozás már csak ilyen komplex dolog. 
