jednoduchy semafor s tlacitkom

Moderátori: psichac, Moderátori

mato1168
Stály člen
Stály člen
Príspevky: 371
Dátum registrácie: 22 Apr 2012, 21:48
Bydlisko: Piešťany
Vek: 28
Kontaktovať používateľa:

jednoduchy semafor s tlacitkom

Príspevok od používateľa mato1168 » 10 Jan 2014, 22:39

skusal som naprogramovat v bascome semafor ten funguje ako ma ale chcel som tam pridat este tlacitko a po jeho stlaceni zacne blikat zlta led a po opatovnom stlaceni zacne fungovat semafor normalne ale s tymto mam problem tu je co som naprogramoval
mikroprocesor mam atmega8a-16PU

Kód: Vybrať všetko

$regfile = "m8def.dat"
$crystal = 1000000

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output

 ''''''''''''''' HLAVNI PROGRAM ''''
 Do
 Portc.0 = 1
 Portc.1 = 0
 Portc.2 = 0
 Waitms 3000
 Portc.0 = 1
 Portc.1 = 1
 Portc.2 = 0
  Waitms 1500
 Portc.0 = 0
 Portc.1 = 0
 Portc.2 = 1
  Waitms 6000
 Portc.0 = 0
 Portc.1 = 1
 Portc.2 = 0
Waitms 1300
 Portc.0 = 1
 Portc.1 = 0
 Portc.2 = 0
 Loop

 ''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''
 End
a tu je kod s tlacitkom

Kód: Vybrať všetko

$regfile = "m8def.dat"
$crystal = 1000000

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Input
 ''''''''''''''' HLAVNI PROGRAM ''''
Do
If Portc.3 = 1 Then

 Portc.0 = 1
 Portc.1 = 0
 Portc.2 = 0
 Waitms 3000
 Portc.0 = 1
 Portc.1 = 1
 Portc.2 = 0
  Waitms 1500
 Portc.0 = 0
 Portc.1 = 0
 Portc.2 = 1
  Waitms 6000
 Portc.0 = 0
 Portc.1 = 1
 Portc.2 = 0
Waitms 1300
 Portc.0 = 1
 Portc.1 = 0
 Portc.2 = 0
 Loop
End If
Portc.3 = 0
  Do
 Portc.1 = 1

 Waitms 1000
 Portc.1 = 0

 loop
 ''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''
End
vedel by mi niekto poradit kde je v tom druhom kode chyba aby mi to fungovalo ze po stlaceni tlacitka sa rozblika zlta led a po znovu stlaceni tlacitka pokracuje prva cast programu teda normalna funkcia semaforu
0

Lucky_G
Okoloidúci
Okoloidúci
Príspevky: 2
Dátum registrácie: 10 Jan 2014, 11:17

Re: jednoduchy semafor s tlacitkom

Príspevok od používateľa Lucky_G » 16 Jan 2014, 11:43

Mas tam chybne prehodene uzavretie podmienky END IF az po LOOP:

Kód: Vybrať všetko

DO
IF ... THEN ...

LOOP
END IF
A potom ti to prejde do nekonecnej slucky blikania oranzovej, z ktorej nie je ziadny navrat / odskok, navyse to blikanie bude viditelne ako trvale svietenie, kedze vystup sa zmeni na 0 iba na nevidielne kratky okamih, mal by si tam doplnit aj druhy krat Waitms 1000 po zmene na 0:

Kód: Vybrať všetko

  Do
Portc.1 = 1

Waitms 1000
Portc.1 = 0

loop
A na citanie stavu tlacidla doporucujem pouzit radsej PINC.3 ako PORTC.3. Ak tlacidlo spina PORTC.3 k GND, tak si v uvode nastav interny Pull-up a citaj stav PINC.3:

Kód: Vybrať všetko

DDRC.3 = 0     'Input
PORTC.3 = 1   'Pull-up zapnuty
0

Používateľov profilový obrázok
sonikmartin
Pokročilý člen
Pokročilý člen
Príspevky: 554
Dátum registrácie: 05 Nov 2010, 00:00
Bydlisko: Litomyšl
Vek: 36
Kontaktovať používateľa:

Re: jednoduchy semafor s tlacitkom

Príspevok od používateľa sonikmartin » 16 Jan 2014, 11:55

Ja bych to udelal takle

Kód: Vybrať všetko

$regfile = "m8def.dat"
$Crystal=1000000
$hwstack=40
$swstack=16
$framesize=32

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Input

Declare Sub Norm
Declare Sub Blik
Declare Sub Klop

Dim Mem As Bit

''''''''''''''' HLAVNI PROGRAM ''''
Do

Debounce Pinc.3 , 0 , Klop , Sub

   If Mem = 1 Then
      Norm
   Else
      Blik
   End If

loop
''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''
End


Sub Norm

   Portc.0 = 1
   Portc.1 = 0
   Portc.2 = 0
      Waitms 3000
   Portc.0 = 1
   Portc.1 = 1
   Portc.2 = 0
      Waitms 1500
   Portc.0 = 0
   Portc.1 = 0
   Portc.2 = 1
      Waitms 6000
   Portc.0 = 0
   Portc.1 = 1
   Portc.2 = 0
      Waitms 1300
   Portc.0 = 1
   Portc.1 = 0
   Portc.2 = 0

End Sub

Sub Blik
   Portc.1 = 0
      Waitms 1000
   Portc.1 = 1
      Waitms 1000
End Sub

Sub Klop

   If Mem = 0 Then
      Mem = 1
   Elseif Mem = 1 Then
      Mem = 0
   End If

End Sub
0

mato1168
Stály člen
Stály člen
Príspevky: 371
Dátum registrácie: 22 Apr 2012, 21:48
Bydlisko: Piešťany
Vek: 28
Kontaktovať používateľa:

Re: jednoduchy semafor s tlacitkom

Príspevok od používateľa mato1168 » 23 Jan 2014, 09:55

dakujem za rady dnes to skusim
0

mato1168
Stály člen
Stály člen
Príspevky: 371
Dátum registrácie: 22 Apr 2012, 21:48
Bydlisko: Piešťany
Vek: 28
Kontaktovať používateľa:

Re: jednoduchy semafor s tlacitkom

Príspevok od používateľa mato1168 » 02 Feb 2014, 17:14

tak program som vyskusal a funguje ale teraz mam dalsi problem potrebujem aby sa po stlaceni tlacitka rozblikala led ale nejde mi to bud ostane svietit alebo blika len ak drzim tlacitko stlacene vedeli by ste mi poradit s tymto?
program je

Kód: Vybrať všetko

$regfile = "m8def.dat"
$crystal = 1000000
Config Portc.0 = Output
Config Portc.1 = Input


 ''''''''''''''' HLAVNI PROGRAM ''''
  Do
 If Pinc.1 = 0 Then
 Do
Portc.0 = 1
 Waitms 1000
Portc.0 = 0
 Loop
End If
Loop



 ''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''
End
dakujem za rady
0

smotek7
Pokročilý člen
Pokročilý člen
Príspevky: 528
Dátum registrácie: 08 Aug 2011, 00:00
Bydlisko: PN
Vek: 44

Re: jednoduchy semafor s tlacitkom

Príspevok od používateľa smotek7 » 02 Feb 2014, 18:10

1. za Portc.0 = 0
terba Waitms 1000
2. chces ak stlacis tlacitko aby led stale blikala a opatovnom stlaceni zhasla?
0
Nemusím vedeť váhu elektrónu ak chcem zaspájkovať tranzistor.

mato1168
Stály člen
Stály člen
Príspevky: 371
Dátum registrácie: 22 Apr 2012, 21:48
Bydlisko: Piešťany
Vek: 28
Kontaktovať používateľa:

Re: jednoduchy semafor s tlacitkom

Príspevok od používateľa mato1168 » 02 Feb 2014, 18:29

Diki za radu je mi jedno ci po opatovnom stlaceni zhasne alebo nie robím so spolužiakom jeden projekt bude tam viac lediek a viac tlacitiek a po.stlačení niakeho tlacitka.sa.rozblikaju alebo rozsvietia kokretne ledky a chcem.tam dat este tlacitko na reset ze.ked ho.stlacim vsetko zhasne
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok