 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Sob Jan 15, 2011 10:05 pm Naslov sporočila: Elektronska igralna kocka |
|
|
Pravkar naredil "LED kocko", ampak v malo drugačni izvedbi s 7-segmentnim prikazovalnikom, ki prikaže 1-6 in vsakem dotiku, za kar skrbijo tiste 3 žičke (uporovni touch senzor na hitro)
Vse je velikosti držala za 3V baterijico, na katero tudi vredu deluje.
Vezje je dead-bug, za takšno malenkost se mi namreč "ne ljubi" delati vezja. Sem pa bil res malo presenečen, ker je delalo v prvo (bil sem namreč prepričan da je kje kak stik)
Opis: |
Zalotan ATtiny24 preko 1k 0805 uporov na vse segmente prikazovalnika. Gor je tudi MOSFET, ki skrbi, da lahko INT0 zazna "dotik". |
|
Velikost datoteke: |
674.7 KB |
Pogledana: |
16 krat |

|
Opis: |
Žičke za zaznavanje dotika. Stranski dve sta vezani na VCC, srednja na Gate FETa. |
|
Velikost datoteke: |
664.43 KB |
Pogledana: |
5 krat |

|
Opis: |
Zalotan še konektor za ISP programiranje. |
|
Velikost datoteke: |
790.3 KB |
Pogledana: |
4 krat |

|
Opis: |
|
Velikost datoteke: |
799.43 KB |
Pogledana: |
4 krat |

|
Opis: |
|
Velikost datoteke: |
721.12 KB |
Pogledana: |
2 krat |

|
Nazadnje urejal/a program_er Ned Jan 16, 2011 8:12 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
|
Nazaj na vrh |
|
 |
bojan_z Član


Pridružen-a: Pet 16 Maj 2008 20:28 Prispevkov: 256 Aktiv.: 1.23 Kraj: Maribor
|
Objavljeno: Sob Jan 15, 2011 10:44 pm Naslov sporočila: |
|
|
Lepo narejeno, predvsem pa domiselno.
Ker sem bolj začetnik, bi lahko objavil tudi shemo-vezje.
Hvala.
program_er je napisal/a: |
Še popolno samostojno delovanje
Koda pa je v Bascom-AVR in zasede 30% ATtiny24. |
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3362 Aktiv.: 14.19 Kraj: Dragomer
|
Objavljeno: Sob Jan 15, 2011 11:25 pm Naslov sporočila: |
|
|
Preprost in efekten program!
Čestitam!
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Jan 16, 2011 2:57 am Naslov sporočila: |
|
|
Video delovanja kocke, v njegovem opisu pa sta tudi linka do sheme in Bascom-AVR programa (v .pdf)
|
|
Nazaj na vrh |
|
 |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Ned Jan 16, 2011 1:42 pm Naslov sporočila: |
|
|
program_er je napisal/a: |
Video delovanja kocke, v njegovem opisu pa sta tudi linka do sheme in Bascom-AVR programa (v .pdf) |
Pa se ti ne zdi da je bascomov random generator prej "predictable" generator...
Če boš ti igral s to kocko boš vedno zmagoval
_________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Jan 16, 2011 8:06 pm Naslov sporočila: |
|
|
Ja, na to me je preko ZS opozoril tudi Vilko in mi predlagal spremembo kode.
Kodo sem spremenil in sem tisti "glavni" RND stavek preselil v glavno zanko, RND stavek se zdaj izvede in shrani vsakih 10uS.
Ker pa nikoli ne stisnemo "tipke" z enakim časovnim razmakom, (poleg tega je tudi sam stavek Random) je zdaj vrednost mnogo bolj naključna oz. deluje tako, kot bi res morala.
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazadnje urejal/a program_er Ned Jan 16, 2011 9:15 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
jezikač Član


Pridružen-a: Tor 29 Sep 2009 23:21 Prispevkov: 160 Aktiv.: 0.84 Kraj: swamp
|
Objavljeno: Ned Jan 16, 2011 8:32 pm Naslov sporočila: |
|
|
...
Opis: |
|
Velikost datoteke: |
8.09 KB |
Pogledana: |
2 krat |

|
_________________ na tekočem |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Jan 16, 2011 8:47 pm Naslov sporočila: |
|
|
jezikač je napisal/a: |
... |
Popravljeno... spredaj sem pozabil f*p spremeniti v http
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazadnje urejal/a program_er Ned Jan 16, 2011 9:13 pm; skupaj popravljeno 5 krat |
|
Nazaj na vrh |
|
 |
Branez Moderator


Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7831 Aktiv.: 33.04 Kraj: Koprivnica HR
|
Objavljeno: Ned Jan 16, 2011 8:51 pm Naslov sporočila: |
|
|
Kaj pa tako hitiš! Prvo preveri.
_________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.00
|
Objavljeno: Ned Jan 16, 2011 9:24 pm Naslov sporočila: |
|
|
Za dober random generator mora biti enaka verjetnost izbora za vse vrednosti iz zaloge. Zato naj v ozadju z veliko hitrostjo kroži števec Nova_vrednost, ki zagotovi, da je vsaka vrednost prisotna enako časa.
Potem ob naključnem trenutku pritisnemo tipko. Če je po 20ms še vedno pritisnjena, se izpiše vrednost na 7seg. Hkrati se zaklene ponovno zaznavanje pritisnjene tipke, dokler ni zaznano, da je bila tipka zanesljivo spuščena. Medtem števec v ozadju ves čas enakomerno teče in je povsem nemogoče ponovno pritisniti tipko "po občutku" in zadeti želeno vrednost.
Torej je vrednost res naključna.
Koda: |
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx GLAVNI PROGRAM xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TipkaJE = 0 ' Dodaj med definicije spremenljivk in bitov
Do 'to vedno ponavljaj
Waitus 1
Gosub Nova_vrednost 'V ozadju zelo hitro spreminja vrednost, dokler ne pritisnemo tipke
'Vedno ponavljaj
If PINB.2 = 1 Then ' Je tipka pritisnjena?
Waitms 20
If PINB.2 = 1 AND TipkaJE = 0 Then
Gosub Izpisi_cifro 'in končno izpišemo pravo cifro
TipkaJE = 1 ' Tipka JE pritisnjena. Blokira se zaznavanje pritisnjene tipke, če vmes ni bila spuščena.
End If
End If
If PINB.2 = 0 AND TipkaJE = 1 Then ' Tipka je bila pritisnjena, je že spuščena?
Waitms 20
If PINB.2 = 0 Then
TipkaJE = 0 ' Tipka ni več pritisnjena. Tipka je spuščena.
Waitms 10 ' se še malo počaka
End If
End If
Loop
End 'konec programa
'*******************************************************************************
Nova_vrednost:
Select Case Vrednost ' zelo hitro spreminja vrednost, dokler ne pritisnemo tipke
7-segment
Case 0 : Vrednost = 1 '1
Case 1 : Vrednost = 2 '2
Case 2 : Vrednost = 3 '3
Case 3 : Vrednost = 4 '4
Case 4 : Vrednost = 5 '5
Case 5 : Vrednost = 0 '6
End Select
Return
'********************************
Izpisi_cifro:
Select Case Vrednost 'Glede na vrednost izpisi pravo stevilko na
7-segment
Case 0 : PORTA = &B00001001 '1
Case 1 : PORTA = &B01110011 '2
Case 2 : PORTA = &B01011011 '3
Case 3 : PORTA = &B11001001 '4
Case 4 : PORTA = &B11011010 '5
Case 5 : PORTA = &B11111010 '6
End Select
Return
'******************************** |
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
stursc Član

Pridružen-a: Tor 08 Jun 2004 14:29 Prispevkov: 323 Aktiv.: 1.36
|
Objavljeno: Pon Jan 17, 2011 3:28 pm Naslov sporočila: |
|
|
program_er je napisal/a: |
zasede 30% ATtiny24. |
Pozdrav !
Iščem ta uC (Tiny24 ali 44) pa me zanima kje si jih nabavil, je mogoče kaka stara zaloga ali zunanji dobavitelj ?
Hvala
LP, stursc
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pon Jan 17, 2011 6:52 pm Naslov sporočila: |
|
|
igo, menim, da si stvar po nepotrebnem zakompliciral.
Koda: |
Gosub Nova_vrednost 'V ozadju zelo hitro spreminja vrednost, dokler ne pritisnemo tipke
Nova_vrednost:
Select Case Vrednost ' zelo hitro spreminja vrednost, dokler ne pritisnemo tipke
Case 0 : Vrednost = 1 '1
Case 1 : Vrednost = 2 '2
Case 2 : Vrednost = 3 '3
Case 3 : Vrednost = 4 '4
Case 4 : Vrednost = 5 '5
Case 5 : Vrednost = 0 '6
End Select
Return
|
Če opazuješ tvojo Subrutino (ali jo celo poženeš v simulatorju), ugotoviš, da ti le povečuješ spremenljivko Vrednost ter jo resetiraš, če pride na 5 (maximum).
Temu je torej popolnoma ekvivalentna ta koda:
Koda: |
Gosub Nova_vrednost 'V ozadju zelo hitro spreminja vrednost, dokler ne pritisnemo tipke
Nova_vrednost:
Incr Vrednost 'Povečam Vrednost
If Vrednost = 6 Then Vrednost = 0 'Če je Vrednost=6 (oz. "7"), jo dam na 0(oz. "1")
Return
|
Ker pa skok v Subrutino porabi 3 procesorske cikle, vrnitev nazaj pa še 4 (torej 7 nepotrebnih ciklov - mimogrede, to se da lepo spremljat v Bascom-AVR simulatorju, ki ti šteje cikle programa oz. za vsak ukaz), lahko to brez problema skrajšaš v:
Koda: |
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx GLAVNI PROGRAM xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TipkaJE = 0 ' Dodaj med definicije spremenljivk in bitov
Do 'to vedno ponavljaj
Waitus 1
Incr Vrednost 'Zelo hitro spreminja vrednost, dokler ne pritisnemo tipke
If Vrednost = 6 Then Vrednost = 0 'Če je Vrednost=6 (oz. "7"), jo dam na 0(oz. "1")
'Vedno ponavljaj
If PINB.2 = 1 Then ' Je tipka pritisnjena?
Waitms 20
If PINB.2 = 1 AND TipkaJE = 0 Then
Gosub Izpisi_cifro 'in končno izpišemo pravo cifro
TipkaJE = 1 ' Tipka JE pritisnjena. Blokira se zaznavanje pritisnjene tipke, če vmes ni bila spuščena.
End If
End If
If PINB.2 = 0 AND TipkaJE = 1 Then ' Tipka je bila pritisnjena, je že spuščena?
Waitms 20
If PINB.2 = 0 Then
TipkaJE = 0 ' Tipka ni več pritisnjena. Tipka je spuščena.
Waitms 10 ' se še malo počaka
End If
End If
Loop
End 'konec programa |
Tole, da moramo tipko najprej spustiti, je sicer dobra ideja, ampak če jaz sebe pogledam, če se nič ne zgodi ko tipko stisnem, si mislim, da ni primla in jo zato stiskam močneje oz. tako dolgo, da bo šlo
Temu je namenjena "animacija" (katere čas lahko brez težav povečaš), ki poleg tega, da ti da čas, da odmakneš prst, še lepo ter zanimivo izgleda Programa pa nič ne ovira oz. "škoduje" Random funkciji
In če torej dodama nazaj animacijo, sta si najini kodi skoraj identični, le da tvoja vsako "rundo" Vrednost poveča za 1, moja pa ji dodeli relativno naključno vrednost.
Če vzamema primer, da bi, recimo, nekako večrat s točno enakim časovnim razmakom stisnil tipko, bi tvoja koda vrnila vedno enak rezultat, moja pa bi ga vsaj malo dodatno Randomizirala Ampak to je že stvar okusa, itak ne moreš nikoli stisnitit tipke na 1us natančno
stursc je napisal/a: |
program_er je napisal/a: |
zasede 30% ATtiny24. |
Pozdrav !
Iščem ta uC (Tiny24 ali 44) pa me zanima kje si jih nabavil, je mogoče kaka stara zaloga ali zunanji dobavitelj ?
Hvala
LP, stursc |
Farnell, sam sem jih kupil na eBayju (ampak zdaj jih izgleda ni več )
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.00
|
Objavljeno: Pon Jan 17, 2011 9:54 pm Naslov sporočila: |
|
|
Pretvori bascom datoteko v .hex , nato pa jo pretvori nazaj v assembler obliko.
Oglej si tvojo INCR zanko in boš ugotovil, da so za običajno povečanje vrednosti potrebni naprimer trije cikli, za spremembo iz 5 v 0 pa naprimer 6 ciklov.
Povsem jasno je, da je vrednost 6 verjetnejša od preostalih petih vrednosti.
(Trajanje enega prehoda celega programa pri incr ) / (Trajanje enega prehoda celega programa, ko gre iz 5 v 0) < 1
Moralo bi biti enako. Razlikuje se za par ciklov, kar se pri tako kratkem programu že pozna.
Zato rabiš podprogram, ki za izračun vseh vrednosti potrebuje enako število ukazov. To pa je možno edino s tabelo, razen če pišeš v assemblerju in dodajaš nop (no operation) ukaze, da izenačiš trajanje posameznih vrednosti.
Ali pa v simulatorju štopaj, koliko časa potrebuje program za en krog pri incr in koliko pri rehodu iz 5 v 0.
Lahko pa pripneš assemblersko kodo ukaza rand, da vidim, kako naključna je.
Sicer pa bi tako napravil jaz. Lahko napraviš, kakor želiš, opozoril sem zgolj na pikolovsko zanimivost.
p.s.: V mojem programu se cifra pojavi takoj, ko pritisneš tipko in ostane nespremenjena, dokler je ponovno ne pritisneš. Animacije ni ...
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 496 dni
Powered by phpBB © 2001, 2005 phpBB Group
|