summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/busp/busp_servo.cc
blob: 1cef0c4e3e5c4d64e1371a967d37d5ecef207a6e (plain)
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
// busp_servo.cc
// buzz - Programme du robot Efrei Robotique I1-I2 2003
// Copyright (C) 2003 Nicolas Schodet
//
#include "busp_servo.h"
#include "busp.h"

// Constructeur.
BuspServo::BuspServo ()
{
    for (int i = 0; i < 8; ++i)
	m_pos[i] = 127;
}

// Bouge le servo N en POS.
void
BuspServo::moveTo (int n, int pos)
{
    set (n, pos);
}

// Bouge le servo N de DIFF.
void
BuspServo::move (int n, int diff)
{
    set (n, m_pos[n & 0x07] + diff);
}

// Fait le d�placement effectif.
void
BuspServo::set (int n, int pos)
{
    if (pos > 255) pos = 255;
    else if (pos < 0) pos = 0;
    n &= 0x07;
    m_pos[n] = pos;
    Busp::getInstance ().write (m_address, n);
    Busp::getInstance ().write (m_address, pos);
}