Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
File dataFile; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //10.71.148.177 home IPAddress ip(10, 71, 148, 177); //IPAddress ip(10, 1, 0, 177); EthernetServer server(80); //Function defs void rotorSense(EthernetClient client); void rotorA(EthernetClient client); void rotorB(EthernetClient client); void startPage(EthernetClient client); void endPage(EthernetClient client); void svgHeader(EthernetClient client); void svgFooter(EthernetClient client); void polyLineBegin(EthernetClient client); void polyLineEnd(EthernetClient client); void pageWrite(EthernetClient client); void listenClient(EthernetClient client); void background(EthernetClient client); //only want to do this one once, maybe I can run an Iframe or something void sensors();//pots /**Pot Vars**/ int potX = A0; int potY = A1; int sensorValX = 0; int sensorValY = 0; int oldX = 0; int oldY = 0; /**Rotor Vars**/ // Rotary Encoder Input efintions #define CLKA 2 #define DTA 3 #define SWA 4 #define CLKB 5 #define DTB 6 #define SWB 7 int Acounter = 0; int Bcounter = 0; int AcurrentStateCLK; int BcurrentStateCLK; int AlastStateCLK; int BlastStateCLK; String AcurrentDir =""; //just easier than cleverly combining this string for seprate IO String BcurrentDir =""; unsigned long AlastButtonPress = 0; unsigned long BlastButtonPress = 0; // void setup() { delay(5000); //you want this delay. reason: tl;dr /** Set encoder pins as inputs **/ pinMode(CLKA,INPUT); pinMode(DTA,INPUT); pinMode(SWA, INPUT_PULLUP); pinMode(CLKB,INPUT); pinMode(DTB,INPUT); pinMode(SWB, INPUT_PULLUP); // Read the initial state of CLK AlastStateCLK = digitalRead(CLKA); BlastStateCLK = digitalRead(CLKB); /***End Rotary Encoder vars****/ Serial.begin(9600); Ethernet.begin(mac, ip); if (Ethernet.linkStatus() == LinkOFF) { Serial.println("Ethernet cable is not connected."); } // start the server server.begin(); delay(100); Serial.print("server is at "); Serial.println(Ethernet.localIP()); Serial.print("Initializing SD card..."); if (!SD.begin(BUILTIN_SDCARD)) { Serial.println("SD Card init failed!"); while (1); } /****SD CARD and Ethernet intialized*****/ //if data file (on SD Card) Doesn't exist, create it. //if data file (on SD Card) does exist errase it and create a new one if (SD.exists("datalog.txt")) { Serial.println("datalog.txt exists: \n Removing it."); SD.remove("datalog.txt"); } else { Serial.println("datalog.txt doesn't exist."); } // open a new file and immediately close it: Serial.println("Creating datalog.txt..."); dataFile = SD.open("datalog.txt", FILE_WRITE); dataFile.close(); // Check to see if the file exists: if (SD.exists("datalog.txt")) { Serial.println("datalog.txt exists."); } else { Serial.println("datalog.txt wasn't created."); } } //end setup void loop() { sensors(); // listen for incoming clients EthernetClient client = server.available(); listenClient(client); } //end loop void listenClient(EthernetClient client){ if (client) { boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // Serial.write(c); //tells about the client connection if (c == '\n' && currentLineIsBlank) { pageWrite(client); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } }//end avail } //end conect // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } //end client } void sensors(){ int sensorValX = analogRead(8); int sensorValY = analogRead(9); String dataString = ""; int threshhold =3; int xVariance = abs(sensorValX-oldX); int yVariance = abs(sensorValY-oldY); if (xVariance >=threshhold && yVariance >= threshhold ||xVariance >=threshhold || yVariance >=threshhold){ //if sensor data is greater than threshold, write data to the sd card, then close the file dataString += String(sensorValX); dataString += ","; dataString += String(sensorValY); dataFile = SD.open("datalog.txt", FILE_WRITE); // if the file is available, write to it: if (dataFile) { dataFile.println(dataString); dataFile.close(); //clear dataString dataString=""; } else { // if the file isn't open, pop up an error: Serial.println("error opening datalog.txt"); } dataFile.close(); }else{ ; } } void pageWrite(EthernetClient client){ startPage(client); svgHeader(client); polyLineBegin(client); polyLineEnd(client); svgFooter(client); endPage(client); } void startPage(EthernetClient client){ // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println(""); client.println(""); } void endPage(EthernetClient client){ client.println(""); client.println("