|
|
|
#include "Arduino.h"
|
|
|
|
#include "LowLevel.h"
|
|
|
|
#include "SerialChannel.h"
|
|
|
|
#include "OneWireSlave.h"
|
|
|
|
|
|
|
|
#define LEDPin 13
|
|
|
|
#define OWPin 2
|
|
|
|
|
|
|
|
#ifdef ENABLE_SERIAL_CHANNEL
|
|
|
|
SerialChannel debug("debug");
|
|
|
|
#endif
|
|
|
|
|
|
|
|
Pin led(LEDPin);
|
|
|
|
|
|
|
|
byte owROM[7] = { 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 };
|
|
|
|
|
|
|
|
byte acknowledge = 0x42;
|
|
|
|
|
|
|
|
void owReceive(OneWireSlave::ReceiveEvent evt, byte data);
|
|
|
|
|
|
|
|
void setup()
|
|
|
|
{
|
|
|
|
led.outputMode();
|
|
|
|
led.writeLow();
|
|
|
|
|
|
|
|
OneWire.setReceiveCallback(&owReceive);
|
|
|
|
OneWire.begin(owROM, OWPin);
|
|
|
|
|
|
|
|
Serial.begin(9600);
|
|
|
|
}
|
|
|
|
|
|
|
|
void loop()
|
|
|
|
{
|
|
|
|
delay(1);
|
|
|
|
|
|
|
|
cli();//disable interrupts
|
|
|
|
#ifdef ENABLE_SERIAL_CHANNEL
|
|
|
|
SerialChannel::swap();
|
|
|
|
#endif
|
|
|
|
sei();//enable interrupts
|
|
|
|
|
|
|
|
#ifdef ENABLE_SERIAL_CHANNEL
|
|
|
|
SerialChannel::flush();
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void owReceive(OneWireSlave::ReceiveEvent evt, byte data)
|
|
|
|
{
|
|
|
|
switch (evt)
|
|
|
|
{
|
|
|
|
case OneWireSlave::RE_Byte:
|
|
|
|
if (data == 0x01)
|
|
|
|
led.writeHigh();
|
|
|
|
else if (data == 0x02)
|
|
|
|
led.writeLow();
|
|
|
|
OneWire.write(&acknowledge, 1, 0);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
;
|
|
|
|
}
|
|
|
|
}
|