Mahlzeit zusammen,
es ist eventuell mit Kanonen auf Spatzen schießen wenn man einen Atmega8 als Servo-Tester benutzt, es geht mir ja auch um das erlernen der AVRs. Alles ist mir noch nicht erschlossen was die Deklaration für timer1 und adc zu bedeuten hat, da ist so ein Display bedeutend einfacher zu verstehen.
Egal, meine Idee war ein Servo mit dem Poti anzusteuern und die Werte auf dem Display anzuzeigen, und das ist daraus geworden:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
' Compiler: Bascom 2.0.7.5
' Dateiname: Poti-Servo-Display.avr
' Funktion: mit einem Poti einen Servo ansteuern und die Werte auf einem Display anzeigen
' Datum: Start 23.01.2020, Stand 23.01.2020
' Von: BoomBoomMagic (AVR für Dummys), angepaßt von Naubaddi (Servo und Display)
' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 32
' &HFF, &HE1, &HD9, &HFF ' 1MHz
$PROG &HFF, &HE4, &HD9, &HFF ' 8MHz
' --- Deklarationen... -----------------------------------------------------------------------------------------
config timer1 = pwm , pwm = 8 , compare a pwm = clear up , compare b pwm = clear down , prescale = 1024
config adc = single , prescaler = auto , reference = avcc
config lcdpin = pin , DB4 = portd.0 , DB5 = portd.1 , DB6 = portd.2 , DB7 = portd.3 , RS = portd.4 , E = portd.5
config lcd = 16 * 2
config servos = 1 , Servo1 = portd.7 , reload = 10
config portd = output
' --- Variablen... ---------------------------------------------------------------------------------------------
dim w as word
dim Zeile as string * 16
dim Position as string * 16
' --- Vorbelegung der Variablen... -----------------------------------------------------------------------------
enable timer1
enable interrupts
Zeile = ""
Position = ""
cursor Off
cls
' --- Programm Anfang ------------------------------------------------------------------------------------------
do
w = getadc(0) ' der Wert vom Poti
Zeile = "Poti: " + str(w) + " " ' den Wert in einen Text einsetzen
locate 1,1 ' Ausgabe in die erste Zeile
lcd Zeile ' den Wert vom Poti anzeigen
w = w / 11 ' den Wert für einen Servo verkleinern
w = w + 51 ' und anpassen
Position = "Servo:" + str(w) + " Mitte "
if w < 93 then Position = "Servo:" + str(w) + " links "
if w > 98 then Position = "Servo:" + str(w) + " rechts "
locate 2,1 ' Ausgabe in die zweite Zeile
lcd Position ' den Wert für das Servo anzeigen
Servo(1) = W ' den Servo positionieren
loop
' --- Programm Ende --------------------------------------------------------------------------------------------
end