Arduino UNO- zelenáč se zelená

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
jura80
Příspěvky: 908
Registrován: 05 lis 2011, 01:00
Bydliště: Boskovice
Kontaktovat uživatele:

#16 Příspěvek od jura80 »

To asi bude povícero překvapení.

Dneska jsem zkusil světelný řetízek s potenciometrem regulovatelnou rychlostí...

int del=A0;
const int de=A0;
byte a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
int h=9;
int i=10;
int j=11;
int k=12;
int l=13;

void setup()
{
pinMode(a, OUTPUT);
pinMode (b, OUTPUT);
pinMode(c, OUTPUT);
pinMode (d, OUTPUT);
pinMode(e, OUTPUT);
pinMode (f, OUTPUT);
pinMode(g, OUTPUT);
pinMode (h, OUTPUT);
pinMode(i, OUTPUT);
pinMode (j, OUTPUT);
pinMode(k, OUTPUT);
pinMode (l, OUTPUT);

del=0;

Serial.begin(9600);
}

void loop()
{
del=analogRead (de);
del=del/4;

Serial.print("prodleva = " );
Serial.print(del);
Serial.println();

//delay(1000);

digitalWrite(a, HIGH);
delay (del);

digitalWrite(a, LOW);
digitalWrite (b, HIGH);
delay (del);


digitalWrite (b, LOW);
digitalWrite (c, HIGH);
delay (del);

del=analogRead (de);
del=del/4;

digitalWrite (c, LOW);
digitalWrite (d, HIGH);
delay (del);

digitalWrite (d, LOW);
digitalWrite (e, HIGH);
delay (del);

digitalWrite (e, LOW);
digitalWrite (f, HIGH);
delay (del);

del=analogRead (de);
del=del/4;

digitalWrite (f, LOW);
digitalWrite (g, HIGH);
delay (del);

digitalWrite (g, LOW);
digitalWrite (h, HIGH);
delay (del);

del=analogRead (de);
del=del/4;

digitalWrite (h, LOW);
digitalWrite (i, HIGH);
delay (del);

digitalWrite (i, LOW);
digitalWrite (j, HIGH);
delay (del);

del=analogRead (de);
del=del/4;

digitalWrite (j, LOW);
digitalWrite (k, HIGH);
delay (del);

digitalWrite (k, LOW);
digitalWrite (l, HIGH);
delay (del);

digitalWrite (l, LOW);
}
Nejsu žádným fóristem, ale když něco negómu, tož, přindu se zeptat. A když se nesnesitelně nudím, nebo když jsu na plech, někdy se může stát, že se i pokusím poradit. Zdraví Jura!

Uživatelský avatar
LukinoOl
Příspěvky: 66
Registrován: 09 čer 2016, 02:00

#17 Příspěvek od LukinoOl »

A to jsi psal celý dobrovolně, nebo tě k tomu někdo, pod pohrůžkou násilí, přinutil? :lol:

p32
Příspěvky: 15069
Registrován: 13 led 2007, 01:00
Bydliště: Olomouc

#18 Příspěvek od p32 »

Taky jsem si říkal proč nepoužije možnosti kratších klepanců do klávesnice, např. použít smyčku od - do apod. :wink:

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#19 Příspěvek od Cowley »

A podprogramy :)

Ale je to jeho radost a ja mu fandim.

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#20 Příspěvek od ZdenekHQ »

mtajovsky píše:

Kód: Vybrat vše

#define PI 3.14         // OK
int muj_index;           // OK
float getValue(void);    // tohle je taky OK
char* Hnusny_Nazev_Pro_Retezec;  // tohle není OK
char pekny_nazev_pro_retezec[20]; // tohle už je lepší
Já jsem zvyklý na Pekny_nazev_pro_retezec, nějak ze zvyku dávám první písmeno velký, v asm to nevadí. Nakonec moje programy většinou nejsou veřejný, tak je to čistě moje věc.

Jenže pak přijde někdo, kdo chce PeknyNazevProRetezec a já jsem v háji, pořád se mně tam pletou ty podtržítka...
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

p32
Příspěvky: 15069
Registrován: 13 led 2007, 01:00
Bydliště: Olomouc

#21 Příspěvek od p32 »

ta podtržítka :wink:

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#22 Příspěvek od mtajovsky »

ZdenekHQ << pokud jsou vaše programy jen vaše, je to (možná) jedno. Pokud na projektu pracuje více vývojářů, je třeba dohodnout kódovací pravidla a ta dodržovat. Jde zejména o přehlednost s snadnost čtení a taky, pokud se čte cizí kód, tak aby se člověk cítil jako doma. Omezuje to chyby z přehlédnutí a nepozornosti. Za sebe musím říct, že míchání kombinace velkých a malých písmen s podtržítky mi dost vadí - až z toho bolí oči a je to velice náchylné na chyby. Když už camel, tak by se velká písmena v názvu měla používat ne jako první písmeno - to nemá opodstatnění, ale jako oddělovač slov, nejčastěji podstatného jména, slovesa a případně přídavného jména, číslovky atd., která jsou složena do jednoho názvu. Sloveso činnosti se obvykle dává na začátek s malým písmenem. Jistě se čte snadněji camel

Kód: Vybrat vše

getFirstItem
než

Kód: Vybrat vše

Getfirstitem
To stejné platí o používání podržítek. A proto je kombinace camel s podtžítky špatná, přináší zbytečně mnoho oddělovacích markerů v názvu a to snižuje čitelnost.

P.S.: existuje jistě mnoho pravidel pro psaní názvů proměnných tak, aby samotný název co nejvíce řekl o co jde. U nás ve firmě, například, dáváme za každý název fyzikální veličiny důsledně suffix, který říká jednotku. Například:

Kód: Vybrat vše

distance_m
velocity_kmph
a podobně. Jeden by nevěřil, co to ušetří koukání do dokumentace a případných chyb a nedorozumění na interfacech modulů.

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#23 Příspěvek od ZdenekHQ »

Tak to my se zatím spíš rozcházíme, ale na daleko vyšší úrovni. Teď třeba místo master a slave zavedli duck a duckling či jak to napsali, to je pak teprve mazec...

Asi dost dělají závorky, v asm se nepoužívají vůbec, takže to i jinak vypadá.

Kód: Vybrat vše

	
        mov	 a,P_cyklu
        cjne   a,#Wt_start,Sm_star2          	
Sm_star2:
        jnc	 Sm_star3			;--> prechod do dalsiho MODE
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#24 Příspěvek od FHonza »

U nás jsme si kdysi nastavili svůj standard a ten přísně dodržujeme. Kromě "camel" názvů je to i způsob pojmenování lokálních proměnných, formátování (dvě mezery), pojmenování typů a pod. A to ve všech jazycích, ve kterých píšeme (assembler mezi nimi už dlouho není).

Teda kromě lokálních i,j to zůstalo jako památka na Fortran :)

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#25 Příspěvek od ZdenekHQ »

Z "ijklmn" mám kopřivku, protože si někteří nějak neuvědomují, že v asm (JSA pro šťouraly) nejsou lokální proměnné. Teda kromě registrů bank, a to velmi omezeně. Já ty procesory obecně beru jako BIOS pro navržené HW, bohužel někdo na tom chce stavět orloj...

Znám vyšší programovací jazyky a třeba oblíbený cyklus typu "for i", ale když mně někdo řekne, že zná 8051, dělal na něm hromadu let a přitom požaduje lokální proměnnou, tak si bohužel myslím svoje...
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
JiriTom
Příspěvky: 1199
Registrován: 26 dub 2017, 02:00

#26 Příspěvek od JiriTom »

Jak to tady čtu, možná si pohraju taky :) . Asi začít tímhle ?. Nebo doporučíte něco lepšího, nebo z jiného e-shopu ? Díky...

EDIT: hrál jsem si s odkazem, proto tolik úprav... :)
Naposledy upravil(a) JiriTom dne 22 lis 2017, 12:27, celkem upraveno 13 x.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#27 Příspěvek od FHonza »

Jestli ti nevadí čekat, tak to kup na eBay. Je to totéž, ale výrazně levnější. Např. zde

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#28 Příspěvek od mtajovsky »

JiriTom << kupte si variantu s paticí a ATmega328 v DIL pouzdře. Má to výhodu přinejmenším v opravitelnosti.
ZdenekHQ píše: ...Asi dost dělají závorky, v asm se nepoužívají vůbec ...
Ony závorky v C jsou velmi podstatným prvkem, který není kvůli čitelnosti, ale jsou integrální součástí syntaxe. Nejen, že mění prioritu operací - to je obvyklé, také určují, co je všechno argumentem funkce, a také někdy říkají, co je daný indetifikátor zač. Jestliže máme funkci s deklarací

void f(void);

tak zápisem f() se ta funkce vyvolá, kdežto samotné f znamená pointer na tu funkci, čili adresu, na které ta funkce začíná. Tento pointer je regulérním pointerem, který lze předat například argumentem jako call-back funkci do jiné funkce.

Rovněž tak:

int *f(char c); je deklarace funkce odevzdávající pointer na int, ale:

typedef int (*F)(char c); je definice nového typu - a sice typu "pointer na funkci, která bere jako argument char a vrací int. Pak:
F f; je alokace pointeru datového typu F v paměti pod názvem f.

A to nemluvím o závorkách deklarovaných jako operátor pro třídu, čímž dostáváme funkční objekt (více nějaká učebnice C++ :) )

Proto úsměvy nad C++ jako jazykem, který to se závorkami nadbytečně přehání, opravdu nejsou na místě.

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#29 Příspěvek od ZdenekHQ »

Já naštěstí úsměvem nad závorkama netrpím, nakonec znám třeba Pascal či částečně php, ale na druhou stranu "céčkovský" zápis pro požadovaný asm kód taky může skončit pěkným nedorozuměním. Mám s tím zajímavý zkušenosti...
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#30 Příspěvek od lesana87 »

ZdenekHQ píše:Asi dost dělají závorky, v asm se nepoužívají vůbec
Jak to, že se nepoužívají vůbec? Znáš vůbec něco jiného než 8051?
AVR:

Kód: Vybrat vše

	ldi R16,(1<<CLKPS2)|(1<<CLKPS1)
Z80:

Kód: Vybrat vše

	and A,#~((mask >> 7) + (mask << 1))
x86:

Kód: Vybrat vše

	mov AX,((XRAMSA * 64) AND 0FE00h) + RAMWS
	mov DL,low(KEYB + 4)
	mov EDX,[TempWins + ECX * 4]
ARM:

Kód: Vybrat vše

	push {R0 - R3}
	ldr R0,=(1<<20)|(1<<19)|(1<<16)|(1<<7)|(1<<8)
	str R0,[R2,#(AIC_SMR + (ID_SYS<<2))]

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“