Skip to content

Instantly share code, notes, and snippets.

@danbee
Created February 26, 2016 12:39
Show Gist options
  • Save danbee/820a17d0aa75f8900250 to your computer and use it in GitHub Desktop.
Save danbee/820a17d0aa75f8900250 to your computer and use it in GitHub Desktop.
// This #include statement was automatically added by the Particle IDE.
#include "HttpClient/HttpClient.h"
int button_blue = D0;
int button_red = D1;
int button_reset = D2;
int led = D7;
bool latch_blue = false;
bool latch_red = false;
bool latch_reset = false;
unsigned long button_time_blue, pressed_time_blue;
unsigned long button_time_red, pressed_time_red;
unsigned long button_time_reset, pressed_time_reset;
HttpClient http;
// Headers currently need to be set at init, useful for API keys etc.
http_header_t headers[] = {
// { "Content-Type", "application/json" },
// { "Accept" , "application/json" },
{ "Accept" , "*/*"},
{ NULL, NULL } // NOTE: Always terminate headers will NULL
};
http_request_t request;
http_response_t response;
void setup() {
pinMode(button_red, INPUT_PULLDOWN);
pinMode(button_blue, INPUT_PULLDOWN);
pinMode(button_reset, INPUT_PULLDOWN);
pinMode(led, OUTPUT);
}
void loop() {
int val_red = digitalRead(button_red);
int val_blue = digitalRead(button_blue);
int val_reset = digitalRead(button_reset);
request.hostname = "appname.herokuapp.com";
request.port = 80;
if (val_blue == HIGH && !latch_blue) {
digitalWrite(led, HIGH);
latch_blue = true;
button_time_blue = millis();
}
else if (val_blue == LOW && latch_blue) {
digitalWrite(led, LOW);
latch_blue = false;
pressed_time_blue = millis() - button_time_blue;
if (pressed_time_blue > 1000) {
// button was pressed for more than a second so we undo
Serial.println("Blue undo");
request.path = "/blue_undo";
http.put(request, response, headers);
}
else {
Serial.println("Blue scores!");
request.path = "/blue_scores";
http.put(request, response, headers);
}
}
if (val_red == HIGH && !latch_red) {
digitalWrite(led, HIGH);
latch_red = true;
button_time_red = millis();
}
else if (val_red == LOW && latch_red) {
digitalWrite(led, LOW);
latch_red = false;
pressed_time_red = millis() - button_time_red;
if (pressed_time_red > 1000) {
// button was pressed for more than a second so we undo
Serial.println("Red undo");
request.path = "/red_undo";
http.put(request, response, headers);
}
else {
Serial.println("Red scores!");
request.path = "/red_scores";
http.put(request, response, headers);
}
}
if (val_reset == HIGH && !latch_reset) {
digitalWrite(led, HIGH);
latch_reset = true;
button_time_reset = millis();
}
else if (val_reset == LOW && latch_reset) {
digitalWrite(led, LOW);
latch_reset = false;
pressed_time_reset = millis() - button_time_reset;
if (pressed_time_reset > 1000) {
// button was pressed for more than a second so we reset
Serial.println("Reset scores");
request.path = "/reset_scores";
http.put(request, response, headers);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment