PSI Pressure Sensor display on 8 Digit Segment Display
Parts:
Arduino UNO
Pressure Transducer Pressure Sender
AUTEX 1 pc 200 Psi Stainless Steel Pressure Transducer Pressure Sender Pressure Transmitter Sensor compatible with Oil Fuel Air Water Diesel Gas Amazon.com: AUTEX 1 pc 200 Psi Stainless Steel Pressure Transducer Pressure Sender Pressure Transmitter Sensor compatible with Oil Fuel Air Water Diesel Gas : Automotive
#include <SPI.h> #define CSpin 2 unsigned long counterValue = 0; byte digits[8]; void displayCounter(); void setup() { SPI.setClockDivider(SPI_CLOCK_DIV2); SPI.setDataMode(SPI_MODE0); SPI.setBitOrder(MSBFIRST); digitalWrite(CSpin, HIGH); pinMode(CSpin, OUTPUT); SPI.begin(); digitalWrite(CSpin, LOW);//come out of shutdown SPI.transfer(0x0C); SPI.transfer(0x01); digitalWrite(CSpin, HIGH); digitalWrite(CSpin, LOW);//decode 8 digits SPI.transfer(0x09); SPI.transfer(0x0F); //Code B decode for digits 3–0 No decode for digits 7–4. Was 0xFF digitalWrite(CSpin, HIGH); for (int i = 1; i < 9; i++) {//set all digits OFF digitalWrite(CSpin, LOW);//digit 0 SPI.transfer(i); SPI.transfer(0x0F); digitalWrite(CSpin, HIGH); } digitalWrite(CSpin, LOW);//intensity MIN SPI.transfer(0x0A); SPI.transfer(0x00); digitalWrite(CSpin, HIGH); digitalWrite(CSpin, LOW);//scan limit - all 8 SPI.transfer(0x0B); SPI.transfer(0x07); //was 0x07 for all 8 digitalWrite(CSpin, HIGH); digitalWrite(CSpin, LOW);//digit 0 SPI.transfer(0x08); SPI.transfer(0x67); //P digitalWrite(CSpin, HIGH); delay(150); digitalWrite(CSpin, LOW);//digit 0 SPI.transfer(0x07); SPI.transfer(0x5B); //S digitalWrite(CSpin, HIGH); delay(150); digitalWrite(CSpin, LOW);//digit 0 SPI.transfer(0x06); SPI.transfer(0x06); //I 30 / 06 digitalWrite(CSpin, HIGH); delay(150); //digitalWrite(CSpin, LOW);//digit 0 //SPI.transfer(0x05); //SPI.transfer(0x01); //digitalWrite(CSpin, HIGH); //delay(500); } void loop() { //Serial.begin(9600); int sensorVal=analogRead(A1); float voltage = (sensorVal*5.0)/1024.0; float pressure_pascal = (3.0*((float)voltage-0.47))*1000000.0; float pressure_bar = pressure_pascal/10e5; int pressure_psi=pressure_bar*14.5038; //was float //Serial.print("BARS = "); //Serial.print(pressure_bar); //Serial.println(" bars"); //Serial.print("PSI = "); //Serial.println(pressure_psi); // Serial.print("Pressure = "); //delay(100); /*===============================================================*/ displayCounter(); if(pressure_psi >= 1){ counterValue=pressure_psi; }else{ counterValue=1; } // for (byte num = 0; num < 10; num++) { // for (byte i = 1; i < 9; i++) { // digitalWrite(CSpin, LOW);//digit 0 // SPI.transfer(i); // SPI.transfer(num); // digitalWrite(CSpin, HIGH); // delay(1); // } // delay(500); // } } void displayCounter() { unsigned long digitsCounter = counterValue; for (int i = 0; i < 4; i++) { digits[i] = digitsCounter % 10; if(counterValue< pow(10,i))// 1, 10, 100, 1000.... digits[i] = 0x0F; digitsCounter /= 10; //PORTD &= ~(1<<CSpin); //SPI.transfer(0x05); //SPI.transfer(0x01); //PORTD |= (1<<CSpin); //delay(150); PORTD &= ~(1<<CSpin); SPI.transfer(0x05); SPI.transfer(0x01); // - PORTD |= (1<<CSpin); delay(500); PORTD &= ~(1<<CSpin); SPI.transfer(0x05); SPI.transfer(0x00); // blank PORTD |= (1<<CSpin); delay(500); PORTD &= ~(1<<CSpin); SPI.transfer(i + 1); SPI.transfer(digits[i]); PORTD |= (1<<CSpin); delay(150); } //delay(150); }