Skip to content

Commit e5572a2

Browse files
committed
Refactor examples
1 parent ba2fb14 commit e5572a2

File tree

15 files changed

+563
-106
lines changed

15 files changed

+563
-106
lines changed

examples/ATtiny/Alarm/Alarm.ino

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#include "GPIO.h"
2+
#include "OWI.h"
3+
#include "Software/OWI.h"
4+
#include "Driver/DS18B20.h"
5+
#include "Software/Serial.h"
6+
#include "assert.h"
7+
8+
Software::Serial<BOARD::D0> Serial;
9+
Software::OWI<BOARD::D1> owi;
10+
DS18B20 sensor(owi);
11+
12+
void setup()
13+
{
14+
Serial.begin(57600);
15+
while (!Serial);
16+
17+
// Set sensor alarm triggers (20..25 C) and resolution (10 bits)
18+
// Iterate though all thermometers and configure.
19+
uint8_t* rom = sensor.rom();
20+
int8_t last = owi.FIRST;
21+
do {
22+
last = owi.search_rom(sensor.FAMILY_CODE, rom, last);
23+
if (last == owi.ERROR) break;
24+
sensor.resolution(10);
25+
sensor.set_trigger(20, 25);
26+
ASSERT(sensor.write_scratchpad());
27+
} while (last != owi.LAST);
28+
}
29+
30+
void loop()
31+
{
32+
// Check if any thermometer sersors have exceeded thresholds.
33+
// Broadcast a convert request to all thermometer sensors.
34+
// Print timestamp and sensor identity and temperature.
35+
36+
int8_t last = owi.FIRST;
37+
uint8_t* rom = sensor.rom();
38+
static uint16_t timestamp = 0;
39+
uint8_t id = 0;
40+
if (!sensor.convert_request(true)) return;
41+
delay(sensor.conversion_time());
42+
do {
43+
last = owi.alarm_search(rom, last);
44+
if (last == owi.ERROR) break;
45+
ASSERT(sensor.read_scratchpad(false));
46+
Serial.print(timestamp);
47+
Serial.print('.');
48+
Serial.print(id++);
49+
Serial.print(F(":rom="));
50+
for (size_t i = 1; i < owi.ROM_MAX; i++) {
51+
if (rom[i] < 0x10) Serial.print(0);
52+
Serial.print(rom[i], HEX);
53+
}
54+
Serial.print(F(",temperature="));
55+
Serial.println(sensor.temperature());
56+
} while (last != owi.LAST);
57+
timestamp += 1;
58+
delay(1000);
59+
}

examples/ATtiny/DS18B20/DS18B20.ino

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#include "GPIO.h"
2+
#include "OWI.h"
3+
#include "Software/OWI.h"
4+
#include "Driver/DS18B20.h"
5+
#include "Software/Serial.h"
6+
#include "assert.h"
7+
8+
Software::Serial<BOARD::D0> Serial;
9+
Software::OWI<BOARD::D1> owi;
10+
DS18B20 sensor(owi);
11+
12+
void setup()
13+
{
14+
Serial.begin(57600);
15+
while (!Serial);
16+
}
17+
18+
void loop()
19+
{
20+
// Broadcast a convert request to all thermometer sensors
21+
// Print list of sensors, rom code, and temperature
22+
23+
if (!sensor.convert_request(true)) return;
24+
delay(sensor.conversion_time());
25+
26+
int8_t last = owi.FIRST;
27+
uint8_t* rom = sensor.rom();
28+
int id = 0;
29+
do {
30+
// Search for the next digital thermometer
31+
last = owi.search_rom(sensor.FAMILY_CODE, rom, last);
32+
if (last == owi.ERROR) break;
33+
34+
// Read the scratchpad with current temperature, tiggers, etc
35+
ASSERT(sensor.read_scratchpad(false));
36+
int8_t low, high;
37+
sensor.get_trigger(low, high);
38+
39+
// Print sequence number
40+
Serial.print(id++);
41+
42+
// Print family code
43+
Serial.print(F(":family="));
44+
Serial.print(rom[0], HEX);
45+
46+
// Print serial number
47+
Serial.print(F(",sn="));
48+
size_t i = 1;
49+
do {
50+
if (rom[i] < 0x10) Serial.print(0);
51+
Serial.print(rom[i], HEX);
52+
i += 1;
53+
} while (i < owi.ROM_MAX - 1);
54+
55+
// Print cyclic redundancy check sum
56+
Serial.print(F(",crc="));
57+
if (rom[i] < 0x10) Serial.print(0);
58+
Serial.print(rom[i], HEX);
59+
60+
// Print conversion resolution
61+
Serial.print(F(",resolution="));
62+
Serial.print(sensor.resolution());
63+
64+
// Print alarm trigger threshols
65+
Serial.print(F(",trigger=["));
66+
Serial.print(low);
67+
Serial.print(F(".."));
68+
Serial.print(high);
69+
70+
// And temperature
71+
Serial.print(F("],temperature="));
72+
Serial.println(sensor.temperature());
73+
} while (last != owi.LAST);
74+
75+
Serial.println();
76+
delay(4000);
77+
}

examples/ATtiny/DS1990A/DS1990A.ino

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include "GPIO.h"
2+
#include "OWI.h"
3+
#include "Software/OWI.h"
4+
5+
GPIO<BOARD::D0> led;
6+
Software::OWI<BOARD::D1> owi;
7+
8+
// Table with valid keys (64 bit 1-Wire rom code, 8 bytes per entry)
9+
const uint8_t KEY[] PROGMEM = {
10+
0x01, 0x23, 0x81, 0xa3, 0x09, 0x00, 0x00, 0x7b,
11+
0x01, 0x29, 0x01, 0x27, 0x09, 0x00, 0x00, 0xa8,
12+
0x01, 0x26, 0xd9, 0x3e, 0x09, 0x00, 0x00, 0x47
13+
};
14+
15+
void setup()
16+
{
17+
led.output();
18+
led = LOW;
19+
}
20+
21+
void loop()
22+
{
23+
// Attempt to read key every seconds
24+
uint8_t rom[owi.ROM_MAX] = { 0 };
25+
delay(1000);
26+
if (!owi.read_rom(rom)) return;
27+
28+
// Check if it is an authorized key. One long blink if found
29+
for (uint8_t i = 0; i < sizeof(KEY); i += OWI::ROM_MAX) {
30+
if (!memcmp_P(rom, &KEY[i], owi.ROM_MAX)) {
31+
led = HIGH;
32+
delay(1000);
33+
led = LOW;
34+
return;
35+
}
36+
}
37+
38+
// Three short blinks if not found
39+
for (uint8_t i = 0; i < 3; i++) {
40+
delay(250);
41+
led = HIGH;
42+
delay(250);
43+
led = LOW;
44+
}
45+
}

examples/ATtiny/Scanner/Scanner.ino

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include "GPIO.h"
2+
#include "OWI.h"
3+
#include "Software/OWI.h"
4+
#include "Software/Serial.h"
5+
#include "assert.h"
6+
7+
Software::Serial<BOARD::D0> Serial;
8+
Software::OWI<BOARD::D1> owi;
9+
10+
void setup()
11+
{
12+
Serial.begin(57600);
13+
while (!Serial);
14+
}
15+
16+
void loop()
17+
{
18+
// Scan one-wire bus and print rom code for all detected devices
19+
// Print family, serial number and cyclic redundancy check sum
20+
uint8_t rom[owi.ROM_MAX] = { 0 };
21+
int8_t last = owi.FIRST;
22+
int id = 0;
23+
24+
do {
25+
last = owi.search_rom(0, rom, last);
26+
if (last == owi.ERROR) break;
27+
28+
// Print sequence number
29+
Serial.print(id++);
30+
31+
// Print family code
32+
Serial.print(F(":family="));
33+
Serial.print(rom[0], HEX);
34+
35+
// Print serial number
36+
Serial.print(F(",sn="));
37+
size_t i = 1;
38+
do {
39+
if (rom[i] < 0x10) Serial.print(0);
40+
Serial.print(rom[i], HEX);
41+
i += 1;
42+
} while (i < owi.ROM_MAX - 1);
43+
44+
// Print cyclic redundancy check sum
45+
Serial.print(F(",crc="));
46+
if (rom[i] < 0x10) Serial.print(0);
47+
Serial.println(rom[i], HEX);
48+
} while (last != owi.LAST);
49+
50+
Serial.println();
51+
delay(5000);
52+
}

examples/ATtiny/Search/Search.ino

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include "GPIO.h"
2+
#include "OWI.h"
3+
#include "Software/OWI.h"
4+
#include "Software/Serial.h"
5+
#include "assert.h"
6+
7+
Software::Serial<BOARD::D0> Serial;
8+
Software::OWI<BOARD::D1> owi;
9+
10+
void setup()
11+
{
12+
Serial.begin(57600);
13+
while (!Serial);
14+
}
15+
16+
void loop()
17+
{
18+
// Scan one-wire bus and print rom code for all detected devices
19+
// on binary format and indicate discrepancy position.
20+
uint8_t rom[owi.ROM_MAX] = { 0 };
21+
int8_t last = owi.FIRST;
22+
int i = 0;
23+
do {
24+
last = owi.search_rom(0, rom, last);
25+
if (last == owi.ERROR) break;
26+
Serial.print(i++);
27+
Serial.print(':');
28+
int8_t pos = 0;
29+
for (size_t i = 0; i < sizeof(rom); i++)
30+
for (uint8_t mask = 0x80; mask != 0; mask >>= 1, pos++) {
31+
Serial.print((rom[i] & mask) != 0);
32+
if (pos == last) Serial.print('*');
33+
}
34+
if (pos == last) Serial.print('*');
35+
Serial.println();
36+
} while (last != owi.LAST);
37+
Serial.println();
38+
39+
delay(5000);
40+
}

examples/Alarm/Alarm.ino

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,10 @@
11
#include "GPIO.h"
22
#include "OWI.h"
3+
#include "Software/OWI.h"
34
#include "Driver/DS18B20.h"
45
#include "assert.h"
56

6-
// Configure: Software/Hardware OWI Bus Manager
7-
#define USE_SOFTWARE_OWI
8-
#if defined(USE_SOFTWARE_OWI)
9-
#include "Software/OWI.h"
107
Software::OWI<BOARD::D7> owi;
11-
12-
#else
13-
#include "TWI.h"
14-
#include "Hardware/OWI.h"
15-
// Configure: Software/Hardware TWI Bus Manager
16-
// #define USE_SOFTWARE_TWI
17-
#if defined(USE_SOFTWARE_TWI)
18-
#include "Software/TWI.h"
19-
#if defined(SAM)
20-
Software::TWI<BOARD::D8,BOARD::D9> twi;
21-
#else
22-
Software::TWI<BOARD::D18,BOARD::D19> twi;
23-
#endif
24-
#else
25-
#include "Hardware/TWI.h"
26-
Hardware::TWI twi;
27-
#endif
28-
Hardware::OWI owi(twi);
29-
#endif
30-
318
DS18B20 sensor(owi);
329

3310
void setup()

examples/Benchmark/Benchmark.ino

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,10 @@
11
#include "GPIO.h"
22
#include "OWI.h"
3+
#include "Software/OWI.h"
34
#include "benchmark.h"
45

5-
// Configure: Software/Hardware OWI Bus Manager
6-
#define USE_SOFTWARE_OWI
7-
#if defined(USE_SOFTWARE_OWI)
8-
#include "Software/OWI.h"
96
Software::OWI<BOARD::D7> owi;
107

11-
#else
12-
#include "TWI.h"
13-
#include "Hardware/OWI.h"
14-
// Configure: Software/Hardware TWI Bus Manager
15-
// #define USE_SOFTWARE_TWI
16-
#if defined(USE_SOFTWARE_TWI)
17-
#include "Software/TWI.h"
18-
#if defined(SAM)
19-
Software::TWI<BOARD::D8,BOARD::D9> twi;
20-
#else
21-
Software::TWI<BOARD::D18,BOARD::D19> twi;
22-
#endif
23-
#else
24-
#include "Hardware/TWI.h"
25-
Hardware::TWI twi;
26-
#endif
27-
Hardware::OWI owi(twi);
28-
#endif
29-
308
void setup()
319
{
3210
Serial.begin(57600);

examples/DS18B20/DS18B20.ino

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,10 @@
11
#include "GPIO.h"
22
#include "OWI.h"
3+
#include "Software/OWI.h"
34
#include "Driver/DS18B20.h"
45
#include "assert.h"
56

6-
// Configure: Software/Hardware OWI Bus Manager
7-
#define USE_SOFTWARE_OWI
8-
#if defined(USE_SOFTWARE_OWI)
9-
#include "Software/OWI.h"
10-
11-
#if defined(ARDUINO_attiny)
12-
#include "Software/Serial.h"
13-
Software::Serial<BOARD::D0> Serial;
14-
Software::OWI<BOARD::D1> owi;
15-
#else
167
Software::OWI<BOARD::D7> owi;
17-
#endif
18-
19-
#else
20-
// Configure: Software/Hardware TWI Bus Manager
21-
// #define USE_SOFTWARE_TWI
22-
#include "TWI.h"
23-
#include "Hardware/OWI.h"
24-
#if defined(USE_SOFTWARE_TWI)
25-
#include "Software/TWI.h"
26-
#if defined(SAM)
27-
Software::TWI<BOARD::D8,BOARD::D9> twi;
28-
#else
29-
Software::TWI<BOARD::D18,BOARD::D19> twi;
30-
#endif
31-
#else
32-
#include "Hardware/TWI.h"
33-
Hardware::TWI twi;
34-
#endif
35-
Hardware::OWI owi(twi);
36-
#endif
37-
388
DS18B20 sensor(owi);
399

4010
void setup()

0 commit comments

Comments
 (0)