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: 9793
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: 9793
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
Pákabűvész
Hozzászólások: 247
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
Pákabűvész
Hozzászólások: 247
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: 9793
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 :)


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

Ki van itt

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