www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Elektronska igralna kocka

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Sob Jan 15, 2011 10:05 pm    Naslov sporočila:  Elektronska igralna kocka Odgovori s citatom

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) Razz

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) Laughing



DSCN2073.JPG
 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

DSCN2073.JPG



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

DSCN2074.JPG



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

DSCN2076.JPG



DSCN2078.JPG
 Opis:
Na držalu.
 Velikost datoteke:  799.43 KB
 Pogledana:  4 krat

DSCN2078.JPG



DSCN2081.JPG
 Opis:
Že deluje :D
 Velikost datoteke:  721.12 KB
 Pogledana:  2 krat

DSCN2081.JPG




Nazadnje urejal/a program_er Ned Jan 16, 2011 8:12 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Sob Jan 15, 2011 10:12 pm    Naslov sporočila:   Odgovori s citatom

Še popolno samostojno delovanje Very Happy

Koda pa je v Bascom-AVR in zasede 30% ATtiny24.



DSCN2082.JPG
 Opis:
 Velikost datoteke:  733.84 KB
 Pogledana:  2 krat

DSCN2082.JPG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
bojan_z
Član
Član



Pridružen-a: Pet 16 Maj 2008 20:28
Prispevkov: 256
Aktiv.: 1.23
Kraj: Maribor

PrispevekObjavljeno: Sob Jan 15, 2011 10:44 pm    Naslov sporočila:   Odgovori s citatom

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 Very Happy

Koda pa je v Bascom-AVR in zasede 30% ATtiny24.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3362
Aktiv.: 14.19
Kraj: Dragomer

PrispevekObjavljeno: Sob Jan 15, 2011 11:25 pm    Naslov sporočila:   Odgovori s citatom

Preprost in efekten program!
Čestitam!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Ned Jan 16, 2011 2:57 am    Naslov sporočila:   Odgovori s citatom

Video delovanja kocke, v njegovem opisu pa sta tudi linka do sheme in Bascom-AVR programa (v .pdf)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Ned Jan 16, 2011 1:42 pm    Naslov sporočila:   Odgovori s citatom

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 Wink

_________________
Razsvetljujemo od leta 1920!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Ned Jan 16, 2011 8:06 pm    Naslov sporočila:   Odgovori s citatom

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. Wink

_________________
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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
jezikač
Član
Član



Pridružen-a: Tor 29 Sep 2009 23:21
Prispevkov: 160
Aktiv.: 0.84
Kraj: swamp

PrispevekObjavljeno: Ned Jan 16, 2011 8:32 pm    Naslov sporočila:   Odgovori s citatom

...


uhhhhhhh.png
 Opis:
 Velikost datoteke:  8.09 KB
 Pogledana:  2 krat

uhhhhhhh.png



_________________
na tekočem
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Ned Jan 16, 2011 8:47 pm    Naslov sporočila:   Odgovori s citatom

jezikač je napisal/a:
...


Popravljeno... spredaj sem pozabil f*p spremeniti v http Confused

_________________
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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Branez
Moderator
Moderator



Pridružen-a: Pon 14 Apr 2003 7:21
Prispevkov: 7831
Aktiv.: 33.04
Kraj: Koprivnica HR

PrispevekObjavljeno: Ned Jan 16, 2011 8:51 pm    Naslov sporočila:   Odgovori s citatom

Kaj pa tako hitiš! Prvo preveri.Very Happy


_________________
The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!

Albert Einstein
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.00

PrispevekObjavljeno: Ned Jan 16, 2011 9:24 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.36

PrispevekObjavljeno: Pon Jan 17, 2011 3:28 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Pon Jan 17, 2011 6:52 pm    Naslov sporočila:   Odgovori s citatom

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 Laughing Rolling Eyes

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 Wink Programa pa nič ne ovira oz. "škoduje" Random funkciji Wink


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 Wink Ampak to je že stvar okusa, itak ne moreš nikoli stisnitit tipke na 1us natančno Rolling Eyes


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č Shocked )

_________________
Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.00

PrispevekObjavljeno: Pon Jan 17, 2011 9:54 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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