diff --git a/articles/2011/avr-led-panel-4-program.md b/articles/2011/avr-led-panel-4-program.md
new file mode 100644
index 0000000000000000000000000000000000000000..47c25d973b5546e3ef6de57540f01c4a71446f4a
--- /dev/null
+++ b/articles/2011/avr-led-panel-4-program.md
@@ -0,0 +1,187 @@
++++
+
+title = "AVR - LED panel - #4 Program"
+perex_e = "
+
+KompatibilnĂ­ zapojenĂ­: LED panel s ATmega8
+
+Ke staĹľenĂ­: LED_004.c == LED_004.pdf == LED_004.htm
+.
+.
+"
+tags = ["Článek"]
++++
+
+
+
+KompatibilnĂ­ zapojenĂ­: LED panel s ATmega8
+
+Ke staĹľenĂ­: LED_004.c == LED_004.pdf == LED_004.htm
+.
+.
+
+* * *
+
+<title>Untitled</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="generator" content="SynEdit HTML exporter"> <style type="text/css">&amp;amp;amp;amp;amp;lt;!-- body { color: #000000; background-color: #FFFFFF; } .cpp1-assembler { } .cpp1-brackets { } .cpp1-comment { color: #008000; font-style: italic; } .cpp1-float { color: #000080; } .cpp1-hexadecimal { color: #000080; } .cpp1-character { } .cpp1-identifier { } .cpp1-illegalchar { } .cpp1-number { color: #000080; } .cpp1-octal { color: #0000FF; } .cpp1-preprocessor { } .cpp1-reservedword { font-weight: bold; } .cpp1-space { color: #008080; } .cpp1-string { color: #800000; } .cpp1-symbol { } --&amp;amp;amp;amp;amp;gt;</style> 
+
+```
+/*
+Minule jsme si ukázali, jak blikat ledkou pomocí bitového komplementu (~). 
+Nyní bychom se mohli pokusit vytvořit světelného hada. K tomuto účelu se hodí 
+bitovĂ˝ posun. Jak bylo minule uvedeno, bitovĂ˝ posun se zapisuje >> nebo <<.
+Výsledný program by tedy mohl vypadat:
+*/
+
+#define F_CPU 1000000UL  // 1 MHz (základní frekvence)
+
+#include <avr/io.h>		//Knihovna vstupů a výstupů (PORT, DDR)
+#include <util/delay.h>	//Knihovna ÄŤekacĂ­ch funkcĂ­
+
+#define RYCHLOST 10	//PoÄŤet krokĹŻ za sekundu	
+#define DELKA    3		//DĂ©lka hada (poÄŤet ledek))
+
+int main (void)
+{
+DDRB = 0b11111111;		//piny 0 - 5 budou výstupní
+unsigned char n;		//nadefinujeme si proměnnou "n", která bude sloužit 
+						//k počítání opakování cyklu
+PORTB = 0;				//zhasneme všechny ledky. (1=svítí a 0=zhasnuto)
+
+for(;;)
+	{	//hlavnĂ­ smyÄŤka
+
+	for(n=0;n<(8+DELKA);n++)	//Smyčka s určitým počtem opakování 
+								//(8 ledek + délka hada, aby nevznikal
+								//novĂ˝ had, dokud ten starĂ˝ nezmizĂ­ - 
+								//můžete vyzkoušet, co se stane, když 
+								//konstantu DELKA smaĹľete.)
+		{
+		if (n<DELKA)	//pokud je počet opakování menší než délka hada
+			{			//musíme přidat další článek hada (rozsvítit led)
+						//asi takto: 00000001, 00000011, 00000111, atd.
+
+			PORTB <<=1;	//posuneme hada doleva (bity se posunou doleva a 
+						//vpravo se objevĂ­ 0.
+						//např: 00001111 po odrotování do leva: 00011110
+
+			PORTB ++;	//přičteme 1 (rozsvítíme další článek): 
+						//00011110 + 1 = 00011111 (hadovi přibyl článek)
+			}			
+		else			//pokud není počet opakování menší než délka hada
+			{			//-to znamená, že hada už jsme nakreslili..
+
+			PORTB <<=1;	//...tak pouze posuneme doleva 
+						//(vpravo se automaticky doplnĂ­ nula)
+						// např: 00111110 (had je zakončen, a příště už bude 
+						//jen "lézt": 01111100, 11111000, 11110000, atd.
+			}			//jinak by nám had pořád přirůstal, až by svítily
+						//všechny ledky
+
+		_delay_ms (1000/RYCHLOST);	//Čekání (1000 ms = 1 sekunda) - rychlost 
+									//je tedy poÄŤet krokĹŻ za sekundu 
+
+		}	//konec těla cyklu - a znovu na začátek :-)
+			//aĹľ se cyklus provede 8x (poÄŤet ledek) + poÄŤet ledek na hada 
+			//- to znamená, že had už vyleze "mimo ledky" 
+			//  (10000000 -> 00000000) - všechny ledky jsou zhasnuté 
+			//- cyklus se ukončí (provedl se "(8+DELKA)" krát)
+
+	}	// konec nekonečné smyčky for(;;) program skočí zpátky na začátek
+		// a vše se opakuje.
+
+} //konec funkce main (sem se sice program nikdy nedostane, ale funkce musĂ­ 
+  //být ukončená, jinak by hlásil překladač chybu
+
+/*
+V tomto programu jsme použili proměnnou (n), podmíněný blok (if) a smyčku s 
+určitým počtem opakování (for(n=0;n<8;n++)).
+*/
+/*
+PROMĚNNÁ:
+Proměnná je místo v paměti mikrokontroléru, kam se ukládají čísla. Protože
+mikrokontrolér potřebuje vědět, jak velký kus paměti si má pro danou proměnnou
+vyhradit, píše se při definici proměnné její typ (modrý text před proměnnou).
+Přehled typů proměnných:
+
+  TYP:		   VELIKOST:	ČÍSLO, JAKÉ JE MOŽNO UCHOVAT:
+char		     8 bit      	   -128   aĹľ    127
+unsigned char    8 bit      	      0   aĹľ    255
+int             16 bit      	 -32768   aĹľ    32767
+unsigned int    16 bit      	      0   aĹľ    65535
+long            32 bit   	 -2,14*10^9   aĹľ    2,14*10^9
+unsigned long   32 bit       	      0   aĹľ    4,29*10^9
+*/
+
+/*
+PODMĂŤNÄšNĂť BLOK:
+
+if (podmĂ­nka)
+	blok1
+else
+	blok2
+
+Podmíněný blok slouží k větvení programu. Používá se tehdy, když potřebujeme
+provést nějaké příkazy jen tehdy, když platí nějaká podmínka.
+Podmínka je výraz, který když je pravdivý, vykoná se blok1 a když pravdivý
+není, vykoná se blok2.
+Pokud obsahuje blok1 nebo blok2 více příkazů, uzavírají se do složených 
+závorek "{}".
+*/
+/*
+SMYÄŚKA:
+
+for(inicializátor;podmínka;inkrement)
+{
+tělo cyklu
+}
+
+Inicializátor je vlastně začátek (odkud má cyklus počítat)
+Podmínka je výraz, který když platí, tak cyklus provede další opakování. 
+Pokud výraz přestane platit, cyklus se ukončí a program pokračuje za cyklem.
+Inkrement je výraz, který říká, kolik se má přičíst, nebo odečíst s každým 
+opakováním cyklu. My jsme používali: n++, což je totéž jako: n=n+1\. S každým
+opakováním cyklu se tedy k proměnné "n" přičte 1\. 
+Tělo cyklu je sada příkazů uzavřená do složených závorek "{}" která se při
+každém opakování vykoná.
+
+Dejme tomu, že chceme nějaký blok instrukcí provést 3x.
+Napíšeme:
+for (n=0;n<3;n++)
+{
+blok příkazů
+}
+
+Náš cyklus tedy začne: 
+
+n=0\. Otestuje podmínku n<3 = pravda - pokračuje se. K proměnné "n" se 
+přičte 1 (n++).
+A znovu:
+n=1 (0+1=1). Podmínka: n<3 = pravda - pokračuje se. Opět se přičte 1 (n++).
+A zas:
+n=2 (1+1=2). Podmínka: n<3 = pravda - pokračuje se. Zase se přičte 1 (n++).
+A nakonec:
+n=3 (2+1=2). PodmĂ­nka: n<3 = nepravda - konec cyklu.
+
+Je tedy vidět, že se cyklus provedl 3x. 
+*/
+/*
+Nyní se podíváme, co se stalo s registrem PORTB v našem programu.
+Nejprve jsme zhasli všechny ledky tak, že jsme do PORTB zapsali samé nuly 
+(0 = 0b00000000).
+Poté jsme vstoupili do hlavní smyčky, která neustále spouští cyklus:
+"for(n=0;n<(8+DELKA);n++)". Jakmile se tento cyklus provede tolikrát, kolikrát 
+je potřeba, program "propadne" zpět do hlavní smyčky "for(;;)" která jej vrátí
+zpět na začátek cyklu "for(n=0;n<(8+DELKA);n++)"
+Hlavní smyčka má tedy jediný úkol, a to resetovat náš cyklus 
+"for(n=0;n<(8+DELKA);n++)".
+*/
+
+/*
+Na začátku programu jsou definovány konstanty "RYCHLOST" a "DELKA", které 
+určují rychlost pohybu hada a jeho délku. Rychlost je dána počtem kroků za 
+sekundu (1 - 1000) a délka je dána počtem svítících ledek. (0 - kolik chcete).
+*/
+
+//Pro radioklub OK1KVK naspal Vašek Král
+
+```
\ No newline at end of file