Hello,
I am having trouble getting leds to light while i am reading temp and outputing that to a lcd screen. I can put temp to the lcd screen and shift out to all my leds but not both. here is the lcd temp code.
/*
* temperature_sensor.pde
* -----------------
* Takes the sensor (LM335) input and converts it
* to Kelvin degrees, then celsius.
* Subtract 2.5 celsius degrees that seem
* to be the sensor error perhaps due to the heat
* generating by the current running through it.
* 2.5 degrees were calculated by using a mercury
* thermometer next to the sensor.
*
* http://spacetinkerer.blogspot.com
*/
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(10, 11, 12, 13, 14, 15);
float temp_in_celsius = 0, temp_in_kelvin=0, temp_in_fahrenheit=0;
float raw;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop()
{
//Reads the input and converts it to Kelvin degrees
temp_in_kelvin = analogRead(A3) * 0.004882812 * 100;
//Converts Kelvin to Celsius minus 2.5 degrees error
temp_in_celsius = temp_in_kelvin - 2.5 - 273.15;
temp_in_fahrenheit = ((temp_in_kelvin - 2.5) * 9 / 5) - 459.67;
if (temp_in_fahrenheit <= 70) {
lcd.clear();
lcd.print(temp_in_fahrenheit);
lcd.print(" F ");
lcd.print(temp_in_celsius);
lcd.print(" C");
lcd.setCursor(0, 1); // bottom left
lcd.print("BRRR it's cold");
delay(500);
}
if (temp_in_fahrenheit >= 75) {
lcd.clear();
lcd.print(temp_in_fahrenheit);
lcd.print(" F ");
lcd.print(temp_in_celsius);
lcd.print(" C");
lcd.setCursor(0, 1); // bottom left
lcd.print(" HOT HOT HOT");
delay(500);
}
if ((temp_in_fahrenheit > 70) && (temp_in_fahrenheit < 75)) {
lcd.clear();
lcd.print(temp_in_fahrenheit);
lcd.print(" F ");
lcd.print(temp_in_celsius);
lcd.print(" C");
lcd.setCursor(0, 1); // bottom left
lcd.print("Hello Alexander");
delay(500);
}
}
And here is one of the led codes I want to work while at the >70 to <75 range
//**************************************************************//
// Name : shiftOutCode, Dual Binary Counters //
// Author : Carlyn Maw, Tom Igoe //
// Date : 25 Oct, 2006 //
// Version : 1.0 //
// Notes : Code for using a 74HC595 Shift Register //
// : to count from 0 to 255 //
//**************************************************************//
//Pin connected to ST_CP of 74HC595
int latchPin = 5;
//Pin connected to SH_CP of 74HC595
int clockPin = 4;
////Pin connected to DS of 74HC595
int dataPin = 3;
void setup() {
//Start Serial for debuging purposes
Serial.begin(9600);
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
}
void loop() {
//count up routine
for (int j = 0; j < 256; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
//count up on GREEN LEDs
shiftOut(dataPin, clockPin, j);
//count down on RED LEDs
shiftOut(dataPin, clockPin, 255-j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, 1);
delay(1000);
}
}
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
// This shifts 8 bits out MSB first,
//on the rising edge of the clock,
//clock idles low
//internal function setup
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
//clear everything out just in case to
//prepare shift register for bit shifting
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
//for each bit in the byte myDataOut�
//NOTICE THAT WE ARE COUNTING DOWN in our for loop
//This means that %00000001 or "1" will go through such
//that it will be pin Q0 that lights.
for (i=7; i>=0; i--) {
digitalWrite(myClockPin, 0);
//if the value passed to myDataOut and a bitmask result
// true then... so if we are at i=6 and our value is
// %11010100 it would the code compares it to %01000000
// and proceeds to set pinState to 1.
if ( myDataOut & (1<<i) ) {
pinState= 1;
}
else {
pinState= 0;
}
//Sets the pin to HIGH or LOW depending on pinState
digitalWrite(myDataPin, pinState);
//register shifts bits on upstroke of clock pin
digitalWrite(myClockPin, 1);
//zero the data pin after shift to prevent bleed through
digitalWrite(myDataPin, 0);
}
//stop shifting
digitalWrite(myClockPin, 0);
}
So how do i combine the two?