Pomoc začátečníkovi s Bascomem – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pomoc začátečníkovi s Bascomem – Mikrokontroléry – Fórum – Programujte.comPomoc začátečníkovi s Bascomem – Mikrokontroléry – Fórum – Programujte.com

 

12dawe340
Newbie
15. 9. 2010   #1
-
0
-

Ahojte všichni kdo tomu rozumí, možná to tu bude někde ještě jednou, poprvé mi spadl net. Potřeboval bych poradit nebo alespoň nasměrovat, jak na zrealizování této myšlenky. Procesor mega32, lcd displej 16 x 2 , 5 tlačítek (joystick). Po zapnutí obvodu hlavní "menu" výběr barvy, R nebo G nebo B, tlačítkama levo, vpravo výběr barvy a po stisku entru odkázání na nastavení jasu dané barvy. Tlačítkama nahoru, dolů nastavení jasu a zároven výstupu PWM. Po stisku entru, program hodí zpět na výběr barvy, ale nastavení dané barvy už zůstává. Má se jednat o RGB lampičku. Už nad tím přemýšlím hodně dlouo, ale pořád nevím jak docílit dané posloupnosti programu. Za každou radu budu moc rád, nebo když bude někdo tak hodný a napíše třeba nějakou ukázku programu. Děkuji.

Nahlásit jako SPAM
IP: 89.203.143.–
KIIV
~ Moderátor
+43
God of flame
15. 9. 2010   #2
-
0
-

pro zacatek sis nevybral zrovna snadny ukol.. souhrne:
- ovladani tlacitek (filtrace zakmitu, opakovani "stisku" pokud se tlacitko drzi)
- ovladani displaye (prevod 8b cislo na retezec)
- menu a zobrazeni hodnot (stavovy automat, retezce v pameti programu - progmem)
- ovladani PWM (primo nastavovat z menu.. neni potreba mit jeste nejake extra promenne)

stavovy automat -
0: hlavni nabidka
1: nastaveni R
2: nastaveni G
3: nastaveni B
Ovladani
sipka dolu: stav +1
sipka nahoru: stav -1
sipka doleva: podle stavu nic nebo -1 pro ovladani PWM kanalu
sipka doprava: podle stavu nic nebo +1 pro ovladani PWM ....

enter muze napriklad ulozit do EEPROM (po restartu automaticky nastavit rgb z eeprom)



Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
12dawe340
Newbie
15. 9. 2010   #3
-
0
-

To KIIV : No já vím :-). Mohl by ses trochu víc rozepsat. To opakování tlačítka zařídím jak nebo jinak, teoreticky to chápu vše, horší to pro mě bude zrealizovat. Například vůbec nevím jak bych těď měl teda napsat ten automat. Z bascomem dělám teprv asi dva měsíce a nemám nikoho kdo by mi to mohl nějak ukázat nebo poradit, tak hledám pomoc takhle no.

Nahlásit jako SPAM
IP: 89.203.143.–
KIIV
~ Moderátor
+43
God of flame
15. 9. 2010   #4
-
0
-

automat je jedna promenna a vetveni ..
akorat te zklamu.. delam jen do C .. bascom se mi ani letmo nelibil .. obzvlaste kdyz nepotrebuju:)

tlacitka:
kazde 2 ms (pro opakovani cca 500ms) kontrolujeme stav.. pokud je tlacitko sepnute pricteme k jeho casovaci promenne 1
pokud se rozepne tak promennou vynulovat

prave kdyz je sepnute 5x vyvolat akci ... pokud je jeho promenna typu 8b cislo -> pretece a pokracuje dal od nuly... 5 nastane po 256 prictenich od predchozi 5...

jde to ale udelat i kratsi.. zalezi kolik ms das zakmitum a po kolika opakovat.. pripadne si pocitat opakovani a po treba 10ti opakovanich zmensit pocet kroku ..


V C sem mel treba takto udelane ovladani hodin (vycuc pro tlacitka a stavovy automat):



// cekani na ustaleni tlacitka v ms
#define sw_on (10)

// doba opakovani
#define sw_reload (1000 + sw_on)

volatile int tlacitka[3] = { 0 , 0 , 0 }; // pocitani doby stisknuti a opakovani

unsigned char rezim = 0;
// rezim: 0 - zobrazeni hodiny + minuty (+ sekundy)
// 1 - nastaveni sekundy
// 2 - nastaveni minuty
// 3 - nastaveni hodiny
// 4 - zvoneni zapnout/vypnout
#define MAX_REZIM 4

void check_buttons() {

// tlacitko 1
if ( !P1_1 ) {
if (tlacitka[0] == sw_on) stisknuto_tl1();
tlacitka[0]++;
if (tlacitka[0] == sw_reload) tlacitka[0]=sw_on;
} else {
tlacitka[0]=0;
}

// tlacitko 2
if ( !P1_2 ) {
if (tlacitka[1] == sw_on) stisknuto_tl2();
tlacitka[1]++;
if (tlacitka[1] == sw_reload) tlacitka[1]=sw_on;
} else {
tlacitka[1]=0;
}

// tlacitko 3
if ( !P1_3 ) {
if (tlacitka[2] == sw_on) stisknuto_tl3();
tlacitka[2]++;
if (tlacitka[2] == sw_reload) tlacitka[2]=sw_on + 1; // nechci opakovane spinat
} else {
if ( tlacitka[2] ) rozepnuto_tl3();
tlacitka[2]=0;
}

}

void stisknuto_tl1() {
if ( ++rezim == (MAX_REZIM + 1) ) rezim = 0;
}

void stisknuto_tl2() {
switch (rezim) {
case 1: if (++sec == 60) sec = 0; break;
case 2: if (++min == 60) min = 0; break;
case 3: if (++hour == 24) hour = 0; break;
case 4: signal_enable = !signal_enable;
}
}

void stisknuto_tl3() {
P1_0 = 1;
}

void rozepnuto_tl3() {
P1_1 = 0;
}

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
12dawe340
Newbie
16. 9. 2010   #5
-
0
-

To KIIV : No v Céčku já se vůbec nevyznám :-( mě to přijde moc složitý. Proto sem rači zkusil pro začátek ten Bascom, ale chtěl bych se to časem taky naučit. A teď k tomu automatu, na netu jsem četl že existují i nějaké grafické editory autmatů, šlo by to nějak použít? Z toho tvého příkladu to jakš takš chápu, ale pořád to není ono :-( jsem hold ještě na začátku no.

Nahlásit jako SPAM
IP: 89.203.143.–
KIIV
~ Moderátor
+43
God of flame
16. 9. 2010   #6
-
0
-

todle je tak extremne trivialni automat ze snad ani nema zadnej smysl pouzivat jakysi editor
musis mit definovany "stavy" tj. napriklad cisla ..
musis mit co v tech stavech delat za akce
a musis mit moznost prepinat mezi stavy..
nic tezkyho

jinak tezko rict jestli si bascomem nejak moc pomuzes.. stejne to nejdulezitejsi musis tahat z manualu.. (nastaveni registru)

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
12dawe340
Newbie
17. 9. 2010   #7
-
0
-

Teoreticky to vsechno chapu, ale horsi je pro me to proste nejakym zpusobem napsat. Ale to uz je moje chyba, takze na to nejak musim dojit. A radis teda radeji se ucit Cecko rovnou jo?


Nahlásit jako SPAM
IP: 85.207.5.–
KIIV
~ Moderátor
+43
God of flame
17. 9. 2010   #8
-
0
-

to zalezi opravdu jen na tobe.. syntaxe z C je momentalne prakticky vsude.. (krom nekterych jazyku.. tj. pascal, python, lisp, visual basic, tcl, ...) zatimco kde je (alespon z vetsiny): C++, perl, java, javascript, php, .. - coz uz jsou trochu pouzivanejsi jazyky nez predchozi

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
12dawe340
Newbie
17. 9. 2010   #9
-
0
-

Tak jo, zkusim se na to mrknout. Diky za vsechny rady a už si s tím zkusim nějak poradit.

Nahlásit jako SPAM
IP: 89.203.143.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Pomoc začátečníkovi — založil doonio

Pomožte začátečníkovi :D — založil brunoczech

Pomozte začátečníkovi — založil Mirka

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý