Newer
Older
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "NameDictionary.h"
#include <Servo.h>
#include <WallVis.h>
//Get device name
const String device_id = String(ESP.getChipId(), HEX);
NameDictionary d;
const String name = d.get(device_id);
char _name[10];
// Set up the servo we will use
Servo s1 = Servo();
// Set up LEDs as well
#define LED_COUNT 12
#define LED_PIN D2
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
WallVis node(
"null", // Our ID
"NodeRedServer", //Wifi Access Point
"NodeR3dAP", //WiFi Password
"192.168.4.1",//IP address of Node RED server
1883 //Port for Node RED server
);
void setup()
{
// Attach the servo to the right pin on the board
s1.attach(D3);
// Start the LED library
strip.begin();
strip.fill(strip.Color(30,255,80));
strip.show();
delay(100);
strip.fill(0);
strip.show();
//Get the serial port ready
Serial.begin(115200);
Serial.println("Serial started!");
delay(500);
//Print device name
if (name == device_id) {
Serial.println("!!! This device doesn't have a name yet. Let's call it: " + name);
} else {
Serial.println("Device name: " + name);
}
name.toCharArray(_name, 10);
node.setID(_name);
//Add in a test behaviour that responds to the command 'hello'
node.add(new TestBehaviour("hello") );
//Add in three different versions of the servo wiggling, with different speed parameters
node.add(new ServoWiggle(s1, "wiggle") );
node.add(new ServoWiggle(s1, "slow_wiggle", 10) );
node.add(new ServoWiggle(s1, "fast_wiggle", 1) );
//Add in a behaviour that just goes to a certain angle, with the default name 'goto'
node.add(new ServoGoto(s1) );
//Add in a behaviour that rotates from 0 to 180 and back again (e.g. dropping a ball trustball style)
node.add(new RotateReturn(s1,"drop",1,500, 3, 175) );
//A few useful LED behaviours
node.add(new NumLEDs(&strip, "green_leds", strip.Color(10, 255, 15) ) );
node.add(new NumLEDs(&strip, "red_leds", strip.Color(255, 30, 40) ));
node.add(new NumLEDs(&strip, "leds"));
node.add(new BrightnessLEDs(&strip, "red", 0, 255 ));
node.add(new BrightnessLEDs(&strip, "green", 120, 255 ));
node.add(new BreathingLEDs(&strip, "breathe", 120, 0 ));
node.add(new BreathingLEDs(&strip, "breathe_blue", 170, 255 ));
//Initialise the whole infrastructure
node.set_wifi(true);
node.init();
delay(500);
Serial.println("PactVis Outputs Test:");
}
void loop()
{
//Should be all we have to do
node.vis_loop();
}