Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Bascom AVR
SQ2EER Offline
Jacek sk
***

Liczba postów: 182
Dołączył: 17-06-2009
Post: #40
RE: Bascom AVR
Blush hi efekt obracania się rotora - czyli w drugiej linijce od lewej:
wskazanie aktualnego azymutu (261) w środku znacznik z prawej zadany azymut (305), a w pierwszej właśnie przesuwanie się stopni jak obraca się rotor - chcę Blush spróbować napisać program do sterownika rotora Blush pozdrawiam Jacek.

Witam - napisałem taki programik z odczytem napięcia z potencjometru przez przetwornik ale nie mogę sobie poradzić z zaokrągleniem zmiennej "azym_zad" do wartości całkowitej - wychodzi mi z ułamkiem - co robie źle - mogę prosić o podpowiedź.
program:
Kod:
'odczyt testowy ADC Atmega 644p płyta testowa EvB 4.3  zamiana odczytanej
'wartości z A/C na stopnie azymutu
'Program obsługi wbudowanego w mikrokontroler
'10-bitowego przetwornika A/C
$regfile = "m644pdef.dat"                                   'informuje kompilator o typie mikrokontrolera
'$sim
$crystal = 16000000                                         'informuje kompilator
                                                            'o częstotliwości oscylatora
                                                            'taktującego mikrokontroler
Config Lcd = 16 * 4

Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7       'porty mikrokontrolera, do których dołączono wyświetlacz LCD
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'konfiguracja wewnętrznego przetwornika A/C
Config Pind.0 = Input
Config Pind.1 = Input
Config Portb.0 = Output
Config Portb.1 = Output

Deflcdchar 1 , 31 , 31 , 4 , 4 , 4 , 4 , 4 , 4              ' replace ? with number (0-7)
Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)
Deflcdchar 3 , 31 , 31 , 4 , 4 , 4 , 32 , 32 , 32           ' replace ? with number (0-7)
Deflcdchar 4 , 4 , 4 , 4 , 4 , 14 , 14 , 31 , 31            ' replace ? with number (0-7)
Deflcdchar 5 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)

         'Zmienne
Dim Wart_ac1 As Word                                        'zmienna na wartość odczytaną z przetwornika
Dim V1 As Single                                            'zmienna przechowująca obliczon
Dim Azym_odcz As String * 3                                 'zmienna, do której będzie wpisywany odczytany azymut
Dim Azym_zad As Single                                      'zmienna, do której będzie wpisywany zadany azymut

Declare Sub Lewo
Declare Sub Prawo
Declare Sub Kierunek

Set Pind.0
Set Pind.1
Set Portb.0
Set Portb.1

Start Adc                                                   'uruchamia wbudowany przetwornik

Wart_ac1 = Getadc(0)                                        'odczytanie wartości z wejści ADC0 mikrokontrolera
V1 = Wart_ac1 / 2.842                                       'zamiana odczytanej wartości z A/C na stopnie azymutu

Azym_odcz = Fusing(v1 , "#." )
Azym_zad = V1
Cursor Off


Cls
Wait 2

Azym_zad = V1
Locate 1 , 4 : Lcd "STEROWNIK"
Waitms 500
Locate 2 , 6 : Lcd "ROTORA"
Wait 2
Cls

Do
                                                         'początek pętli programu
Wart_ac1 = Getadc(0)                                        'odczytanie wartości z wejści ADC0 mikrokontrolera
V1 = Wart_ac1 / 2.842                                       'zamiana odczytanej wartości z A/C na stopnie azymutu

Azym_odcz = Fusing(v1 , "#." )                              'formatowanie wartości zmiennej

Locate 1 , 6 : Lcd "Azymut"
Locate 2 , 1 : Lcd Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2)
Locate 3 , 2 : Lcd Azym_odcz ; Chr(5) ;
Locate 3 , 9 : Lcd Chr(4)
Locate 3 , 12 : Lcd Azym_zad ; Chr(5)

If Pind.0 = 0 Then                                          'zwiększanie zadanego azymutu
  Waitms 25
  If Pind.0 = 0 Then
  Incr Azym_zad
  If Azym_zad => 360 Then
  Azym_zad = 360
  End If
  End If
  End If

If Pind.1 = 0 Then                                          'zmiejszanie zadanego azymutu
Waitms 25
If Pind.1 = 0 Then
Decr Azym_zad
If Azym_zad <= 0 Then
Azym_zad = 0
End If
End If
End If

Locate 3 , 12 : Lcd Azym_zad ; Chr(5)

If V1 <> Azym_zad Then
Gosub Kierunek


End If

Loop                                                        'koniec pętli Do...Loop
End                                                         'koniec programu

Sub Kierunek
If V1 < Azym_zad Then
Reset Portb.0 : Set Portb.1                                'zapalanie diody LED1
End If
If V1 > Azym_zad Then
Reset Portb.1 : Set Portb.0                                'zapalanie diody LED2
End If
If V1 = Azym_zad Then
Set Portb.0 : Set Portb.1                                  'gaszenie obu LED
End If

End Sub

część programu do odczytu z przetwornika znalazłem w necie - pozdrawiam 73 Jacek.
(Ten post był ostatnio modyfikowany: 27-03-2011 0:42 przez SQ2EER.)
18-03-2011 23:15
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Bascom AVR - SP5FCS - 15-08-2010, 22:43
RE: Bascom AVR - SP3SWJ - 06-10-2010, 21:56
RE: Bascom AVR - SQ2EER - 25-10-2010, 21:07
RE: Bascom AVR - SP3SWJ - 25-10-2010, 21:17
RE: Bascom AVR - SQ2EER - 25-10-2010, 21:23
RE: Bascom AVR - SP3SWJ - 25-10-2010, 21:35
RE: Bascom AVR - SQ2EER - 25-10-2010, 21:39
RE: Bascom AVR - SP3SWJ - 25-10-2010, 22:05
RE: Bascom AVR - SQ2EER - 25-10-2010, 22:28
RE: Bascom AVR - SP3SWJ - 27-10-2010, 1:49
RE: Bascom AVR - SQ2EER - 18-03-2011, 21:39
RE: Bascom AVR - SP3SWJ - 18-03-2011, 22:02
RE: Bascom AVR - SQ2EER - 18-03-2011, 22:22
RE: Bascom AVR - SQ9MDD - 18-03-2011, 22:31
RE: Bascom AVR - SQ2EER - 18-03-2011, 23:03
RE: Bascom AVR - SP3SWJ - 18-03-2011, 23:05
RE: Bascom AVR - SQ2EER - 18-03-2011 23:15
RE: Bascom AVR - SQ2EER - 04-09-2011, 22:04
RE: Bascom AVR - SP3SWJ - 04-09-2011, 22:09
RE: Bascom AVR - SQ2EER - 04-09-2011, 22:22
RE: Bascom AVR - SP3SWJ - 04-09-2011, 22:36
RE: Bascom AVR - SQ9MDD - 06-05-2012, 16:10
RE: Bascom AVR - SP3SWJ - 06-05-2012, 16:10
RE: Bascom AVR - SQ9MDD - 06-05-2012, 16:21
RE: Bascom AVR - SP3SWJ - 06-05-2012, 16:34
RE: Bascom AVR - SQ9MDD - 06-05-2012, 16:41
RE: Bascom AVR - SP3SWJ - 06-05-2012, 16:41

Skocz do:


Użytkownicy przeglądający ten wątek: 4 gości