<h1>DHT22 and 4 Digit 7 Segment LED Display</h1> <p>Tutorial written by Daniil Orlov.</p> <i>In this tutorial we will be going through on how to connect and display celsius from DHT22 sensor to a 4 digit 7 segment display.</i> ----------------------------------------------------------------------- ![](https://xn--pcktb1c2c9f.140er.club/la2NICKuWk.jpg) ---------------------------------------*image of expected end result*-------------------------------------- <h2>Materials needed</h2> 1x Arduino uno R3. 1x 4 Digit 7 segment led display (in my case i used LS-80432CR). 1x DHT22 sensor. As well as some common wires from any standard arduino set. 1x Breadboard <h2>Circuit diagram </h2> <p>(if you need you can zoom in to see where everything goes).</p> ![](https://xn--pcktb1c2c9f.140er.club/OpARNQa59Q.png) <h2>Tutorial</h2> *Step 1:* Follow the wiring from the circuit diagram above. *Step 2:* Download and install arduino <a href="https://www.arduino.cc/en/software">here</a> *Step 3:* Make sure you download and install the latest drivers for arduino, you can find it <a href="https://www.arduino.cc/en/Guide/ArduinoUno">here</a> *Step 4:* Download the code or copy it bellow. *Step 5:* Start the .ino file you just downloaded or start the arduino program and paste in the code from bellow. *Step 6:* Double check if you have the right port selected. (Located in tools>port>the one you use for arduino). *Step 7:* Run the code ![](https://xn--pcktb1c2c9f.140er.club/FSgYNWVdwV.png) *Now it should be working.* <h2>The Code</h2> <a href="https://xn--pcktb1c2c9f.140er.club/temperaturet.ino">Quick download here </a>) ```c= int sensorPin = 0; //display pins int segA = 2; int segB = 3; int segC = 4; int segD = 5; int segE = 6; int segF = 7; int segG = 8; int segPt = 13; int d1 = 9; int d2 = 10; int d3 = 11; int d4 = 12; int delayTime = 900; int counter = 0; float temperature = 77.7; void setup() { //start serial communications Serial.begin(9600); //set up outputs pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(9, OUTPUT); pinMode(8, OUTPUT); pinMode(7, OUTPUT); pinMode(6, OUTPUT); pinMode(5, OUTPUT); pinMode(4, OUTPUT); pinMode(3, OUTPUT); pinMode(2, OUTPUT); pinMode(13, OUTPUT); pinMode(0,INPUT); delay(1000); } void loop() { if(counter%500 == 0) { // read the pin int reading = analogRead(sensorPin); //convert reading to volts float volts = (reading * 5.0); volts /= 1024.0; // Serial.print(volts); // Serial.println(" v"); temperature = volts * 100.0; Serial.print(temperature); Serial.println(" degrees Celsius"); //test output to display // allHigh(); //reset our counter counter = 0; } counter ++; selectDigit(1); sendDigit(tens(temperature)); delayMicroseconds(delayTime); digitalWrite(d1, HIGH); selectDigit(2); sendDigit(ones(temperature)); point(); delayMicroseconds(delayTime); digitalWrite(d2, HIGH); selectDigit(3); sendDigit(points(temperature)); delayMicroseconds(delayTime); //turn point off digitalWrite(d3, HIGH); digitalWrite(segPt,HIGH); selectDigit(4); cee(); delayMicroseconds(delayTime); digitalWrite(d4, HIGH); } void allLow() { digitalWrite( 13, LOW); // A digitalWrite( 2, LOW); // B digitalWrite( 3, LOW); // C digitalWrite(4, LOW); // D digitalWrite(5, LOW); // E digitalWrite( 6, LOW); // F digitalWrite( 7, LOW); // G digitalWrite(8, LOW); //point digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); } void allHigh() { digitalWrite( 13, HIGH); // A digitalWrite( 2, HIGH); // B digitalWrite( 3, HIGH); // C digitalWrite(4, HIGH); // D digitalWrite(5, HIGH); // E digitalWrite( 6, HIGH); // F digitalWrite( 7, HIGH); // G digitalWrite(8, HIGH); //point digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); } void one() { digitalWrite(segA, LOW); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); digitalWrite(segPt, LOW); } void two() { digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, LOW); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, LOW); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void three() { digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void four() { digitalWrite(segA, LOW); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void five() { digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void six() { digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void seven() { digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); digitalWrite(segPt, LOW); } void eight() { digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void nine() { digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); digitalWrite(segPt, LOW); } void zero() { digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, LOW); digitalWrite(segPt, LOW); } void cee() { digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, LOW); digitalWrite(segPt, LOW); } void point() { digitalWrite(segPt, HIGH); } void selectDigit(int d) { /* digitalWrite(d1,HIGH); digitalWrite(d2,HIGH); digitalWrite(d3,HIGH); digitalWrite(d4,HIGH); */ switch (d) { case 1: digitalWrite(d1, LOW); break; case 2: digitalWrite(d2, LOW); break; case 3: digitalWrite(d3, LOW); break; default: digitalWrite(d4, LOW); break; } } void sendDigit(int x) { switch(x) { case 1: one(); break; case 2: two(); break; case 3: three(); break; case 4: four(); break; case 5: five(); break; case 6: six(); break; case 7: seven(); break; case 8: eight(); break; case 9: nine(); break; case 10: cee(); break; default: zero(); break; } } int tens(float x) { float divided = x/10.0; return (int)divided; } int ones(float x) { float divided = x - (10.0 * tens(x)); // Serial.print(divided); // Serial.println(" ***ones***"); return (int)divided; } int points(float x) { float divided = x - (10.0 * tens(x)) - ones(x); divided *= 10; return (int)divided; } ```