-
Notifications
You must be signed in to change notification settings - Fork 0
/
workshop.ino
103 lines (84 loc) · 2.19 KB
/
workshop.ino
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
95
96
97
98
99
100
101
102
103
/**
* Losant Particle workshop source code for Photon.
*
* Copyright (c) 2016 Losant IoT. All rights reserved.
* https://www.losant.com
*/
int buttonState = LOW;
int ledState = LOW;
/**
* Reads the value of the photoresistor and
* publishes the value to the particle cloud.
*/
void readPhotoResistor() {
// Read the analog input.
int value = analogRead(A0);
// Publish the value to particle.
Particle.publish("light-level", String(value));
// Right it serial for debugging.
Serial.println(value);
}
Timer timer(5000, readPhotoResistor);
/**
* Sets the state of the LED.
*/
void setLEDState(int state) {
digitalWrite(D0, state);
ledState = state;
}
/**
* Handles an event from particle cloud.
*/
void handleEvent(const char *event, const char *data) {
String command = String(event);
if(command.compareTo(String("led-on")) == 0) {
setLEDState(HIGH);
}
else if(command.compareTo(String("led-off")) == 0) {
setLEDState(LOW);
}
else if(command.compareTo(String("led-toggle")) == 0) {
setLEDState(ledState == HIGH ? LOW : HIGH);
}
}
/**
* Called automatically by Photon once when the device
* is powered on.
*/
void setup() {
Serial.begin(9600);
timer.start();
// Button input.
pinMode(D1, INPUT_PULLDOWN);
// Power to photoresistor.
pinMode(A4, OUTPUT);
// Power to LED.
pinMode(D0, OUTPUT);
// Send power to the photoresistor.
digitalWrite(A4, HIGH);
// Subscribe to events that control the LED.
Particle.subscribe("led-on", handleEvent);
Particle.subscribe("led-off", handleEvent);
Particle.subscribe("led-toggle", handleEvent);
}
/**
* Checks for whether or not the button was pressed
* and publishes button-pressed event to particle cloud.
*/
void checkButton() {
int currentRead = digitalRead(D1);
if(currentRead != buttonState) {
buttonState = currentRead;
if(buttonState) {
Serial.println("Button Pressed!");
Particle.publish("button-pressed");
}
}
}
/**
* Automatically called over and over again by the Photon.
*/
void loop() {
checkButton();
delay(100);
}