Created
September 10, 2015 21:02
-
-
Save Craigson/b842eaaa9af34c8d0e5e to your computer and use it in GitHub Desktop.
Arduino sketch for contactless IR circuit using Melexis thermopile and ATtiny85.
This file contains hidden or 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
| //INCLUDE REQUIRED LIBRARIES | |
| #include <Adafruit_NeoPixel.h> | |
| #include <TinyWireM.h> | |
| #include <Adafruit_MiniMLX90614.h> | |
| #include <SoftwareSerial.h> | |
| int TINY_SDA = 0; //ATtiny SDA pin 5 | |
| int TINY_SCL = 2; //ATtiny SCL pin 7 | |
| int LED_PIN = 1; //NEOPIXEL LED ON ATtuny PIN 6 | |
| int NUMPIXELS = 1; //THE NEOPIXEL LIBRARY NEEDS YOU TO PASS THE NUMBER OF PIXELS AS A FUNCTION ARGUMENT | |
| Adafruit_MiniMLX90614 mlx = Adafruit_MiniMLX90614(); | |
| SoftwareSerial mySerial(4, 3); // RX, TX | |
| Adafruit_NeoPixel pixel = Adafruit_NeoPixel(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800); | |
| int delayval = 50; // DELAY | |
| void setup() { | |
| mlx.begin(); //INITIALIZE THE MELEXIS SENSOR | |
| pixel.begin(); //INITIALIZE THE NEOPIXEL | |
| mySerial.begin(4800); //INITIALIZE THE SOFTWARE SERIAL | |
| } | |
| void loop() { | |
| //CREATE VARIABLES TO STORE AMBIENT AND OBJECT TEMPERATURES | |
| float ambientTemp = mlx.readAmbientTempC(); | |
| float objTemp = mlx.readObjectTempC(); | |
| //CALCULATE THE DIFFERENCE BETWEEN THE TWO | |
| float diff = ambientTemp - objTemp; | |
| //UNCOMMENT THE SECTION BELOW FOR DEBUGGING | |
| /* | |
| mySerial.print("Object Temp: "); | |
| mySerial.print(objTemp); | |
| mySerial.print(" , Ambient Temp: "); | |
| mySerial.print(ambientTemp); | |
| mySerial.print(" , Difference: "); | |
| mySerial.println(diff); | |
| */ | |
| if (diff > 2) { | |
| pixel.setPixelColor(0, pixel.Color(0, 0, 255)); //IF OBJECT IS COLD, SET COLOR TO BLUE | |
| } else if (diff < -2) { | |
| pixel.setPixelColor(0, pixel.Color(255, 0, 0)); //IF OBJECT IS HOT, SET COLOR TO RED | |
| } else { | |
| pixel.setPixelColor(0, pixel.Color(150, 170, 150)); //REPRESENT AMBIENT TEMP WITH WHITE LIGHT | |
| } | |
| pixel.show(); // DISPLAY COLOR ON THE PIXEL | |
| delay(delayval); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment