60 nap alatt Arduino #07 - SOS villogó

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Korben Dallas
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. augusztus 17. hétfő, 20:51

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Korben Dallas » 2015. augusztus 17. hétfő, 21:55

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

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9953
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Robert » 2015. augusztus 19. szerda, 5:37

9 / 15 byte hogy jött ki???


Jelen leckékben még NEM ismert a for, a változó fogalma... :)

Korben Dallas
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. augusztus 17. hétfő, 20:51

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Korben Dallas » 2015. augusztus 22. szombat, 18:10

ard.jpg


a program méreténél nem láttam a lényeget, feljebb is volt info, elnézést kérek! :-)
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9953
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Robert » 2015. augusztus 22. szombat, 18:14

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.

ARduy
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2016. január 13. szerda, 11:40

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: ARduy » 2016. január 20. szerda, 16:54

Sziasztok !

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
}


kssk
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2017. december 8. péntek, 12:21

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: kssk » 2017. december 8. péntek, 12:30

Sziasztok!
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.

Attila61
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2017. december 23. szombat, 15:05

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Attila61 » 2017. december 31. vasárnap, 16:40

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
}

Attila61
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2017. december 23. szombat, 15:05

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Attila61 » 2017. december 31. vasárnap, 17:32

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
}

zimo
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2018. január 7. vasárnap, 17:36

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: zimo » 2018. január 10. szerda, 15:39

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

Avatar
csegebiga
Chipgyilok
Hozzászólások: 287
Csatlakozott: 2015. március 27. péntek, 21:27

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: csegebiga » 2018. január 10. szerda, 22:13

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)

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);
}

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.

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

Avatar
csegebiga
Chipgyilok
Hozzászólások: 287
Csatlakozott: 2015. március 27. péntek, 21:27

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: csegebiga » 2018. január 10. szerda, 22:24

csak arra nem emlékszem, hogy a változókat tanultuk-e már ekkor? :)

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9953
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: Robert » 2018. január 11. csütörtök, 6:22

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ó....:)
http://www.tavir.hu - a gazda :)

sanca21
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2019. január 6. vasárnap, 22:09

Re: 60 nap alatt Arduino #07 - SOS villogó

HozzászólásSzerző: sanca21 » 2019. január 7. hétfő, 16:14

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.
[code]
// 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
}


Vissza: “60 nap alatt Arduino - Házi feladatok”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég