Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

Der Ursprung dieses Forum reicht bis in das Jahr 2008 zurück


Ein Servo-Tester mal etwas anders ;-)

#1 von Naubaddi , 23.01.2020 14:00

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:

1
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
 





Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Ein Servo-Tester mal etwas anders ;-)

#2 von BoomBoomMagic , 23.01.2020 17:02

Dies soll jetzt keine Kritik sein , mit Wunsch von Naubaddi hier mal wie man es .....mh ... auch machen könnte

1
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
 

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 40
$framesize = 40
 
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
Config Lcd = 16 * 2
Cursor Off
Cls
 
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Adc = Single , Prescaler = Auto, Reference =avcc
 
config portb = output
config Portc = input
 
const Faktor=8.525' Servobereich von 30-150 / 1024Bit : 120 = 8.525
 
dim Potiwert as word
dim Servowert as byte
dim Dummy as single
dim Servo_alt as byte
 
enable Interrupts
locate 1,1
lcd "Poti :"
locate 2,1
lcd "Servo:"
 
do
 
Potiwert=getadc(0)
Dummy=Potiwert/Faktor
Servowert=Dummy+30
 
locate 1,7
lcd Potiwert ; " "
 
if Servowert<>Servo_alt then
Servo_alt=Servowert
 
locate 2,7
lcd Servowert ; " "
locate 2,11
 
Select case Servowert
case 30 to 89
lcd "Links "
 
case 91 to 150
lcd "Rechts "
 
case 90
lcd "Mitte "
end select
 
Servo(1) =Servowert
 
endif
 
loop
end
 
 




***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 876
Registriert am: 24.01.2019

zuletzt bearbeitet 23.01.2020 | Top

RE: Ein Servo-Tester mal etwas anders ;-)

#3 von Naubaddi , 23.01.2020 21:59

Das war eine schwere Geburt, die Version von BBM wurde nur im Bezug auf unterschiedliche Hardware und meinen Sonderheiten bei der Schreibweise verändert.

Ganz wichtig ist die Werte der Hardware anzupassen, sonst sucht man nach Fehlern wo keine sind!

Unsere Servos sind unterschiedlich und auch die Kabelbelegung unserer Displays, warum ist ein anderes Thema ;-). Also nicht einfach kopieren und einfügen!

Wichtig sind die Zeilen 21,22 für das Display, 26 für das Servo und 35 für den Faktor, habe hoffentlich nix vergessen ;-).

So sieht das Programm von BBM bei mir aus, Wer das Geschnörkel nicht mag löscht es einfach.

1
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
' 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 & Naubaddi
 
' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
 
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 40
$framesize = 40
 
' &HFF, &HE1, &HD9, &HFF ' 1MHz
$PROG &HFF, &HE4, &HD9, &HFF ' 8MHz
 
' --- Deklarationen... -----------------------------------------------------------------------------------------
 
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
Cursor Off
Cls
 
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Adc = Single , Prescaler = Auto, Reference =avcc
enable interrupts
 
config portb = output
config Portc = input
 
' --- Variablen... ---------------------------------------------------------------------------------------------
 
const Faktor = 10.779 ' Servobereich 51-145 = 94 ergibt 1024Bit : 94 = 10.779
 
dim Potiwert as word
dim Servowert as byte
dim Dummy as single
dim Servo_alt as byte
 
' --- Vorbelegung der Variablen... -----------------------------------------------------------------------------
 
locate 1,1
lcd "Poti :"
locate 2,1
lcd "Servo:"
 
' --- Programm Anfang ------------------------------------------------------------------------------------------
 
do
 
Potiwert = getadc(0)
Dummy = Potiwert / Faktor
Servowert = Dummy + 51
locate 1,7
lcd Potiwert ; " "
 
if Servowert <> Servo_alt then
 
Servo_alt = Servowert
 
Select case Servowert
case 51 to 94
locate 2,7
lcd Servowert ; " "
locate 2,11
lcd "Links "
case 100 to 146
locate 2,7
lcd Servowert ; " "
locate 2,11
lcd "Rechts "
case 95 to 99
locate 2,7
lcd Servowert ; " "
locate 2,11
lcd "Mitte "
end select
 
Servo(1) = Servowert
 
endif
 
loop
 
' --- Programm Ende --------------------------------------------------------------------------------------------
 
end
 
' --------------------------------------------------------------------------------------------------------------
 



Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Ein Servo-Tester mal etwas anders ;-)

#4 von BoomBoomMagic , 24.01.2020 23:02

Son Display auf 42 Zoll Größe ..... das sollte dann auch nen Blinder sehen können


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 876
Registriert am: 24.01.2019


   

Attiny85 Board
BASCOM Demo-Version und die 4k Begrenzung...

Picaxe Editor 5.5.5 Download
Update auf Picaxe Editor 5.5.6 Download
Picaxe Editor 6.x.x.x Download
Manual1.pdf        -      Grundwissen Download
Manual2.pdf        -      Befehle Download
Manual3.pdf        -      Beispiele Download


Press [Backspace] for back to Menu


Counter
Xobor Forum Software ©Xobor.de | Forum erstellen
Datenschutz