mirror of
https://github.com/digistump/DigistumpArduino.git
synced 2025-09-17 17:32:25 -07:00
switch to setup for Arduino Boards Manager
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
Chat Server
|
||||
|
||||
A simple server that distributes any incoming messages to all
|
||||
connected clients. To use telnet to your device's IP address and type.
|
||||
You can see the client's input in the serial monitor as well.
|
||||
Using a DigiX.
|
||||
|
||||
Circuit:
|
||||
|
||||
* Analog inputs attached to pins A0 through A5 (optional)
|
||||
|
||||
created 18 Dec 2009
|
||||
by David A. Mellis
|
||||
modified 9 Apr 2012
|
||||
by Tom Igoe
|
||||
modified Dec 22, 2013 for use with DigiX by Erik Kettenburg
|
||||
|
||||
*/
|
||||
|
||||
#include <DigiFi.h>
|
||||
|
||||
|
||||
DigiFi server;
|
||||
boolean alreadyConnected = false; // whether or not the client was connected previously
|
||||
|
||||
void setup() {
|
||||
|
||||
|
||||
// Open serial communications and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
|
||||
while(!Serial.available()){
|
||||
Serial.println("Enter any key to begin");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
// start listening for clients
|
||||
server.begin();
|
||||
server.server(8080); //connect to it on port 8080
|
||||
|
||||
while (server.ready() != 1)
|
||||
{
|
||||
Serial.println("Connecting to network...");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
Serial.print("Chat server address:");
|
||||
Serial.println(server.localIP());
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// wait for a new client:
|
||||
|
||||
// when the client sends the first byte, say hello:
|
||||
if (server.available() > 0) {
|
||||
if (!alreadyConnected) {
|
||||
// clead out the input buffer:
|
||||
server.flush();
|
||||
Serial.println("We have a new client");
|
||||
server.println("Hello, client!");
|
||||
alreadyConnected = true;
|
||||
}
|
||||
|
||||
|
||||
// read the bytes incoming from the client:
|
||||
char thisChar = server.read();
|
||||
// echo the bytes back to the client:
|
||||
server.write(thisChar);
|
||||
// echo the bytes to the server as well:
|
||||
Serial.write(thisChar);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
Telnet client
|
||||
|
||||
This sketch connects to a a telnet server (http://www.google.com)
|
||||
using a DigiX. You'll need a telnet server
|
||||
to test this with.
|
||||
Processing's ChatServer example (part of the network library) works well,
|
||||
running on port 10002. It can be found as part of the examples
|
||||
in the Processing application, available at
|
||||
http://processing.org/
|
||||
|
||||
|
||||
created 14 Sep 2010
|
||||
modified 9 Apr 2012
|
||||
by Tom Igoe
|
||||
modified Dec 22, 2013 for use with DigiX by Erik Kettenburg
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <DigiFi.h>
|
||||
|
||||
|
||||
// Enter the IP address of the server you're connecting to:
|
||||
IPAddress server(1, 1, 1, 1);
|
||||
|
||||
// Initialize the Ethernet client library
|
||||
// with the IP address and port of the server
|
||||
// that you want to connect to (port 23 is default for telnet;
|
||||
// if you're using Processing's ChatServer, use port 10002):
|
||||
DigiFi client;
|
||||
|
||||
void setup() {
|
||||
// Open serial communications and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
|
||||
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
|
||||
while(!Serial.available()){
|
||||
Serial.println("Enter any key to begin");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Serial.println("Connecting...");
|
||||
// start the connection:
|
||||
client.begin(9600);
|
||||
client.connect(server,23);
|
||||
Serial.println("Connected.");
|
||||
//client.setDebug(true);
|
||||
//wait for module to be ready
|
||||
while (client.ready() != 1)
|
||||
{
|
||||
Serial.println("Connecting to network...");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// if there are incoming bytes available
|
||||
// from the server, read them and print them:
|
||||
if (client.available()) {
|
||||
char c = client.read();
|
||||
Serial.print(c);
|
||||
}
|
||||
|
||||
// as long as there are bytes in the serial queue,
|
||||
// read them and send them out the socket if it's open:
|
||||
while (Serial.available() > 0) {
|
||||
char inChar = Serial.read();
|
||||
if (client.connected()) {
|
||||
client.print(inChar);
|
||||
}
|
||||
}
|
||||
|
||||
// if the server's disconnected, stop the client:
|
||||
if (!client.connected()) {
|
||||
Serial.println();
|
||||
Serial.println("disconnecting.");
|
||||
client.stop();
|
||||
// do nothing:
|
||||
while (true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
|
||||
Udp NTP Client
|
||||
|
||||
Get the time from a Network Time Protocol (NTP) time server
|
||||
Demonstrates use of UDP sendPacket and ReceivePacket
|
||||
For more on NTP time servers and the messages needed to communicate with them,
|
||||
see http://en.wikipedia.org/wiki/Network_Time_Protocol
|
||||
|
||||
created 4 Sep 2010
|
||||
by Michael Margolis
|
||||
modified 9 Apr 2012
|
||||
by Tom Igoe
|
||||
modified Dec 22, 2013 for use with DigiX by Erik Kettenburg
|
||||
|
||||
This code is in the public domain.
|
||||
|
||||
*/
|
||||
|
||||
#include <DigiFi.h>
|
||||
|
||||
char timeServer[] = "time.nist.gov"; // time.nist.gov NTP server
|
||||
|
||||
const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message
|
||||
|
||||
uint8_t packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets
|
||||
|
||||
DigiFi client;
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Open serial communications and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
|
||||
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
|
||||
while(!Serial.available()){
|
||||
Serial.println("Enter any key to begin");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
// start the connection:
|
||||
client.begin(9600);
|
||||
//client.setDebug(true);
|
||||
//wait for module to be ready
|
||||
while (client.ready() != 1)
|
||||
{
|
||||
Serial.println("Connecting to network...");
|
||||
delay(1000);
|
||||
}
|
||||
client.setMode(UDP); //must come before connect
|
||||
Serial.println("Setting up UDP connection");
|
||||
client.connect(timeServer,123);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
sendNTPpacket(); // send an NTP packet to a time server
|
||||
|
||||
// wait to see if a reply is available
|
||||
delay(1000);
|
||||
if ( client.available() ) {
|
||||
// We've received a packet, read the data from it
|
||||
client.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer
|
||||
|
||||
//the timestamp starts at byte 40 of the received packet and is four bytes,
|
||||
// or two words, long. First, esxtract the two words:
|
||||
|
||||
unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
|
||||
unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
|
||||
// combine the four bytes (two words) into a long integer
|
||||
// this is NTP time (seconds since Jan 1 1900):
|
||||
unsigned long secsSince1900 = highWord << 16 | lowWord;
|
||||
Serial.print("Seconds since Jan 1 1900 = " );
|
||||
Serial.println(secsSince1900);
|
||||
|
||||
// now convert NTP time into everyday time:
|
||||
Serial.print("Unix time = ");
|
||||
// Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
|
||||
const unsigned long seventyYears = 2208988800UL;
|
||||
// subtract seventy years:
|
||||
unsigned long epoch = secsSince1900 - seventyYears;
|
||||
// print Unix time:
|
||||
Serial.println(epoch);
|
||||
|
||||
|
||||
// print the hour, minute and second:
|
||||
Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT)
|
||||
Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day)
|
||||
Serial.print(':');
|
||||
if ( ((epoch % 3600) / 60) < 10 ) {
|
||||
// In the first 10 minutes of each hour, we'll want a leading '0'
|
||||
Serial.print('0');
|
||||
}
|
||||
Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute)
|
||||
Serial.print(':');
|
||||
if ( (epoch % 60) < 10 ) {
|
||||
// In the first 10 seconds of each minute, we'll want a leading '0'
|
||||
Serial.print('0');
|
||||
}
|
||||
Serial.println(epoch % 60); // print the second
|
||||
}
|
||||
// wait ten seconds before asking for the time again
|
||||
delay(10000);
|
||||
}
|
||||
|
||||
// send an NTP request to the time server at the given address
|
||||
unsigned long sendNTPpacket()
|
||||
{
|
||||
// set all bytes in the buffer to 0
|
||||
memset(packetBuffer, 0, NTP_PACKET_SIZE);
|
||||
// Initialize values needed to form NTP request
|
||||
// (see URL above for details on the packets)
|
||||
packetBuffer[0] = 0b11100011; // LI, Version, Mode
|
||||
packetBuffer[1] = 0; // Stratum, or type of clock
|
||||
packetBuffer[2] = 6; // Polling Interval
|
||||
packetBuffer[3] = 0xEC; // Peer Clock Precision
|
||||
// 8 bytes of zero for Root Delay & Root Dispersion
|
||||
packetBuffer[12] = 49;
|
||||
packetBuffer[13] = 0x4E;
|
||||
packetBuffer[14] = 49;
|
||||
packetBuffer[15] = 52;
|
||||
|
||||
// all NTP fields have been given values, now
|
||||
// you can send a packet requesting a timestamp:
|
||||
client.write(packetBuffer, NTP_PACKET_SIZE);
|
||||
|
||||
}
|
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
Web client
|
||||
|
||||
This sketch connects to a website (http://www.google.com)
|
||||
using an DigiX.
|
||||
|
||||
Based on example by David A. Mellis, Tom Igoe, and Adrian McEwen
|
||||
|
||||
*/
|
||||
|
||||
#include <DigiFi.h>
|
||||
|
||||
|
||||
// if you don't want to use DNS - though it is handeled by the WiFI module
|
||||
//so there is no size penalty for using it -
|
||||
// use the numeric IP instead of the name for the server:
|
||||
//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS)
|
||||
char server[] = "digistump.com"; // name address for Google (using DNS)
|
||||
|
||||
// Initialize the Wifi library (client/server/and main all in one)
|
||||
// with the IP address and port of the server
|
||||
// that you want to connect to (port 80 is default for HTTP):
|
||||
DigiFi client;
|
||||
|
||||
void setup() {
|
||||
// Open serial communications and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
|
||||
|
||||
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
|
||||
while(!Serial.available()){
|
||||
Serial.println("Enter any key to begin");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
// start the connection:
|
||||
client.begin(9600);
|
||||
//client.setDebug(true);
|
||||
//wait for module to be ready
|
||||
while (client.ready() != 1)
|
||||
{
|
||||
Serial.println("Connecting to network...");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
Serial.println("connecting...");
|
||||
|
||||
// if you get a connection, report back via serial:
|
||||
if (client.connect(server, 80)) {
|
||||
Serial.println("connected");
|
||||
// Make a HTTP request:
|
||||
client.println("GET /test.txt HTTP/1.1");
|
||||
client.println("Host: www.digistump.com");
|
||||
client.println("Connection: close");
|
||||
client.println();
|
||||
}
|
||||
else {
|
||||
// kf you didn't get a connection to the server:
|
||||
Serial.println("connection failed");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// if there are incoming bytes available
|
||||
// from the server, read them and print them:
|
||||
//while(!Serial1.available()){}
|
||||
if (client.available()) {
|
||||
char c = client.read();
|
||||
Serial.print(c);
|
||||
}
|
||||
|
||||
// if the server's disconnected, stop the client:
|
||||
if (!client.connected()) {
|
||||
Serial.println();
|
||||
Serial.println("disconnecting.");
|
||||
client.stop();
|
||||
|
||||
// do nothing forevermore:
|
||||
while(true);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
Web Server
|
||||
|
||||
A simple web server that shows the value of the analog input pins.
|
||||
Using a DigiX.
|
||||
|
||||
Circuit:
|
||||
* Analog inputs attached to pins A0 through A5 (optional)
|
||||
|
||||
created 18 Dec 2009
|
||||
by David A. Mellis
|
||||
modified 9 Apr 2012
|
||||
by Tom Igoe
|
||||
modified Dec 22, 2013 for use with DigiX by Erik Kettenburg
|
||||
|
||||
*/
|
||||
|
||||
#include <DigiFi.h>
|
||||
|
||||
// Initialize the DigiFi library
|
||||
// with the IP address and port you want to use
|
||||
// (port 80 is default for HTTP):
|
||||
DigiFi server;
|
||||
|
||||
void setup() {
|
||||
// Open serial communications and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
|
||||
while(!Serial.available()){
|
||||
Serial.println("Enter any key to begin");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
// start the server:
|
||||
server.begin();
|
||||
server.server(8080); //start server on port 8080
|
||||
server.setTCPTimeout(1); //force wifi to close connection after idle for 1 second
|
||||
//fix for not being able to close client connections
|
||||
//see WebServerChunked for a better approach
|
||||
while (server.ready() != 1)
|
||||
{
|
||||
Serial.println("Connecting to network...");
|
||||
delay(1000);
|
||||
}
|
||||
Serial.print("server is at ");
|
||||
Serial.println(server.localIP());
|
||||
}
|
||||
|
||||
boolean currentLineIsBlank = false;
|
||||
void loop() {
|
||||
// listen for incoming
|
||||
// an http request ends with a blank line
|
||||
|
||||
|
||||
if (server.available()) {
|
||||
char c = server.read();
|
||||
Serial.write(c);
|
||||
// if you've gotten to the end of the line (received a newline
|
||||
// character) and the line is blank, the http request has ended,
|
||||
// so you can send a reply
|
||||
if (c == '\n' && currentLineIsBlank) {
|
||||
// send a standard http response header
|
||||
server.println("HTTP/1.1 200 OK");
|
||||
server.println("Content-Type: text/html");
|
||||
server.println("Connection: close"); // the connection will be closed after completion of the response
|
||||
server.println("Refresh: 5"); // refresh the page automatically every 5 sec
|
||||
server.println();
|
||||
server.println("<!DOCTYPE HTML>");
|
||||
server.println("<html>");
|
||||
// output the value of each analog input pin
|
||||
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
|
||||
int sensorReading = analogRead(analogChannel);
|
||||
server.print("analog input ");
|
||||
server.print(analogChannel);
|
||||
server.print(" is ");
|
||||
server.print(sensorReading);
|
||||
server.println("<br />");
|
||||
}
|
||||
server.println("</html>");
|
||||
server.println("");
|
||||
server.println("");
|
||||
currentLineIsBlank = false;
|
||||
|
||||
}
|
||||
else 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;
|
||||
}
|
||||
}
|
||||
|
||||
// give the web browser time to receive the data
|
||||
delay(1);
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
Web Server
|
||||
|
||||
A simple web server that shows the value of the analog input pins.
|
||||
Using a DigiX.
|
||||
|
||||
Circuit:
|
||||
* Analog inputs attached to pins A0 through A5 (optional)
|
||||
|
||||
created 18 Dec 2009
|
||||
by David A. Mellis
|
||||
modified 9 Apr 2012
|
||||
by Tom Igoe
|
||||
modified Dec 22, 2013 for use with DigiX by Erik Kettenburg
|
||||
|
||||
*/
|
||||
|
||||
#include <DigiFi.h>
|
||||
|
||||
// Initialize the DigiFi library
|
||||
// with the IP address and port you want to use
|
||||
// (port 80 is default for HTTP):
|
||||
DigiFi server;
|
||||
|
||||
void setup() {
|
||||
// Open serial communications and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
|
||||
while(!Serial.available()){
|
||||
Serial.println("Enter any key to begin");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
// start the server:
|
||||
server.begin();
|
||||
server.server(8080); //start server on port 8080
|
||||
while (server.ready() != 1)
|
||||
{
|
||||
Serial.println("Connecting to network...");
|
||||
delay(1000);
|
||||
}
|
||||
Serial.print("server is at ");
|
||||
Serial.println(server.localIP());
|
||||
}
|
||||
|
||||
boolean currentLineIsBlank = false;
|
||||
void loop() {
|
||||
// listen for incoming
|
||||
// an http request ends with a blank line
|
||||
|
||||
|
||||
if (server.available()) {
|
||||
char c = server.read();
|
||||
Serial.write(c);
|
||||
// if you've gotten to the end of the line (received a newline
|
||||
// character) and the line is blank, the http request has ended,
|
||||
// so you can send a reply
|
||||
if (c == '\n' && currentLineIsBlank) {
|
||||
// send a standard http response header
|
||||
server.println("HTTP/1.1 200 OK");
|
||||
server.println("Content-Type: text/html");
|
||||
server.println("Connection: close"); // the connection will be closed after completion of the response
|
||||
//server.println("Refresh: 5"); // refresh the page automatically every 5 sec
|
||||
server.println("Transfer-Encoding: chunked");
|
||||
server.println();
|
||||
server.printChunk("<!DOCTYPE HTML>");
|
||||
server.printChunk("<html>");
|
||||
// output the value of each analog input pin
|
||||
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
|
||||
int sensorReading = analogRead(analogChannel);
|
||||
server.printChunk("analog input ");
|
||||
server.printChunk(analogChannel);
|
||||
server.printChunk(" is ");
|
||||
server.printChunk(sensorReading);
|
||||
server.printChunk("<br />");
|
||||
}
|
||||
server.printChunk("</html>");
|
||||
server.closeChunk();
|
||||
|
||||
currentLineIsBlank = false;
|
||||
|
||||
}
|
||||
else 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;
|
||||
}
|
||||
}
|
||||
|
||||
// give the web browser time to receive the data
|
||||
delay(1);
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user