-
-
Save cguilherme00/0490e153091e956fe97d5e5d7eca2099 to your computer and use it in GitHub Desktop.
Arduino data to R
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(serial) | |
rm(list = ls()) # clear environment | |
graphics.off() # close all graphic windows | |
### establish a serial connection | |
con <- serialConnection(name = "get_temps", | |
port = "COM5", | |
mode = "115200,n,8,1", | |
buffering = "none", | |
newline = 1, | |
translation = "cr") | |
#close(con) | |
isOpen(con) | |
open(con) | |
isOpen(con) | |
### grab data from serial port | |
read.serialConnection(con) | |
#Grab last five characters and turn into number | |
substrRight <- function(x, n){ substr(x, nchar(x)-n+1, nchar(x)) } | |
tmp <- read.serialConnection(con) | |
tmp | |
substrRight(tmp,5) | |
as.numeric(substrRight(tmp,5)) | |
as.numeric(substrRight(read.serialConnection(con),5)) | |
#### Single Non-Moving Plot | |
x11() | |
N <- 1000 | |
x <- rep(NA,N) | |
for(i in seq(N)) { | |
Sys.sleep(0.101) | |
tmp <- read.serialConnection(con) | |
x[i] <- as.numeric(substrRight(tmp,5)) | |
plot(1:N, x, type="l", ylim=c(22, 28),lwd=2, | |
main="Temperature from Arduino", xlab="Seconds*10", | |
ylab="Temperature - Celsius") | |
} | |
#### Scrolling Plot | |
x11() | |
N <- 1000 | |
x <- rep(NA,N) | |
for(i in seq(N)) { | |
Sys.sleep(0.101) | |
tmp <- read.serialConnection(con) | |
x[i] <- as.numeric(substrRight(tmp,5)) | |
if(i<=200){ | |
plot(1:200, x[1:200], type="l", ylim=c(22, 28),lwd=2, | |
main="Temperature from Arduino", xlab="Seconds*10", | |
ylab="Temperature - Celsius") | |
} else | |
if(i>200){ | |
plot((i-200):i, x[(i-200):i], type="l", ylim=c(22, 28),lwd=2, | |
main="Temperature from Arduino", xlab="Seconds*10", | |
ylab="Temperature - Celsius") | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* --------------------------------------------------------- | |
* | Arduino Experimentation Kit Example Code | | |
* | CIRC-10 .: Temperature :. (TMP36 Temperature Sensor) | | |
* --------------------------------------------------------- | |
* | |
* A simple program to output the current temperature to the IDE's debug window | |
* | |
* For more details on this circuit: http://tinyurl.com/c89tvd | |
*/ | |
//TMP36 Pin Variables | |
int temperaturePin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to | |
//the resolution is 10 mV / degree centigrade | |
//(500 mV offset) to make negative temperatures an option | |
/* | |
* setup() - this function runs once when you turn your Arduino on | |
* We initialize the serial connection with the computer | |
*/ | |
void setup() | |
{ | |
Serial.begin(115200); //Start the serial connection with the copmuter | |
//to view the result open the serial monitor | |
//last button beneath the file bar (looks like a box with an antenae) | |
} | |
void loop() // run over and over again | |
{ | |
float temperature = getVoltage(temperaturePin); //getting the voltage reading from the temperature sensor | |
temperature = (temperature - .5) * 100; //converting from 10 mv per degree wit 500 mV offset | |
//to degrees ((volatge - 500mV) times 100) | |
Serial.println(temperature); //printing the result | |
delay(100); //waiting a tenth of a second | |
} | |
/* | |
* getVoltage() - returns the voltage on the analog input defined by | |
* pin | |
*/ | |
float getVoltage(int pin){ | |
return (analogRead(pin) * .004882814); //converting from a 0 to 1023 digital range | |
// to 0 to 5 volts (each 1 reading equals ~ 5 millivolts | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment