Persistence of Vision and Temperature sensor Arduino code
{//Reading realtime values of a sensor using persistence of vision typography using the Arduino
// array for displaying numbers or letters
int _[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}; int num1[] = {0,1,0,0,1, 1,1,1,1,1, 0,0,0,0,1}; int num2[] = {1,0,1,1,1, 1,0,1,0,1, 1,1,1,0,1}; int num3[] = {0,1,0,1,0, 1,0,1,0,1, 1,1,1,1,1}; int num4[] = {1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1}; int num5[] = {1,1,1,0,1, 1,0,1,0,1, 1,0,1,1,1}; int num6[] = {1,1,1,1,1, 1,0,1,0,1, 1,0,1,1,1}; int num7[] = {1,0,0,0,0, 1,0,0,0,0, 1,1,1,1,1}; int num8[] = {1,1,1,1,1, 1,0,1,0,1, 1,1,1,1,1}; int num9[] = {1,1,1,0,1, 1,0,1,0,1, 1,1,1,1,1}; int num0[] = {1,1,1,1,1, 1,0,0,0,1, 1,1,1,1,1}; int dot[] = {0,0,0,0,0, 1,1,0,0,0, 1,1,0,0,0}; int C[] = {1,1,1,1,1, 1,0,0,0,1, 1,0,0,0,1}; int minus[] = {0,0,1,0,0, 0,0,1,0,0, 0,0,1,0,0}; int letterSpace; int dotTime;
int temp;
int tempPin = 0;
void setup() {
Serial.begin(9600);
// setting the ports of the leds to OUTPUT pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); // defining the space between the letters (ms) letterSpace = 6; // defining the time dots appear (ms) dotTime = 3;
}
void printLetter(int letter[]) {
int y;
// printing the first y row of the letter
for (y=0; y<5; y++)
{
digitalWrite(y+2, letter[y]);
}
delay(dotTime);
// printing the second y row of the letter
for (y=0; y<5; y++)
{
digitalWrite(y+2, letter[y+5]);
}
delay(dotTime);
// printing the third y row of the letter
for (y=0; y<5; y++)
{
digitalWrite(y+2, letter[y+10]);
}
delay(dotTime);
// printing the sspace between the letters
for (y=0; y<5; y++)
{
digitalWrite(y+2, 0);
}
delay(letterSpace);
}
void loop()
{
int ara[2]; //Array to store separate digits of the temperature value. int count=0; int n; //To calculate values from the LM35 temp = analogRead(tempPin); temp = temp * 0.48828125;
//Serial.print(temp);
if (temp == 0)
printLetter(num0);
n=temp; //make a copy of the temperature value in another variable.
// To calculate the number of digits in the temperature sensor value
if (temp > 0)
{
while(n!=0)
{
n=n/10;
++count;
}
}
//to store the digits of the temperature value in an array
for(int i=0;i<=count;i++)
{
ara[i]=temp%10;
temp=temp/10;
}
//loop to output the digits stored in the array
for(int i=count;i>=0;i--)
{
if (ara[i] == 1)
printLetter(num1);
if (ara[i] == 2)
printLetter(num2);
if (ara[i] == 3)
printLetter(num3);
if (ara[i] == 4)
printLetter(num4);
if (ara[i] == 5)
printLetter(num5);
if (ara[i] == 6)
printLetter(num6);
if (ara[i] == 7)
printLetter(num7);
if (ara[i] == 8)
printLetter(num8);
if (ara[i] == 9)
printLetter(num9);
if (ara[i] == 0)
printLetter(num0);
}
delay(5); printLetter(dot); printLetter(C);
}
}