Skip to content

Instantly share code, notes, and snippets.

@bembu
Last active October 25, 2016 11:24
Show Gist options
  • Save bembu/c49572ddf1da853ad7cb936ab94fbbf0 to your computer and use it in GitHub Desktop.
Save bembu/c49572ddf1da853ad7cb936ab94fbbf0 to your computer and use it in GitHub Desktop.
/*
Yksinkertainen scripti Wemos D1 Minille.
Koodi lähettää napinpainalluksella HTTP-pyynnön
haluttuun osoitteeseen .
Pitkä painallus lähettää pyynnön osoitteeseen
server_ip:port/video
Lyhyt painallus osoitteeseen
server_ip:port/photo
Asenna Arduino core ESP8266-alustalle osoitteesta
https://github.com/esp8266/Arduino
@author Peter Kronström
*/
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Ticker.h>
/* Selfie-kameran asetukset tänne */
#define WIFI_SSID "ssid" // WiFin tunnus
#define WIFI_PASSWORD "pass" // WiFin salasana
#define SERVER_ADDRESS "192.168.1.xxx" // hae 'ifconfig'-komennolla Raspberrystä
#define SERVER_PORT 5000 // server.py:n portti
/* Joitakin staattisia muuttujia */
#define DEVICE_ID "nappi"
#define PAYLOAD "{\"success\":\"True\"}"
/* Pinnimäärittelyt */
#define BUTTONPIN D3
int buttonState = 0;
Ticker debounceTicker;
bool debounce = false;
int sendData(String url, String payload) {
HTTPClient http;
http.begin(SERVER_ADDRESS, SERVER_PORT, url);
http.addHeader("Content-Type", "application/json");
http.POST(payload);
http.end();
}
void doDebounce() {
debounce = false;
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
// Yritä yhdistää wifiin, jos ei onnistu niin yritä uudelleen
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
pinMode(BUILTIN_LED, OUTPUT);
Serial.print("Initialized.");
Serial.print(". IP: ");
Serial.println(WiFi.localIP());
}
void loop() {
buttonState = digitalRead(BUTTONPIN);
if (buttonState == LOW && !debounce) {
int longPressCounter = 0;
digitalWrite(BUILTIN_LED, LOW); // LED on!
while (digitalRead(BUTTONPIN) == LOW) {
// Kasvata laskuria longPressCounter
// kunnes painonappi on vapautettu tai
// painaminen kestää yli 10 * 100 ms = 1 s.
delay(10);
longPressCounter++;
if (longPressCounter >= 100)
break;
}
digitalWrite(BUILTIN_LED, HIGH); // LED off!
if (longPressCounter >= 100) {
// pitkä, yli 1 s painaminen.
sendData("/video", PAYLOAD);
}
else {
// Lyhyt painaminen.
sendData("/photo", PAYLOAD);
}
// Estä ohjelmaa rekisteröimästä epämääräiset
// häiriöt välittömästi painamisen jälkeen
debounce = true;
debounceTicker.attach_ms(500, doDebounce);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment