Pinb.0 = krańcówka
Pind.7 = krańcówka
Pind.6 = przekaźnik z modułu radiowego
Pinb.5 =przekaźnik do silnika
Pinc.0 = przekaźnik do silnika
Płytke już wytrawiłem dla mikrokontrolera Atmega8 działająca na wewnętrznym kwarcu.Silnik jest prądu stałego.w zależności od stanu pinu do przekaźników silnik kręci sie w lewo lub w prawo
Program wygląda następująco
Po zwarciu chwilowym styków przekaźnika z modułu radiowego mikrokontroler załacza jeden z przekaźników i utrzymuje ten stan dopóki nie zostanie załączona jedna z krańcówek lub przekaźnik z modułu radiowego sie jeszcze raz nie załączy (w tym wypadku nie ma znaczenia która krańcówka zadziała).Ponowne załączenie przekaźnika z modułu radiowego jeżeli brama stoi powoduje zadziałanie drugiego przekaźnika w celu zmiany kierunku obrotu silnika i tak jak poprzednio dopóki nie załączy sie któraś z krańcówek lub nie zostanie załączony przekaźnik z modułu radiowego
czy ktoś mógłby mi pomóc napisać ten program?Naprawde nie wiem jak sie za to zabrać(tzn za tą pętle)
Czy ktoś mógłby wyłapać błędy?
Kod: Zaznacz cały
$regfile = "m8def.dat"
Config Pinb.0 = Input
Config Pind.7 = Input
Config Pind.6 = Input
Config Pinb.5 = Output
Config Pinc.0 = Output
Dim A As Bit
Dim B As Bit
A = 0
B = 0
Declare Sub Lewo
Declare Sub Prawo
Declare Sub Zatrzymaj
Przekaznik1 Alias Portb.5
Przekaznik2 Alias Portc.0
Krancowka1 Alias Pinb.0
Krancowka2 Alias Pind.7
Radio Alias Pind.6
Do
If Radio = 0 Then If Krancowka1 = 0 Then If A = 0 Then Call Lewo
If Radio = 0 Then If Krancowka2 = 0 Then If B = 0 Then Call Prawo
If Radio = 0 Then If Krancowka1 = 1 Then If Krancowka2 = 1 Then Call Lewo
Loop
End
Sub Lewo
A = 1
Set Przekaznik1
If Radio = 0 Then If A = 1 Then Call Zatrzymaj
If Krancowka2 = 0 Then Call Zatrzymaj
End Sub
Sub Prawo
B = 1
Set Przekaznik2
If Radio = 0 Then If B = 1 Then Call Zatrzymaj
If Krancowka1 = 0 Then Call Zatrzymaj
End Sub
Sub Zatrzymaj
Reset Przekaznik1
Reset Przekaznik2
A = 0
B = 0
Return
End Sub