primer commit probando arduino, va el .ino de sensor de temperatura y humedad
This commit is contained in:
94
libraries/Firmata/examples/AnalogFirmata/AnalogFirmata.ino
Normal file
94
libraries/Firmata/examples/AnalogFirmata/AnalogFirmata.ino
Normal file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Firmata is a generic protocol for communicating with microcontrollers
|
||||
* from software on a host computer. It is intended to work with
|
||||
* any host computer software package.
|
||||
*
|
||||
* To download a host software package, please clink on the following link
|
||||
* to open the download page in your default browser.
|
||||
*
|
||||
* http://firmata.org/wiki/Download
|
||||
*/
|
||||
|
||||
/* This firmware supports as many analog ports as possible, all analog inputs,
|
||||
* four PWM outputs, and two with servo support.
|
||||
*
|
||||
* This example code is in the public domain.
|
||||
*/
|
||||
#include <Servo.h>
|
||||
#include <Firmata.h>
|
||||
|
||||
/*==============================================================================
|
||||
* GLOBAL VARIABLES
|
||||
*============================================================================*/
|
||||
|
||||
/* servos */
|
||||
Servo servo9, servo10; // one instance per pin
|
||||
/* analog inputs */
|
||||
int analogInputsToReport = 0; // bitwise array to store pin reporting
|
||||
int analogPin = 0; // counter for reading analog pins
|
||||
/* timer variables */
|
||||
unsigned long currentMillis; // store the current value from millis()
|
||||
unsigned long previousMillis; // for comparison with currentMillis
|
||||
|
||||
|
||||
/*==============================================================================
|
||||
* FUNCTIONS
|
||||
*============================================================================*/
|
||||
|
||||
void analogWriteCallback(byte pin, int value)
|
||||
{
|
||||
switch (pin) {
|
||||
case 9: servo9.write(value); break;
|
||||
case 10: servo10.write(value); break;
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
case 11: // PWM pins
|
||||
analogWrite(pin, value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
// sets bits in a bit array (int) to toggle the reporting of the analogIns
|
||||
void reportAnalogCallback(byte pin, int value)
|
||||
{
|
||||
if (value == 0) {
|
||||
analogInputsToReport = analogInputsToReport & ~ (1 << pin);
|
||||
}
|
||||
else { // everything but 0 enables reporting of that pin
|
||||
analogInputsToReport = analogInputsToReport | (1 << pin);
|
||||
}
|
||||
// TODO: save status to EEPROM here, if changed
|
||||
}
|
||||
|
||||
/*==============================================================================
|
||||
* SETUP()
|
||||
*============================================================================*/
|
||||
void setup()
|
||||
{
|
||||
Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
|
||||
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
|
||||
Firmata.attach(REPORT_ANALOG, reportAnalogCallback);
|
||||
|
||||
servo9.attach(9);
|
||||
servo10.attach(10);
|
||||
Firmata.begin(57600);
|
||||
}
|
||||
|
||||
/*==============================================================================
|
||||
* LOOP()
|
||||
*============================================================================*/
|
||||
void loop()
|
||||
{
|
||||
while (Firmata.available())
|
||||
Firmata.processInput();
|
||||
currentMillis = millis();
|
||||
if (currentMillis - previousMillis > 20) {
|
||||
previousMillis += 20; // run this every 20ms
|
||||
for (analogPin = 0; analogPin < TOTAL_ANALOG_PINS; analogPin++) {
|
||||
if ( analogInputsToReport & (1 << analogPin) )
|
||||
Firmata.sendAnalog(analogPin, analogRead(analogPin));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user