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ás Szerző: Freddy22 »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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

U.i.: javítva.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

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

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

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

É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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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ás Szerző: smalla »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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ő....
Válasz küldése