>> Home >> Ostatní >> Arduino: Knight rider

 

Arduino: Knight rider

 

Tento článek není nikterak mimořádně přínosný - lze spíše považovat za malou inspiraci pro ty, kteří mají nové arduino, či pro ty, kteří zvažují jeho koupi. Jelikož mám také nové arduino a zkouším s ním všelijaké věci, tak se s vámi podělím o jednu z nich. Ukážeme si, jak si vyrobit jednoduchý malý LED panel, který budeme ovládat pomocí arduina pomocí PWM pinů. LED panel bude lehce napodobovat panel z auta ze seriálu Knight rider - mám aspoň pocit, že tam ten panel tak nějak vypadal :).

 

 

Pro výrobu panelu budeme potřebovat jen 6 klasických LED diod, 6 rezistorů 220 Ohmů a desku na pájení - já použil navrtanou universální, takže jsem měl velice snadnou práci. Na výrobě panýlku není nic složitého. Jen stačí připájet na desku odpory a LEDky. Katody u LEDek se pak spojí a povede od nich jeden kabílek, který se následně zapojí do země arduina (GND pin). Ke každému rezistoru (spojeného s LED) povede jeden kablík pro napájení. Když bude práce hotova, budeme mít 6 kablíků k napájení LED diod a jeden kablík zem (GND).

Takto již vypadá má výsledná práce ze předu.

Vlastně jsem poprvé něco pájel - zřejmě to taky tak vypadá :).

 

A jak to vlastně připojíme k arduinu? Připojovat to budeme, jak jsem již řekl na začátku článku, do PWM pinů. PWM totiž dokáže přenášet analogový signál (který v tomto případě budeme potřebovat) pomocí digitálního (dvouhodnotového) signálu. PWN piny musíme pak dát v kódu pro arduino do pole a následně pracovat s ním.

LEDky budou se budou rozsvicet systémem, že bude svícení přebíhat zleva do prava a obráceně, přičemž se vždy na chvíli zastaví na okrajových LEDKách a při přebíhání bude mírně svítit LEDka, která bude za LEDkou s plným jasem.

 

Kód pro arduino

 

/*
  ***Knight rider panel***
 
  Simple code simulating knight rider's panel :)
 
  LEDs are involved in PWM pins.
 
  PWM pins are 3, 5, 6, 9, 10, 11 - will be in the array
 
 
  created 2oo9
  by Pavel Novak
  http://pavel-novak.net
*/

int nextTime = 100; //Time delay between start next LED
int pause = 2000; //pause
int ledPins[] = {3,5,6,9,10,11}; //array with PWM pins
int ledPinsLength = 6; //ledPins[] lenght
int x; //key of ledPins array

//setup() method
void setup() {

  //initialize each pins as an output
  for(int x = 0;x < ledPinsLength; x++) {
    pinMode(ledPins[x], OUTPUT);
  }
}

//loop() method
void loop() {
  leftToRight(); //call left to right method
  rightToLeft(); //call right to left method
}

//from left to right lighting method
void leftToRight() {

  analogWrite(ledPins[0], 255); //turn on first LED
  delay(pause); //pause
  for(x = 1; x < ledPinsLength;x++) {
    analogWrite(ledPins[x], 255); //primary LED
    analogWrite(ledPins[x-1], 50); //secondary LED
    delay(nextTime); //pause between next LED
    turnOffLEDs(); //turn off all LEDs
  }
}

//from right to left lighting method
void rightToLeft() {

  analogWrite(ledPins[5], 255); //turn on first LED
  delay(pause); //pause
  for(x = ledPinsLength-2;x >= 0;x--) {
    analogWrite(ledPins[x], 255); //primary LED
    analogWrite(ledPins[x+1], 50); //secondary LED
    delay(nextTime); //pause between next LED
    turnOffLEDs(); //turn off all LEDs
  }
}

//turn off all LEDs
void turnOffLEDs() {
 
  for(int y = 0; y < ledPinsLength;y++) {
    analogWrite(ledPins[y], 0);
  }
}

 

To by snad bylo vše. Na závěr mohu jen popřát příjemné "blbnutí" s arduinem ;)

 

pridej.cz Přidat.eu záložku

 

Diskuze k článku


 

Zatím žádné komentáže k tomuto článku.

 

Přidat nový komentář