ASURO Library
2.80
Hauptseite
Dateien
Auflistung der Dateien
Datei-Elemente
lib
my_motor_low.c
gehe zur Dokumentation dieser Datei
1
/****************************************************************************/
27
/*****************************************************************************
28
* *
29
* This program is free software; you can redistribute it and/or modify *
30
* it under the terms of the GNU General Public License as published by *
31
* the Free Software Foundation; either version 2 of the License, or *
32
* any later version. *
33
* *
34
*****************************************************************************/
35
#include "
asuro.h
"
36
#include "
myasuro.h
"
37
38
39
40
/****************************************************************************/
80
void
MyMotorSpeed
(
81
unsigned
char
left_speed,
82
unsigned
char
right_speed)
83
{
84
int
l_speed;
85
int
r_speed;
86
87
if
(
MY_MOTOR_DIFF
!= 0)
88
{
89
/*
90
Das Ganze macht nur Sinn, wenn mindestens ein Motor fahren soll.
91
*/
92
if
(left_speed > 0 ||
93
right_speed > 0)
94
{
95
/*
96
Bei positivem MY_MOTOR_DIFF wird der rechte Motor verstaerkt.
97
Bei negativem MY_MOTOR_DIFF wird der linke Motor verstaerkt.
98
*/
99
l_speed = left_speed -
MY_MOTOR_DIFF
/ 2;
100
r_speed = right_speed +
MY_MOTOR_DIFF
/ 2;
101
102
/*
103
Wertebereich von 0 bis 255 pruefen.
104
Unterscheiden nach positiver, bzw. negativer Vorgabe.
105
*/
106
if
(
MY_MOTOR_DIFF
> 0)
107
{
108
/*
109
Bei positivem MY_MOTOR_DIFF kann nur die rechte Seite > 255 werden.
110
*/
111
if
(r_speed > 255)
112
{
113
/*
114
Um die Differenz von MY_MOTOR_DIFF weiterhin zu erhalten, wird nun
115
die linke Seite noch weiter reduziert, und die rechte Seite auf
116
das zulaessige Maximum gesetzt.
117
*/
118
l_speed -= (r_speed - 255);
119
r_speed = 255;
120
}
121
if
(l_speed < 0)
122
{
123
/*
124
Die linke Seite ist nun unter dem zulaessige Minimum von 0.
125
Auch dies muss korrigiert werden.
126
*/
127
l_speed = 0;
128
}
129
}
130
else
131
{
132
/*
133
Bei negativem MY_MOTOR_DIFF kann nur die linke Seite > 255 werden.
134
*/
135
if
(l_speed > 255)
136
{
137
/*
138
Um die Differenz von MY_MOTOR_DIFF weiterhin zu erhalten, wird nun
139
die rechte Seite noch weiter reduziert, und die linke Seite auf
140
das zulaessige Maximum gesetzt.
141
*/
142
r_speed -= (l_speed - 255);
143
l_speed = 255;
144
}
145
if
(r_speed < 0)
146
{
147
/*
148
Die rechte Seite ist nun unter dem zulaessige Minimum von 0.
149
Auch dies muss korrigiert werden.
150
*/
151
r_speed = 0;
152
}
153
}
154
155
left_speed = l_speed;
156
right_speed = r_speed;
157
}
158
}
159
160
MotorSpeed
(left_speed, right_speed);
161
}
162
163
Erzeugt am Mit Nov 27 2013 22:55:08 für ASURO Library von
1.8.2