Samuel J RamosCharlie WaechterOlivia Ochoa
Published © CC BY

Grades Correlation With Sound - Lane Tech (R106)

Students enter class and show their grade by pressing one out of the five buttons. Sound is being measured to see correlations with grades.

IntermediateShowcase (no instructions)3 hours575
Grades Correlation With Sound - Lane Tech (R106)

Things used in this project

Hardware components

Photon
Particle Photon
×1
Breadboard (generic)
Breadboard (generic)
×1
SparkFun Sound Detector
×1
SparkFun Concave Button
×5
Jumper wires (generic)
Jumper wires (generic)
×10

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Custom parts and enclosures

Enclosure

Schematics

Fritzing Diagram

This is the diagram that wa used to fritz the buttons and the sound sensor

Code

ButtonandSound

Arduino
This is the code that we used to push the button data to phant and pull the sound code.
// This #include statement was automatically added by the Particle IDE.
#include <SparkFunPhant.h>



/*  SparkFun Inventor's Kit for Photon
    Experiment 2 - Part 1: With a Touch of a Button
    This sketch was written by SparkFun Electronics
    August 31, 2015
    https://github.com/sparkfun

    This is a simple example sketch that turns on an LED
    when pushing down on the push button

    Development environment specifics:
    Particle Build environment (https://www.particle.io/build)
    Particle Photon RedBoard
    Released under the MIT License(http://opensource.org/licenses/MIT)
*/

 // LED is connected to D0
 int a = D5;
 int b = D4;
 int c = D2;
 int d = D3;
 int f = D0;
/*int pushButtonHappy = D0;
int pushButtonIndifferent = D1;
int pushButtonSad = D2;// Push button is connected to D2 */
///int counterHappy = 0;
///int counterIndifferent = 0;
///int counterSad = 0;
/*double counterHappy = 0;
double counterIndifferent = 0;
double counterSad = 0;
*/
double aPressed = 0;
double bPressed = 0;
double cPressed = 0;
double dPressed = 0;
double fPressed = 0;

const char server[] = "data.sparkfun.com"; // Phant destination server
const char publicKey[] = "KJN1YVd7qLSa9l39Zo16"; // Phant public key - HAS TO BE CHANGED
const char privateKey[] = "vz5R0ldrgJUBYxMYwkoR"; // Phant private key  - HAS TO BE CHANGED
Phant phant(server, publicKey, privateKey); // Create a Phant object

const int POST_RATE = 3000; // Time between posts, in ms.
unsigned long lastPost = 0; // global variable to keep track of last post time


// This routine runs only once upon reset
void setup() 
{
 // Initialize D0 pin as output
  pinMode(a, INPUT_PULLUP); 
  pinMode(b, INPUT_PULLUP); 
  pinMode(c, INPUT_PULLUP);
  pinMode(d, INPUT_PULLUP); 
  pinMode(f, INPUT_PULLUP); 
 
  Serial.begin(9600);

  // Initialize D2 pin as input with an internal pull-up resistor
}

// This routine loops forever
void loop() 
{
  int aState; 
  int bState; 
  int cState; 
  int dState; 
  int fState; 
  aState = digitalRead(a);
  bState = digitalRead(b);
  cState = digitalRead(c);
  dState = digitalRead(d);
  fState = digitalRead(f);
/////START HERE
if(aState == HIGH)
{
    aPressed++;
    Serial.println("A pressed");
    postToPhant();
    delay(250);
}
if(bState == HIGH)
{
    bPressed++;
    Serial.println("B pressed");
    postToPhant();
    delay(250);
}
if(cState == HIGH)
{
    cPressed++;
    Serial.println("C pressed");
    postToPhant();
    delay(250);
}
if(dState == HIGH)
{
    dPressed++;
    Serial.println("D pressed");
    postToPhant();
    delay(250);
}
if(fState == HIGH)
{
    fPressed++;
    Serial.println("F pressed");
    postToPhant();
    delay(250);
}
/*
  if(pushButtonStateHappy == HIGH)
  { // If we push down on the push button
     counterHappy = counterHappy + 1;
     Serial.println("Happy: " + (String)counterHappy) ;
     postToPhant() ;
     delay(250) ;
     // Turn ON the LED
  }
  if(pushButtonStateIndifferent == HIGH)
  {
     counterIndifferent = counterIndifferent +1;
     Serial.println("Indifferent: " + (String)counterIndifferent) ;
     postToPhant() ;
     delay(250) ;
  }
  if(pushButtonStateSad == HIGH)
  {
    counterSad = counterSad +1 ;
    Serial.println("Sad: " + (String)counterSad) ;
    postToPhant() ;
    delay(250) ;
  }*/

}

int postToPhant()
{    
    // Use phant.add(<field>, <value>) to add data to each field.
    // Phant requires you to update each and every field before posting,
    // make sure all fields defined in the stream are added here.
    phant.add("a", aPressed);
    phant.add("b", bPressed);
    phant.add("c", cPressed);
    phant.add("d", dPressed);
    phant.add("f", fPressed);
    

        	
    TCPClient client;
    char response[512];
    int i = 0;
    int retVal = 0;
    
    if (client.connect(server, 80)) // Connect to the server
    {
		// Post message to indicate connect success
        Serial.println("Posting!"); 
		
		// phant.post() will return a string formatted as an HTTP POST.
		// It'll include all of the field/data values we added before.
		// Use client.print() to send that string to the server.
        client.print(phant.post());
        delay(1000);
		// Now we'll do some simple checking to see what (if any) response
		// the server gives us.
        while (client.available())
        {
            char c = client.read();
            Serial.print(c);	// Print the response for debugging help.
            if (i < 512)
                response[i++] = c; // Add character to response string
        }
		// Search the response string for "200 OK", if that's found the post
		// succeeded.
        if (strstr(response, "200 OK"))
        {
            Serial.println("Post success!");
            retVal = 1;
        }
        else if (strstr(response, "400 Bad Request"))
        {	// "400 Bad Request" means the Phant POST was formatted incorrectly.
			// This most commonly ocurrs because a field is either missing,
			// duplicated, or misspelled.
            Serial.println("Bad request");
            retVal = -1;
        }
        else
        {
			// Otherwise we got a response we weren't looking for.
            retVal = -2;
        }
    }
    else
    {	// If the connection failed, print a message:
        Serial.println("connection failed");
        retVal = -3;
    }
    client.stop();	// Close the connection to server.
}

Credits

Samuel J Ramos

Samuel J Ramos

-1 projects • 0 followers
Charlie Waechter

Charlie Waechter

-1 projects • 0 followers
Olivia Ochoa

Olivia Ochoa

-1 projects • 0 followers

Comments