working with delta only
This commit is contained in:
36
train.cpp
36
train.cpp
@ -8,8 +8,6 @@ Train::Train(const uint8_t address): _address(address)
|
||||
|
||||
Train::Train()
|
||||
{
|
||||
writePin(_port, _pinHigh, false);
|
||||
writePin(_port, _pinLow, true);
|
||||
_address = 0;
|
||||
}
|
||||
|
||||
@ -23,24 +21,33 @@ uint8_t Train::getAddress()
|
||||
return _address;
|
||||
}
|
||||
|
||||
void Train::off()
|
||||
{
|
||||
writePin(_port, _pinHighA, false);
|
||||
writePin(_port, _pinHighB, false);
|
||||
writePin(_port, _pinLowA, true);
|
||||
writePin(_port, _pinLowB, true);
|
||||
}
|
||||
|
||||
void Train::setOutput(const uint8_t state)
|
||||
{
|
||||
if(state == HIGH)
|
||||
{
|
||||
writePin(_port, _pinLow, true);
|
||||
off();
|
||||
_delay_us(5);
|
||||
writePin(_port, _pinHigh, true);
|
||||
writePin(_port, _pinHighA, true);
|
||||
writePin(_port, _pinLowB, false);
|
||||
}
|
||||
else if (state == LOW)
|
||||
{
|
||||
writePin(_port, _pinHigh, false);
|
||||
off();
|
||||
_delay_us(5);
|
||||
writePin(_port, _pinLow, false);
|
||||
writePin(_port, _pinHighB, true);
|
||||
writePin(_port, _pinLowA, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
writePin(_port, _pinHigh, false);
|
||||
writePin(_port, _pinLow, true);
|
||||
off();
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,7 +77,7 @@ void Train::sendAddress()
|
||||
}
|
||||
}
|
||||
|
||||
void Train::sendData(const uint8_t data)
|
||||
void Train::sendRaw(const uint8_t data)
|
||||
{
|
||||
for(uint8_t j = 0; j < SEND_COUNT; j++)
|
||||
{
|
||||
@ -78,7 +85,6 @@ void Train::sendData(const uint8_t data)
|
||||
for(uint8_t i = 0; i < 5; i++)
|
||||
{
|
||||
sendBit(data & (1 << i));
|
||||
sendBit(data & (1 << i));
|
||||
}
|
||||
_delay_ms(2);
|
||||
}
|
||||
@ -90,14 +96,14 @@ void Train::setSpeed(uint8_t speed)
|
||||
if(speed <= 15)
|
||||
{
|
||||
lastSpeed = speed;
|
||||
sendData(speed << 1);
|
||||
sendData((speed << 1));
|
||||
}
|
||||
}
|
||||
|
||||
void Train::resendSpeed()
|
||||
{
|
||||
uint8_t data = lastSpeed;
|
||||
sendData(data << 1);
|
||||
sendData((data << 1));
|
||||
}
|
||||
|
||||
uint8_t Train::getSpeed()
|
||||
@ -107,10 +113,10 @@ uint8_t Train::getSpeed()
|
||||
|
||||
void Train::reverse()
|
||||
{
|
||||
sendData(1 << 1);
|
||||
sendData((1 << 1));
|
||||
}
|
||||
|
||||
void Train::sendFunction(const uint8_t function)
|
||||
void Train::sendFunction(const uint16_t function)
|
||||
{
|
||||
sendData((function << 1) | 1);
|
||||
sendDataUndoubled(function);
|
||||
}
|
||||
|
Reference in New Issue
Block a user