Strana 1 z 1

jednoduchy semafor s tlacitkom

Napísané: 10 Jan 2014, 22:39
od používateľa mato1168
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

Re: jednoduchy semafor s tlacitkom

Napísané: 16 Jan 2014, 11:43
od používateľa Lucky_G
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

Re: jednoduchy semafor s tlacitkom

Napísané: 16 Jan 2014, 11:55
od používateľa sonikmartin
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

Re: jednoduchy semafor s tlacitkom

Napísané: 23 Jan 2014, 09:55
od používateľa mato1168
dakujem za rady dnes to skusim

Re: jednoduchy semafor s tlacitkom

Napísané: 02 Feb 2014, 17:14
od používateľa mato1168
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

Re: jednoduchy semafor s tlacitkom

Napísané: 02 Feb 2014, 18:10
od používateľa smotek7
1. za Portc.0 = 0
terba Waitms 1000
2. chces ak stlacis tlacitko aby led stale blikala a opatovnom stlaceni zhasla?

Re: jednoduchy semafor s tlacitkom

Napísané: 02 Feb 2014, 18:29
od používateľa mato1168
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