Ovládanie troch stupňov motora
Moderátor: Moderátoři
Ovládanie troch stupňov motora
Mám k dispozícii 4 tlačítka a 4 relé. Napájacie napätie 5V.
Stlačením Tl 1 sa zapne relé 1 opätovným stlačením sa vypne.
Stlačením Tl 2 sa zapne relé 2 opätovným stlačením sa vypne.
Stlačením Tl 3 sa zapne relé 3 opätovným stlačením sa vypne.
Ak je niektoré relé zopnuté aktivácia druhého ho musí rozopnúť.
Napr. relé 1 je zopnuté, stlačenie tlačidla 2 rozopne relé jedna a zopne relé 2. atd.
Tlačidlo Tl 4 zopne relé 4 opätovne stlačenie rozopne relé 4. nezávisle na predchádzajúcich troch relé. Teda ON/OFF.
Ešte ma napadlo že by bolo vhodné mať signalizáciu každého zopnutého relé LEDkou.
Program bych nějak "splácal".
Máš to jak naprogramovat ?
http://profi.edisk.cz/stahnout-soubor/9 ... .67KB.html
http://profi.edisk.cz/stahnout-soubor/2 ... .26KB.html
P.S. s EAGLEm to skutečně neumím
Nepoužil jsem tedy žádná přerušení.
V simulátoru funguje.
Odzkoušeno na vývojové desce s ATmega644 na 16MHz a vzhledem k rychlosti hodin jsem to musel trochu upravit. S Attiny 2313(4313) na 1MHz
by zřejmě fungoval i původní program.
'(
-----------------------------------------------------------------------------
name: prepinac_rele.bas
copyright: (c)4-2014, nekmil@cbox.cz
Micro: Attiny 4313
BASCOM-AVR:2.0.7.7
-----------------------------------------------------------------------------
Fuse ponechat v továrním nastavení tzn.
vnitřní RC oscilátor 8 MHz a dělička 8-mi
tzn. procesor jede na 1 MHz
')
$regfile = "attiny4313.dat"
$crystal = 1e6 ' crystal frequency 1MHz
$hwstack = 42 ' default HW stack
$swstack = 32 ' default SW stack
$framesize = 24
'konfigurace výstupů
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
'výstupům přiřadíme jméno
rele_1 Alias Portb.0 'Vystup1
rele_2 Alias Portb.1 'Vystup2
rele_3 Alias Portb.2 'Vystup3
rele_4 Alias Portb.3 'Vystup4
'--------------------------------------------------
'konfigurace vstupů
Config Pind.0 = Input 'tlačítko 1
Config Pind.1 = Input 'tlačítko 2
Config Pind.2 = Input 'tlačítko 3
Config Pind.3 = Input 'tlačítko 4
Portd.0 = 1 'nastavit pull-up
Portd.1 = 1 'nastavit pull-up
Portd.2 = 1 'nastavit pull-up
Portd.3 = 1 'nastavit pull-up
'vstupum přiřadíme jméno
tlacitko_1 Alias Pind.0
tlacitko_2 Alias Pind.1
tlacitko_3 Alias Pind.2
tlacitko_4 Alias Pind.3
const on=1
const off=0
'config DEBOUNCE=30
'config Debounce zde nepoužito
'default hodnota jest tedy 25 ms
'hlavní program
'--------------------------------------------------
do
Debounce tlacitko_1 , 0 , r1 , Sub
Debounce tlacitko_2 , 0 , r2 , Sub
Debounce tlacitko_3 , 0 , r3 , Sub
Debounce tlacitko_4 , 0 , r4 , Sub
loop
'--------------------------------------------------
'ovládání rele_1
r1:
if rele_1= on then
rele_1=off
else
rele_1=on
rele_2=off
rele_3=off
end IF
return
'-----------
'ovládání rele_2
r2:
if rele_2= on then
rele_2=off
else
rele_2=on
rele_1=off
rele_3=off
end IF
return
'-----------
'ovládání rele_3
r3:
if rele_3= on then
rele_3=off
else
rele_3=on
rele_2=off
rele_1=off
end IF
return
'-----------
'ovládání rele_4
r4:
if rele_4= on then
rele_4=off
else
rele_4=on
end IF
return