Arduino Sketch MP_BasicConfigControl
/*
MP_BasicConfigControl
Performs simple MakerPlot configuration from Arduino
Sends Configuration information to MakerPlot for a basic plot.
Reads analog value, uses switches to set the setpoint
lighting an LED is above setpoint.
Plots analog values of input and setpoint and
digital values of switches and LED state.
The circuit:
* potentiometer connected to A0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
* LED connected from digital D9 to ground
* Pushbutton swithes on D2 and D3 going to ground.
created 20 July 2012
by Martin Hebel, SelmaWare Solutions
This example code is in the public domain.
*/
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int LEDpin = 9; // Analog output pin that the LED is attached to
const int SW1pin = 2; // Pushbutton switch, raise setpoint
const int SW2pin = 3; // Pushbutton switch, lower setpoint
int sensorValue = 0; // value read from the pot
int setPoint = 100; // Initial value of setPoint
int SW1state = 0; // Store state of SW1
int SW2state = 0; // Store state of SW2
int LEDstate = 0; // Store state of LED
void setup() {
// configure hardware
pinMode(SW1pin, INPUT_PULLUP); // Enable pull-ups on switches
pinMode(SW2pin, INPUT_PULLUP);
pinMode(LEDpin, OUTPUT); // set LED to be an output pin
// initialize serial communications at 9600 bps:
Serial.begin(9600);
config_MP(); // function to configure MakerPlot
}
void loop() {
measureData(); // measure values
buttonControl(); // read buttons for control
control(); // control based on settings
plotData(); // diplay/plot values
// wait 100 milliseconds before the next loop
delay(100);
}
void measureData()
{
// read the analog in value
sensorValue = analogRead(analogInPin);
}
void buttonControl()
{ // Check states of pushbuttons, it pressed change setpoint up or down
SW1state = digitalRead(SW1pin);
if (SW1state == 0)
{
setPoint+=10; // add 10 to setPoint
// display in Status box
Serial.print("!STAT Setpoint increased to: ");
Serial.println(setPoint);
}
SW2state = digitalRead(SW2pin);
if (SW2state == 0)
{
setPoint-=10; // subtract 10 from setPoint
// display in Status box
Serial.print("!STAT Setpoint decreased to: ");
Serial.println(setPoint);
}
}
void plotData()
{
// print the analog values formatted for MakerPlot
Serial.print(sensorValue); // send 1st value
Serial.print(","); // send comma delimiter
Serial.println(setPoint); // send 2nd value with carriage return
// print the digital values formatted for MakerPlot
Serial.print("%"); // send binary indicator
Serial.print(SW1state); // send 1/0 for SW1
Serial.print(SW2state); // send 1/0 for SW2
Serial.println(LEDstate); // send 1/0 for LED with carriage return
}
void control()
{
// Check pot value against setpoint, if above light LED
if (sensorValue > setPoint)
{
LEDstate = 1;
Serial.println("!BELL"); // Sound PC Bell
}
else
LEDstate = 0;
digitalWrite(LEDpin,LEDstate);
}
void config_MP()
{
delay(2000); // allow connection to stabilize
Serial.println(); // send in case garbage in queue
Serial.println("!RSET"); // Reset the plot
Serial.println("!SPAN 0,1000"); // set span of Y-axis, 0 to 1000
Serial.println("!TMAX 180"); // Set time to 180 seconds
Serial.println("!YLBL ADC Value"); // label Y axis
Serial.println("!GRID 20,20"); // set grid to 20 x 20
Serial.println("!PNTS 4000"); // set data points to 4000
Serial.println("!PLOT ON"); // reset plot, send CR as MP value, enable plotting
// clear constant drawings and place constant text on plot
Serial.println("!CLRC(CR)@TEXT 30A,105A,1.5A,(Blue),Configured from Arduino");
}
MP_BasicConfigControl
Performs simple MakerPlot configuration from Arduino
Sends Configuration information to MakerPlot for a basic plot.
Reads analog value, uses switches to set the setpoint
lighting an LED is above setpoint.
Plots analog values of input and setpoint and
digital values of switches and LED state.
The circuit:
* potentiometer connected to A0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
* LED connected from digital D9 to ground
* Pushbutton swithes on D2 and D3 going to ground.
created 20 July 2012
by Martin Hebel, SelmaWare Solutions
This example code is in the public domain.
*/
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int LEDpin = 9; // Analog output pin that the LED is attached to
const int SW1pin = 2; // Pushbutton switch, raise setpoint
const int SW2pin = 3; // Pushbutton switch, lower setpoint
int sensorValue = 0; // value read from the pot
int setPoint = 100; // Initial value of setPoint
int SW1state = 0; // Store state of SW1
int SW2state = 0; // Store state of SW2
int LEDstate = 0; // Store state of LED
void setup() {
// configure hardware
pinMode(SW1pin, INPUT_PULLUP); // Enable pull-ups on switches
pinMode(SW2pin, INPUT_PULLUP);
pinMode(LEDpin, OUTPUT); // set LED to be an output pin
// initialize serial communications at 9600 bps:
Serial.begin(9600);
config_MP(); // function to configure MakerPlot
}
void loop() {
measureData(); // measure values
buttonControl(); // read buttons for control
control(); // control based on settings
plotData(); // diplay/plot values
// wait 100 milliseconds before the next loop
delay(100);
}
void measureData()
{
// read the analog in value
sensorValue = analogRead(analogInPin);
}
void buttonControl()
{ // Check states of pushbuttons, it pressed change setpoint up or down
SW1state = digitalRead(SW1pin);
if (SW1state == 0)
{
setPoint+=10; // add 10 to setPoint
// display in Status box
Serial.print("!STAT Setpoint increased to: ");
Serial.println(setPoint);
}
SW2state = digitalRead(SW2pin);
if (SW2state == 0)
{
setPoint-=10; // subtract 10 from setPoint
// display in Status box
Serial.print("!STAT Setpoint decreased to: ");
Serial.println(setPoint);
}
}
void plotData()
{
// print the analog values formatted for MakerPlot
Serial.print(sensorValue); // send 1st value
Serial.print(","); // send comma delimiter
Serial.println(setPoint); // send 2nd value with carriage return
// print the digital values formatted for MakerPlot
Serial.print("%"); // send binary indicator
Serial.print(SW1state); // send 1/0 for SW1
Serial.print(SW2state); // send 1/0 for SW2
Serial.println(LEDstate); // send 1/0 for LED with carriage return
}
void control()
{
// Check pot value against setpoint, if above light LED
if (sensorValue > setPoint)
{
LEDstate = 1;
Serial.println("!BELL"); // Sound PC Bell
}
else
LEDstate = 0;
digitalWrite(LEDpin,LEDstate);
}
void config_MP()
{
delay(2000); // allow connection to stabilize
Serial.println(); // send in case garbage in queue
Serial.println("!RSET"); // Reset the plot
Serial.println("!SPAN 0,1000"); // set span of Y-axis, 0 to 1000
Serial.println("!TMAX 180"); // Set time to 180 seconds
Serial.println("!YLBL ADC Value"); // label Y axis
Serial.println("!GRID 20,20"); // set grid to 20 x 20
Serial.println("!PNTS 4000"); // set data points to 4000
Serial.println("!PLOT ON"); // reset plot, send CR as MP value, enable plotting
// clear constant drawings and place constant text on plot
Serial.println("!CLRC(CR)@TEXT 30A,105A,1.5A,(Blue),Configured from Arduino");
}