60 nap alatt Arduino #08 - Házi feladatok - Knight Rider

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Avatar
Freddy22
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2012. január 13. péntek, 7:00

60 nap alatt Arduino #08 - Házi feladatok - Knight Rider

HozzászólásSzerző: Freddy22 » 2012. július 21. szombat, 9:04

a mai leckének elegánsabb megoldása:

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


// Knight rider futofeny

void setup()
{
  int i;
 
   for (i = 0; i < 8; i++)
   {
     pinMode(i, OUTPUT);
   }
}

void loop()
{
  int i;

  for (i = 0; i < 8; i++)
  {
    digitalWrite(i, HIGH);
    delay(100);
    digitalWrite(i, LOW);
    delay(50);
  } 
    for (i = 6; i >= 0; i--)
  {
    digitalWrite(i, HIGH);
    delay(100);
    digitalWrite(i, LOW);
    delay(50);
  } 
}

de gondolom a teljesen kezdők miatt nem lettek ciklusok használva

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

HozzászólásSzerző: Robert » 2012. július 21. szombat, 9:17

Igen. Mivel a ciklusoknak van jópár szabálya és ez 1 héten belül lesz.... :)

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. július 21. szombat, 15:40

Legyen még elegánsabb:

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

// Knight rider futofeny 2

 void setup()
 {
    Byte D = B00000001    // D = 1
    DDRD = B11111111;  // sets Arduino pins 0 to 7 as outputs
   
 }

 void loop()
 {
   int i;

   for (i = 1; i < 8; i++)
   {
     PORTD = D; // sets digital pins 1 HIGH
     D = D << 1 // Shift D left
     delay(200);
     
     
   } 
     for (i = 1; i< 8; i++)
   {
     D = D >> 1 // Shift D right
     PORTD = D; // sets digital pins
     delay(200);
     
   } 
 }

8)

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

HozzászólásSzerző: Robert » 2012. július 21. szombat, 15:48

Kérés: _csak_ a tanult és leckékben felsorolt eljárások használatával :)

És nem C, hanem Arduino! Arduino esetén _nem_ kell és nem szabad a chip belsejében kotorászni, mert érdekes programhibákra lehet futni....

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. július 21. szombat, 16:13

Tanár úr nem szabad a diákból ki irtani az önálló gondolkodást! :lol:

Ha csak annyit akarnák tudni, amit az arduino meg enged, nem venném meg tizen-ezer Forintokért.
Persze ez csak az én véleményem. A kezdők csak haladjanak szépen lépésről, lépésre.
Legalább had lássák, hogy azért kicsivel több lehetőség is van ebben a HW-ben!
:wink:

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

HozzászólásSzerző: Robert » 2012. július 21. szombat, 16:20

OK. Témában megnyitom az Arduino - haladóknak részt :P.

Akik a tanfolyamon vannak - holnap v. hétfőn úgyis meglátod - most kezdik legtöbben... És a _miért_ kérdéseket ~450 embernek necces lenne feltenni és válaszolgatni rá.
De előjönnek ezek a finomásgok is majd, csak nem az elején!

Tanmese: Szegény diák most tanul olvasni plusz a 1..10 összeadást, kivonást. Így nem fair kérdés az 1/3 alma meg 6/8 alma az hány gyereknek elég, ha negyedeljük az almát? :P

Persze a diák válasza: kompótot gyártok és szétosztom :)


U.i.: Az Arduino HW-t én pl. Bascom-AVR alatt nyaggatom:)

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. július 21. szombat, 16:46

6/8 = 3/4 = 3 diák, és mivel az 1/3 kicsivel nagyobb, hogy ne legyen, vita azt megtartom magamnak.

Nem lehet javítani az elgépelést? „Shifd”: Shift d . A „delay(100);” inkább: delay(200);
:wink:

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

HozzászólásSzerző: Robert » 2012. július 21. szombat, 16:58

"....És az az iciri-piciri mind megette :) "

U.i.: javítva.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. július 21. szombat, 18:39

Van még 1 hiba a programomban!
Ki fogja előbb megtalálni?
:?:

Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00
Tartózkodási hely: Budapest

HozzászólásSzerző: szegoj » 2012. július 21. szombat, 20:51

kapu48!

A D = D << 1 és D = D >> 1 utasítások után hiányzik a pontosvessző.

kapu48 írta:Legyen még elegánsabb:

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

// Knight rider futofeny 2

 void setup()
 {
    Byte D = B00000001    // D = 1
    DDRD = B11111111;  // sets Arduino pins 0 to 7 as outputs
   
 }

 void loop()
 {
   int i;

   for (i = 1; i < 8; i++)
   {
     PORTD = D; // sets digital pins 1 HIGH
     D = D << 1 // Shift D left
     delay(200);
     
     
   } 
     for (i = 1; i< 8; i++)
   {
     D = D >> 1 // Shift D right
     PORTD = D; // sets digital pins
     delay(200);
     
   } 
 }

8)
:D

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

HozzászólásSzerző: Robert » 2012. július 21. szombat, 20:57

És az utolsó for ciklus 0...6 nem 0..8.
Valamint a Knight Rider D0...D7 lábakon fut.


U.i.: nem kell elbonyolítani... Sima delay és digitalwrite elég hozzá....
:P

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. július 21. szombat, 21:40

Akkor több hiba is volt!

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

// Knight rider futofeny 2 JAVÍTOTT!

 void setup()
 {
    DDRD = B11111111;  // sets Arduino pins 0 to 7 as outputs
 }

 void loop()
 {
   int i;
   byte D = B00000001;    // D = 1
   for (i = 1; i < 8; i++)
   {
     PORTD = D; // sets digital pins 1 HIGH
     D = D << 1; // Shift D left
     delay(200);
    } 
     for (i = 1; i< 7; i++)
   {
     D = D >> 1; // Shift D right
     PORTD = D; // sets digital pins
     delay(200);
   } 
 }
 /*    Ciklus sorrend
 0. B00000001
 1. B00000010
 2. B00000100
 3. B00001000
 4. B00010000
 5. B00100000
 6. B01000000
 7. B10000000
 ....
 1. B01000000
 2. B00100000
 3. B00010000
 4. B00001000
 5. B00000100
 6. B00000010
   */

8)

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

HozzászólásSzerző: Robert » 2012. július 22. vasárnap, 6:22

Na, maradjunk az alappprogramnál:

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

/*
  Fotofeny
  A Knight Rider futofeny arduino megvalositasa
  "60 nap alatt arduino" tanfolyam része
  (c) TavIR http://avr.tavir.hu
 */
 
void setup(){
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
   digitalWrite(0, HIGH);
   delay(100);
   digitalWrite(0, LOW);
   delay(50);

   digitalWrite(1, HIGH);
   delay(100);
   digitalWrite(1, LOW);
   delay(50);

   digitalWrite(2, HIGH);
   delay(100);
   digitalWrite(2, LOW);
   delay(50);

   digitalWrite(3, HIGH);
   delay(100);
   digitalWrite(3, LOW);
   delay(50);
   digitalWrite(4, HIGH);
   delay(100);
   digitalWrite(4, LOW);
   delay(50);

   digitalWrite(5, HIGH);
   delay(100);
   digitalWrite(5, LOW);
   delay(50);

   digitalWrite(6, HIGH);
   delay(100);
   digitalWrite(6, LOW);
   delay(50);

   digitalWrite(7, HIGH);
   delay(100);
   digitalWrite(7, LOW);
   delay(50);

   digitalWrite(6, HIGH);
   delay(100);
   digitalWrite(6, LOW);
   delay(50);

   digitalWrite(5, HIGH);
   delay(100);
   digitalWrite(5, LOW);
   delay(50);

   digitalWrite(4, HIGH);
   delay(100);
   digitalWrite(4, LOW);
   delay(50);

   digitalWrite(3, HIGH);
   delay(100);
   digitalWrite(3, LOW);
   delay(50);

   digitalWrite(2, HIGH);
   delay(100);
   digitalWrite(2, LOW);
   delay(50);
   
   digitalWrite(1, HIGH);
   delay(100);
   digitalWrite(1, LOW);
   delay(50); 
}

Avatar
smalla
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2011. december 21. szerda, 7:00

HozzászólásSzerző: smalla » 2012. július 22. vasárnap, 14:20

Kedvelem a hozzászólásokat,
Ugyan még fogalmam sincsen, hogy a kódok mit jelentenek és miért, de jó tudni :idea:

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

HozzászólásSzerző: Robert » 2012. július 22. vasárnap, 14:24

A knight rider-t a Futófény című (6. ?) leckében ismerheted meg. A többi megoldás a 20-22. lecke körül jön elő....


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