int x;
byte segment_vals[12] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,0x40,0x79};
//Function Prototypes
void set4x7seg(int val);
void set7seg(int val);
const int temp=A0; //A0 is the temp sensor input
float tempf; //Temp of Farenheit
float tempc; //Temp of Celcius
float val; //Sensor Reading
void setup() {
pinMode(temp, INPUT); //A0 Input
Serial.begin(9600);
x = 9999;
DDRK = 0xFF;
PORTK = 0x00;
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
void loop() {
val = analogRead(temp); // read the input pin
tempc=(val*500)/1023; //Convert val Celcius
tempf=(tempc*1.8)+32; //Convert val to Farenheit
set4x7seg(tempc);
//int adc_raw;
//adc_raw = analogRead(A0);
//Serial.println(adc_raw);
}
void set4x7seg(int val){
if (val>999 || val <-999){
set7seg(11);
//ACTIVATE DIGIT 1
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
else if (val < 0){
if (val > -10) //single digit negative value scenario
{
set7seg(10);
//ACTIVATE DIGIT 1
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
set4x7seg(-1*val);
//ACTIVATE DIGIT 1
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
else {
set7seg(10);
//ACTIVATE DIGIT 1
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
set4x7seg(val*-1);}
} else if (val<10)
{
set7seg(val);
//ACTIVATE DIGIT 1
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
} else if (val<100)
{
set7seg(val%10); //1's digit
//ACTIVATE DIGIT 1
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
//delay(1);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
set7seg(val/10); //10's digit
//ACTIVATE DIGIT 2
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
//delay(1);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}else if (val<1000)
{
set7seg(val%10); //1's digit
//ACTIVATE DIGIT 1
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
//delay(1);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
set7seg(val/10%10); //10's digit
//ACTIVATE DIGIT 2
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
//delay(1);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
set7seg(val/100); //10's digit
//ACTIVATE DIGIT 3
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
//delay(1);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
}
void set7seg(int val){
PORTK = segment_vals[val];
}