/*----------------------------------------------------------------------------- * Author: Nelso G. Jost (nelsojost@gmail.com) * License: GPLv2 * Purpose: Entry point for the Arduino Toolchain. *---------------------------------------------------------------------------*/ #include #include "repl.h" #include "wifi.h" #include "blinker.h" #define BUILTIN_LED 2 Blinker blinker(BUILTIN_LED); Ticker alog_ticker; bool LOGGING=true; void REPL_WIFISCAN(String command); void REPL_BLINK(String command); void REPL_DWRITE(String command); void REPL_AREAD(String command); void REPL_ALOG(String command); REPL_COMMAND commands[] =\ { {"wifiscan", REPL_WIFISCAN, "wifiscan", "List all availables SSID in range for connection."}, {"blink", REPL_BLINK, "blink ", "Blink builtin led (pin 2) with given in seconds (int|float). " "Use \"blink 0\" to stop it."}, {"dwrite", REPL_DWRITE, "dwrite ", "Digital write (number|high|low) on . "}, {"aread", REPL_AREAD, "aread ", "Read analogic pin and print out the value."}, {"alog", REPL_ALOG, "alog ", "Start datalog on analogic pin with given interval."}, {NULL, NULL} }; REPL repl(commands); void setup() { Serial.begin(9600); repl.run(); } void loop() { } void REPL_WIFISCAN(String command) { wifiscan(); } void REPL_BLINK(String command) { float interval = get_arg(command, 1).toFloat(); if (interval == 0) { blinker.deactivate(); if (LOGGING) { Serial.print("\n[INFO] Deactivated blink builtin led (pin 2)."); } } else { blinker.activate(interval); if (LOGGING) { Serial.print("\n[INFO] Activated blink builtin led (pin 2) with "); Serial.print(interval); Serial.print(" s interval."); } } } void REPL_DWRITE(String command) { String arg_pin = get_arg(command, 1); String arg_value = get_arg(command, 2); int pin = arg_pin.toInt(); int value = !arg_value.toInt(); if (arg_pin == "led") pin = BUILTIN_LED; if (arg_value == "high") value = 0; if (arg_value == "low") value = 1; pinMode(pin, OUTPUT); digitalWrite(pin, value); if (LOGGING) { Serial.print("\n[INFO] Pin "); Serial.print(pin); Serial.print(" was set to "); Serial.print(value? "HIGH":"LOW"); } } void REPL_AREAD(String command) { int pin = get_arg(command, 1).toInt(); if (LOGGING) { Serial.print("\n[INFO] Reading analog pin "); Serial.print(pin); Serial.println(":"); } Serial.print(analogRead(pin)); } void alog_update(int pin) { repl.log("a" + String(pin) + ":" + String(analogRead(pin))); } void REPL_ALOG(String command) { int pin = get_arg(command, 1).toInt(); int interval = get_arg(command, 2).toInt(); if (interval == 0) { alog_ticker.detach(); if (LOGGING) { Serial.print("\n[INFO] Deactivated datalog on analog pin "); Serial.print(pin); Serial.print("."); } } else { alog_ticker.attach(interval, alog_update, pin); if (LOGGING) { Serial.print("\n[INFO] Activated datalog on analog pin "); Serial.print(pin); Serial.print(" with "); Serial.print(interval); Serial.print(" s interval."); } } }