![](/media/cache/group/ep_LV4vK4D.webp.50x50_q85.jpg)
Servo am Digital Pin D9 in Kombination mit Hall Sensor. Wenn der Hall Sensor anspricht, stoppt der Servo.
Fork of Servo by
main.cpp@2:377f1822ec9e, 2015-05-06 (annotated)
- Committer:
- stefan1691
- Date:
- Wed May 06 13:10:49 2015 +0000
- Revision:
- 2:377f1822ec9e
- Parent:
- 1:32f0eb92121b
Servo am Digital Pin D9 in Kombination mit Hall Sensor.; Wenn der Hall Sensor anspricht, stoppt der Servo.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
stefan1691 | 2:377f1822ec9e | 1 | /** Servo am Digital Pin D9 in Kombination mit Hall Sensor. |
stefan1691 | 2:377f1822ec9e | 2 | Wenn der Hall Sensor anspricht, stoppt der Servo. |
stefan1691 | 1:32f0eb92121b | 3 | Das orange Kabel (Signal) ist links. |
marcel1691 | 0:e6f25efb6af9 | 4 | */ |
marcel1691 | 0:e6f25efb6af9 | 5 | #include "mbed.h" |
marcel1691 | 0:e6f25efb6af9 | 6 | #include "Servo.h" |
marcel1691 | 0:e6f25efb6af9 | 7 | |
stefan1691 | 1:32f0eb92121b | 8 | Servo servo( D9 ); |
stefan1691 | 2:377f1822ec9e | 9 | AnalogIn hallSensor( A2 ); |
stefan1691 | 2:377f1822ec9e | 10 | DigitalOut led1( D10 ); |
stefan1691 | 2:377f1822ec9e | 11 | DigitalOut led2( D11 ); |
marcel1691 | 0:e6f25efb6af9 | 12 | |
marcel1691 | 0:e6f25efb6af9 | 13 | int main() |
marcel1691 | 0:e6f25efb6af9 | 14 | { |
stefan1691 | 2:377f1822ec9e | 15 | float start = 0.0f; |
stefan1691 | 2:377f1822ec9e | 16 | float value = 0.0f; |
stefan1691 | 2:377f1822ec9e | 17 | |
marcel1691 | 0:e6f25efb6af9 | 18 | while ( 1 ) |
marcel1691 | 0:e6f25efb6af9 | 19 | { |
stefan1691 | 2:377f1822ec9e | 20 | led1 = led2 = 0; |
stefan1691 | 2:377f1822ec9e | 21 | |
marcel1691 | 0:e6f25efb6af9 | 22 | // Servo langsam bewegen (immer in der Mitte Anfangen mit Tests, sonst besteht die Gefahr von Schäden) |
stefan1691 | 2:377f1822ec9e | 23 | for ( float p = 0.0f; p < 1.0f; p += 0.0001f ) |
stefan1691 | 2:377f1822ec9e | 24 | { |
stefan1691 | 2:377f1822ec9e | 25 | servo = p; |
stefan1691 | 2:377f1822ec9e | 26 | value = hallSensor.read(); |
stefan1691 | 2:377f1822ec9e | 27 | // Hall Sensor ausgeloest? |
stefan1691 | 2:377f1822ec9e | 28 | if ( value < 0.4f || value > 0.6f ) |
stefan1691 | 2:377f1822ec9e | 29 | { |
stefan1691 | 2:377f1822ec9e | 30 | p -= 0.01f; |
stefan1691 | 2:377f1822ec9e | 31 | start = p; // aktuelle Position = Startposition |
stefan1691 | 2:377f1822ec9e | 32 | break; |
stefan1691 | 2:377f1822ec9e | 33 | } |
stefan1691 | 2:377f1822ec9e | 34 | wait(0.001); |
stefan1691 | 2:377f1822ec9e | 35 | } |
stefan1691 | 2:377f1822ec9e | 36 | // wenn Hall Sensor ausgeloest dann LED anschalten, ansonsten Position auf Anfang |
stefan1691 | 2:377f1822ec9e | 37 | if ( value < 0.4f ) |
stefan1691 | 2:377f1822ec9e | 38 | led1 = 1; |
stefan1691 | 2:377f1822ec9e | 39 | else if ( value > 0.6f ) |
stefan1691 | 2:377f1822ec9e | 40 | led2 = 1; |
stefan1691 | 2:377f1822ec9e | 41 | else |
stefan1691 | 2:377f1822ec9e | 42 | start = 1.0f; |
stefan1691 | 2:377f1822ec9e | 43 | |
stefan1691 | 2:377f1822ec9e | 44 | wait( 1.0 ); |
stefan1691 | 2:377f1822ec9e | 45 | led1 = led2 = 0; |
stefan1691 | 2:377f1822ec9e | 46 | |
stefan1691 | 2:377f1822ec9e | 47 | // und die andere Seite |
stefan1691 | 2:377f1822ec9e | 48 | for ( float p = start; p >= 0.0f; p -= 0.0001f ) |
marcel1691 | 0:e6f25efb6af9 | 49 | { |
marcel1691 | 0:e6f25efb6af9 | 50 | servo = p; |
marcel1691 | 0:e6f25efb6af9 | 51 | wait(0.001); |
marcel1691 | 0:e6f25efb6af9 | 52 | } |
stefan1691 | 2:377f1822ec9e | 53 | wait( 0.5 ); |
marcel1691 | 0:e6f25efb6af9 | 54 | } |
marcel1691 | 0:e6f25efb6af9 | 55 | } |
marcel1691 | 0:e6f25efb6af9 | 56 |