60 nap alatt Arduino #07 - SOS villogó

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Válasz küldése
Avatar
smalla
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2011. december 21. szerda, 7:00

60 nap alatt Arduino #07 - SOS villogó

Hozzászólás Szerző: smalla »

Sziasztok, én az első HF-et (SOS) így oldottam meg:

Kód: Egész kijelölése



int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}
void ti(){
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(200);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(400); 
}
void ta(){
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(600);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(400); 
}
void sos(){
  ti();ti();ti();ta();ta();ta();ti();ti();ti();
  delay(500);
}
// the loop routine runs over and over again forever:
void loop() {
  sos();
}
Viszont érdekes módon a TX feliratú pin (0) highban marad. Valaki tudja miért? Ez lenne a default ? Ha kikapcsolom kialszik.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

:oops:

Ui.: Töröltem! Mert sértésnek vették, pedig csak 1 véleménynek szántam!
8)
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2012. július 19. csütörtök, 19:43-kor.
Avatar
smalla
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2011. december 21. szerda, 7:00

Hozzászólás Szerző: smalla »

Úgy emlékszem, hogy talán a bash az ami allergiás arra, ha előbb hívsz meg egy funkciót, mint, hogy deklarálva lenne, ezért aztán így csináltam, hibát nem mondott, még warningot se. :)

Ha nem rakom ki, s van valaki aki nem tudja megoldani (később biztos lesz ilyen), akkor van egy példa megoldása. Egyébként meg meg lehet köpködni az enyémet, mert 2 hónapja láttam először. Pláne ha építő jellegű a hozzászólás, külön örülök.

Egyébként én szívesen látnám mások megoldásait, mert biztos lehet belőlük tanulni.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

eroth megoldása:

Sziasztok!
Egy lehetséges +oldás...

Kód: Egész kijelölése

/*
 "SOS" jelzés a 13-as digitális porton
  
  This example code is in the public domain.
 */

void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);
 }

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
  digitalWrite(13, HIGH);   // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second
}
Avatar
BraskoS
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2011. április 12. kedd, 6:00

Hozzászólás Szerző: BraskoS »

Sziasztok!

Az én SOS házifeladat megoldásom:

Kód: Egész kijelölése

/* 
 SOS jelzés a 13-as lábon 
 A Morse időzítése:
 Rövid (ti):                                   1 egység
 Hosszú (tá):                                3 egység
 Betün belüli szünet a jelek között: 1 egység
 Betük közti szünet:                      3 egység
 Szavak közti szünet:                    7 egység
 10 WPM (Word Per Minute) sebesség esetén 1 egység = 120ms
*/ 

void setup() {                
  pinMode(13, OUTPUT);     // a 13 láb beállítása kimenetnek!
 } 
void loop() {
 // az S betű kivilogtatása
 digitalWrite(13, HIGH);    // LED bekapcsol 
 delay(120);                    // 1 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol
                   
 delay(360);                  // betük közti 3 egységnyi várakozás
 
 // az O betű kivilogtatása
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(360);                   // 3 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(360);                   // 3 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(360);                   // 3 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol
 
 delay(360);                  // betük közti 3 egységnyi várakozás 
 
 // az S betű kivilogtatása
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, HIGH);   // LED bekapcsol 
 delay(120);                   // 1 egységnyi várakozás 
 digitalWrite(13, LOW);    // LED kikapcsol
            
 delay(840);                   // szó végi 7 egységnyi várakozás
}
Avatar
eroth
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2012. március 21. szerda, 6:00

Hozzászólás Szerző: eroth »

Sziasztok!
Egy kis segítséget kérek!
Látva az előttem lévő két bejegyzést, azonnal észrevettem, hogy programozásból, nagyon háttal ültem a suliban! Ezért is kérem ne sértődjetek meg, ha netán butaságot kérdezek. Ki is próbáltátok a kódot, amit közzé tettetek, vagy csak megírtátok???? Esetleg, jómagam használok rossz keretrendszert??? Be másoltam a közzétett kódokat Arduino1,0 programba, hogy kipróbáljam, de le sem fordítja, mert eleve szintaktikai hibákat jelez! -én csinálok rosszul valamit...? A magam primitív megoldását is ki próbáltam, itt működik. Persze azt nem vitatom, hogy a kódom, legalább 20 sorral hosszabb!

üdv Endre
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Tetszik, hogy eddig 3 emberke 2 féle megoldása futott be:)
Az első (smalla) esetén van előzetes programozási gyakorlat/szemlélet (az egyes rutinok szervezéséből tippelem).
eroth és Braskos a "kezdő" ágat képviselik, a lineáris programozással.

Egyik megoldás sem rosszabb, mint a másik.


TX LED világítva marad az 2 dolgot jelenthet:
- a PC felől valamiért adat jön a chip fele
- vagy a bootloader inicializálása megmaradt.
- a panelen a TX LED-et az a FTDI chip hajtja meg, nem az AVR. Így függetlennek tekintendő...
Avatar
eroth
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2012. március 21. szerda, 6:00

Hozzászólás Szerző: eroth »

helyesbítek! időközben az általam említett bejegyzések egyike törölve lett!
Tehát, NEM BraskoS bejegyzésére tettem megállapítást!
sértődés ne essen! :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Eroth: mi a hibaüzenet?

Az Arduino 1.0-ban kipróbáltam. Működnek.
Biztos jól másoltad ki a kódokat?


U.i.: nem ér módosítani a hozzászólást :( A hibákból lehet a legtöbbet tanulni! Így a módosítást lehet úgy kérni, hogy: ilyen volt, ilyen lett. A hiba pedig ez violt a rosszban...
Avatar
eroth
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2012. március 21. szerda, 6:00

Hozzászólás Szerző: eroth »

Mindenkitől elnézést kérek, mert időközben rájöttem, hogy mint, ahogy az lenni szokott, ismét én tévedtem! Két rendszer üzemel a gépemen és az első particióban meghalt az Arduinó keretrendszer! Minden kódra hibát jelez.
Újra indultam és láss csodát, mindegyik megoldás működik!!!
:oops:
Avatar
eroth
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2012. március 21. szerda, 6:00

Hozzászólás Szerző: eroth »

Robert!
A hibaüzenet a következő volt: "A windows7 telepítése befejeződött!" :wink:
Avatar
BraskoS
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2011. április 12. kedd, 6:00

Hozzászólás Szerző: BraskoS »

Először egy harmadik féle kódot írtam, szintén funkció hívásokkal. Ezzel nyilván áttekinthetőbb és persze sokkal rövidebb kódot érhetünk el. De közben eszembe jutott, hogy a tanfolyamon még csak a LED villogtatásig jutottunk, annyi képzettséggel meg nem lehet így megoldani a feladatot.
(az LCD-ből óra HF-nál legalábbis ezt olvastam. "Kitételek: csak az eddigi _tanfolyami_ tudás használható!")
Sajnálom, hogy lemaradtam kapu48 véleményéről...

Üdv:Sanyi

Robert írta:Tetszik, hogy eddig 3 emberke 2 féle megoldása futott be:)
Az első (smalla) esetén van előzetes programozási gyakorlat/szemlélet (az egyes rutinok szervezéséből tippelem).
eroth és Braskos a "kezdő" ágat képviselik, a lineáris programozással.

Egyik megoldás sem rosszabb, mint a másik.


TX LED világítva marad az 2 dolgot jelenthet:
- a PC felől valamiért adat jön a chip fele
- vagy a bootloader inicializálása megmaradt.
- a panelen a TX LED-et az a FTDI chip hajtja meg, nem az AVR. Így függetlennek tekintendő...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az óránál azért van benn, mert majd _neked_ kell a számlálórészeket - óra/perc illetve perc/óra átfordulás - leprogramozni.

Később jön a date/datetime függvénykönyvtár :).
Avatar
fodor99
DrótVégénSzéndarab
Hozzászólások: 23
Csatlakozott: 2012. március 24. szombat, 6:00

Re: elbohóckodtam én is...

Hozzászólás Szerző: fodor99 »

fodor99 írta:kezdem élvezni :))

Kód: Egész kijelölése

int led          = 13; 
int long_signal  = 600;
int short_signal = 200;
int signal_pause = 400;
int word_pause   = 1000;

void setup() {                 
  pinMode(led, OUTPUT);      
} 

void _give_signal(int len){ 
  digitalWrite(led, HIGH);   
  delay(len);                
  digitalWrite(led, LOW);    
  delay(signal_pause); 
} 

void _s(){
  int i;
  // S = three short signal
  for(i = 0 ; i < 3; i++)
  {
   _give_signal(short_signal); 
  }  
}

void _o(){
  int i;
  // O = three long signal
  for(i = 0 ; i < 3; i++)
  {
   _give_signal(long_signal); 
  }  
}

void s_and_o_and_s(){ 
 _s();
 _o();
 _s();
} 

void loop() { 
  s_and_o_and_s(); 
  delay(word_pause); 
}
oops elnézést a kódformázás hiányáért az imént...
Avatar
fodor99
DrótVégénSzéndarab
Hozzászólások: 23
Csatlakozott: 2012. március 24. szombat, 6:00

eeprom

Hozzászólás Szerző: fodor99 »

Jól sejtem ha megtanuljuk az EEPROM-ot használni akkor az SOS szignál tud majd ott folytatódni ahol megszakadt mikor kikapcsoljuk az ARDUINO-t?
Válasz küldése