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.
Fórum › Mikrokontroléry
Pomoc začátečníkovi s Bascomem
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)
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.
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;
}
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.
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)
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
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pomoc začátečníkovi — založil doonio
Pomoc začátečníkovi — založil chump007
PICAXE - pomoc začátečníkovi — založil Pavel-H
Pomožte začátečníkovi :D — založil brunoczech
Pomozte začátečníkovi — založil Mirka
Moderátoři diskuze