TMP36 and 4-digit 7-segment display
Simple temperature reading and displaying it on the 7-segment project.
Components and supplies
1
Jumper wires (generic)
1
Temperature Sensor
1
Breadboard (generic)
4
Resistor 1k ohm
1
Arduino UNO
1
4-digit 7-segment display
Apps and platforms
1
Arduino IDE
Project description
Code
Code:
arduino
1/* Using the TMP36 sensor to take temperature readings, 2 display it on the 4 digit 7 segment. 3 4 Components: 5 - Arduino Uno 6 - TMP36 temperature sensor 7 - 4 digit 7 segment display 8 - 1kOhm resistor (x 4) 9 10 Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf 11 12 Created on 10 June 2022 by c010rblind3ngineer 13*/ 14 15int pinA = 11; 16int pinB = 7; 17int pinC = 4; 18int pinD = 2; 19int pinE = 1; 20int pinF = 10; 21int pinG = 5; 22int pinDP = 3; 23 24int D1 = 12; 25int D2 = 9; 26int D3 = 8; 27int D4 = 6; 28 29int sensorPin = 0; 30float supplyVoltage = 5; 31 32void setup() { 33 // put your setup code here, to run once: 34 pinMode(pinA, OUTPUT); //11 35 pinMode(pinB, OUTPUT); //7 36 pinMode(pinC, OUTPUT); //4 37 pinMode(pinD, OUTPUT); //2 38 pinMode(pinE, OUTPUT); //1 39 pinMode(pinF, OUTPUT); //10 40 pinMode(pinG, OUTPUT); //5 41 pinMode(D1, OUTPUT); //12 42 pinMode(D2, OUTPUT); //9 43 pinMode(D3, OUTPUT); //8 44 pinMode(D4, OUTPUT); //6 45 46} 47 48void loop() { 49 // get voltage reading from TMP36 50 int reading = analogRead(sensorPin); 51 52 // convert the reading to voltage 53 float voltage = reading * supplyVoltage / 1024; 54 55 // convert voltage to temperature 56 float tempC = (voltage - 0.5) * 100; // we need to convert from 10mV per degreee with 0.5V offset 57 58 // display temperature digits on 4 digit 7 segment display 59 int tempd1 = int(tempC / 10); 60 int tempd2 = int((int)tempC % 10); 61 62 // 'for' loop ensures the display is constantly ON within a period of time (approx. 10s)... 63 // ...before sensor takes another reading. 64 // Temperature reading 65 for (int i = 0; i < 2000; i++) { 66 digitalWrite(D1, LOW); 67 digitalWrite(D2, HIGH); 68 digitalWrite(D3, HIGH); 69 digitalWrite(D4, HIGH); 70 disp(tempd1); 71 delay(1); 72 73 digitalWrite(D1, HIGH); 74 digitalWrite(D2, LOW); 75 digitalWrite(D3, HIGH); 76 digitalWrite(D4, HIGH); 77 disp(tempd2); 78 delay(1); 79 80 digitalWrite(D1, HIGH); 81 digitalWrite(D2, HIGH); 82 digitalWrite(D3, LOW); 83 digitalWrite(D4, HIGH); 84 disp(11); 85 delay(1); 86 87 digitalWrite(D1, HIGH); 88 digitalWrite(D2, HIGH); 89 digitalWrite(D3, HIGH); 90 digitalWrite(D4, LOW); 91 disp(10); 92 delay(1); 93 } 94 displayoff(); 95 delay(1000); 96 97} 98 99void disp(int number) { 100 101 switch (number) { 102 case 0 : // display '0' on 7 segment 103 digitalWrite(pinA, HIGH); 104 digitalWrite(pinB, HIGH); 105 digitalWrite(pinC, HIGH); 106 digitalWrite(pinD, HIGH); 107 digitalWrite(pinE, HIGH); 108 digitalWrite(pinF, HIGH); 109 digitalWrite(pinG, LOW); 110 break; 111 112 case 1 : // display '1' on 7 segment 113 digitalWrite(pinA, LOW); 114 digitalWrite(pinB, HIGH); 115 digitalWrite(pinC, HIGH); 116 digitalWrite(pinD, LOW); 117 digitalWrite(pinE, LOW); 118 digitalWrite(pinF, LOW); 119 digitalWrite(pinG, LOW); 120 break; 121 122 case 2 : // display '2' on 7 segment 123 digitalWrite(pinA, HIGH); 124 digitalWrite(pinB, HIGH); 125 digitalWrite(pinC, LOW); 126 digitalWrite(pinD, HIGH); 127 digitalWrite(pinE, HIGH); 128 digitalWrite(pinF, LOW); 129 digitalWrite(pinG, HIGH); 130 break; 131 132 case 3 : // display '3' on 7 segment 133 digitalWrite(pinA, HIGH); 134 digitalWrite(pinB, HIGH); 135 digitalWrite(pinC, HIGH); 136 digitalWrite(pinD, HIGH); 137 digitalWrite(pinE, LOW); 138 digitalWrite(pinF, LOW); 139 digitalWrite(pinG, HIGH); 140 break; 141 142 case 4 : // display '4' on 7 segment 143 digitalWrite(pinA, LOW); 144 digitalWrite(pinB, HIGH); 145 digitalWrite(pinC, HIGH); 146 digitalWrite(pinD, LOW); 147 digitalWrite(pinE, LOW); 148 digitalWrite(pinF, HIGH); 149 digitalWrite(pinG, HIGH); 150 break; 151 152 case 5 : // display '5' on 7 segment 153 digitalWrite(pinA, HIGH); 154 digitalWrite(pinB, LOW); 155 digitalWrite(pinC, HIGH); 156 digitalWrite(pinD, HIGH); 157 digitalWrite(pinE, LOW); 158 digitalWrite(pinF, HIGH); 159 digitalWrite(pinG, HIGH); 160 break; 161 162 case 6 : // display '6' on 7 segment 163 digitalWrite(pinA, HIGH); 164 digitalWrite(pinB, LOW); 165 digitalWrite(pinC, HIGH); 166 digitalWrite(pinD, HIGH); 167 digitalWrite(pinE, HIGH); 168 digitalWrite(pinF, HIGH); 169 digitalWrite(pinG, HIGH); 170 break; 171 172 case 7 : // display '7' on 7 segment 173 digitalWrite(pinA, HIGH); 174 digitalWrite(pinB, HIGH); 175 digitalWrite(pinC, HIGH); 176 digitalWrite(pinD, LOW); 177 digitalWrite(pinE, LOW); 178 digitalWrite(pinF, LOW); 179 digitalWrite(pinG, LOW); 180 break; 181 182 case 8 : // display '8' on 7 segment 183 digitalWrite(pinA, HIGH); 184 digitalWrite(pinB, HIGH); 185 digitalWrite(pinC, HIGH); 186 digitalWrite(pinD, HIGH); 187 digitalWrite(pinE, HIGH); 188 digitalWrite(pinF, HIGH); 189 digitalWrite(pinG, HIGH); 190 break; 191 192 case 9 : // display '9' on 7 segment 193 digitalWrite(pinA, HIGH); 194 digitalWrite(pinB, HIGH); 195 digitalWrite(pinC, HIGH); 196 digitalWrite(pinD, LOW); 197 digitalWrite(pinE, LOW); 198 digitalWrite(pinF, HIGH); 199 digitalWrite(pinG, HIGH); 200 break; 201 202 case 10 : // display 'C' on 7 segment 203 digitalWrite(pinA, HIGH); 204 digitalWrite(pinB, LOW); 205 digitalWrite(pinC, LOW); 206 digitalWrite(pinD, HIGH); 207 digitalWrite(pinE, HIGH); 208 digitalWrite(pinF, HIGH); 209 digitalWrite(pinG, LOW); 210 break; 211 212 case 11 : // display 'o' on 7 segment 213 digitalWrite(pinA, HIGH); 214 digitalWrite(pinB, HIGH); 215 digitalWrite(pinC, LOW); 216 digitalWrite(pinD, LOW); 217 digitalWrite(pinE, LOW); 218 digitalWrite(pinF, HIGH); 219 digitalWrite(pinG, HIGH); 220 break; 221 } 222} 223 224void displayoff() { 225 digitalWrite(D1, HIGH); 226 digitalWrite(D2, HIGH); 227 digitalWrite(D3, HIGH); 228 digitalWrite(D4, HIGH); 229} 230
Repository link:
Repository link:
Code:
arduino
1/* Using the TMP36 sensor to take temperature readings, 2 display it on the 4 digit 7 segment. 3 4 Components: 5 - Arduino Uno 6 - TMP36 temperature sensor 7 - 4 digit 7 segment display 8 - 1kOhm resistor (x 4) 9 10 Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf 11 12 Created on 10 June 2022 by c010rblind3ngineer 13*/ 14 15int pinA = 11; 16int pinB = 7; 17int pinC = 4; 18int pinD = 2; 19int pinE = 1; 20int pinF = 10; 21int pinG = 5; 22int pinDP = 3; 23 24int D1 = 12; 25int D2 = 9; 26int D3 = 8; 27int D4 = 6; 28 29int sensorPin = 0; 30float supplyVoltage = 5; 31 32void setup() { 33 // put your setup code here, to run once: 34 pinMode(pinA, OUTPUT); //11 35 pinMode(pinB, OUTPUT); //7 36 pinMode(pinC, OUTPUT); //4 37 pinMode(pinD, OUTPUT); //2 38 pinMode(pinE, OUTPUT); //1 39 pinMode(pinF, OUTPUT); //10 40 pinMode(pinG, OUTPUT); //5 41 pinMode(D1, OUTPUT); //12 42 pinMode(D2, OUTPUT); //9 43 pinMode(D3, OUTPUT); //8 44 pinMode(D4, OUTPUT); //6 45 46} 47 48void loop() { 49 // get voltage reading from TMP36 50 int reading = analogRead(sensorPin); 51 52 // convert the reading to voltage 53 float voltage = reading * supplyVoltage / 1024; 54 55 // convert voltage to temperature 56 float tempC = (voltage - 0.5) * 100; // we need to convert from 10mV per degreee with 0.5V offset 57 58 // display temperature digits on 4 digit 7 segment display 59 int tempd1 = int(tempC / 10); 60 int tempd2 = int((int)tempC % 10); 61 62 // 'for' loop ensures the display is constantly ON within a period of time (approx. 10s)... 63 // ...before sensor takes another reading. 64 // Temperature reading 65 for (int i = 0; i < 2000; i++) { 66 digitalWrite(D1, LOW); 67 digitalWrite(D2, HIGH); 68 digitalWrite(D3, HIGH); 69 digitalWrite(D4, HIGH); 70 disp(tempd1); 71 delay(1); 72 73 digitalWrite(D1, HIGH); 74 digitalWrite(D2, LOW); 75 digitalWrite(D3, HIGH); 76 digitalWrite(D4, HIGH); 77 disp(tempd2); 78 delay(1); 79 80 digitalWrite(D1, HIGH); 81 digitalWrite(D2, HIGH); 82 digitalWrite(D3, LOW); 83 digitalWrite(D4, HIGH); 84 disp(11); 85 delay(1); 86 87 digitalWrite(D1, HIGH); 88 digitalWrite(D2, HIGH); 89 digitalWrite(D3, HIGH); 90 digitalWrite(D4, LOW); 91 disp(10); 92 delay(1); 93 } 94 displayoff(); 95 delay(1000); 96 97} 98 99void disp(int number) { 100 101 switch (number) { 102 case 0 : // display '0' on 7 segment 103 digitalWrite(pinA, HIGH); 104 digitalWrite(pinB, HIGH); 105 digitalWrite(pinC, HIGH); 106 digitalWrite(pinD, HIGH); 107 digitalWrite(pinE, HIGH); 108 digitalWrite(pinF, HIGH); 109 digitalWrite(pinG, LOW); 110 break; 111 112 case 1 : // display '1' on 7 segment 113 digitalWrite(pinA, LOW); 114 digitalWrite(pinB, HIGH); 115 digitalWrite(pinC, HIGH); 116 digitalWrite(pinD, LOW); 117 digitalWrite(pinE, LOW); 118 digitalWrite(pinF, LOW); 119 digitalWrite(pinG, LOW); 120 break; 121 122 case 2 : // display '2' on 7 segment 123 digitalWrite(pinA, HIGH); 124 digitalWrite(pinB, HIGH); 125 digitalWrite(pinC, LOW); 126 digitalWrite(pinD, HIGH); 127 digitalWrite(pinE, HIGH); 128 digitalWrite(pinF, LOW); 129 digitalWrite(pinG, HIGH); 130 break; 131 132 case 3 : // display '3' on 7 segment 133 digitalWrite(pinA, HIGH); 134 digitalWrite(pinB, HIGH); 135 digitalWrite(pinC, HIGH); 136 digitalWrite(pinD, HIGH); 137 digitalWrite(pinE, LOW); 138 digitalWrite(pinF, LOW); 139 digitalWrite(pinG, HIGH); 140 break; 141 142 case 4 : // display '4' on 7 segment 143 digitalWrite(pinA, LOW); 144 digitalWrite(pinB, HIGH); 145 digitalWrite(pinC, HIGH); 146 digitalWrite(pinD, LOW); 147 digitalWrite(pinE, LOW); 148 digitalWrite(pinF, HIGH); 149 digitalWrite(pinG, HIGH); 150 break; 151 152 case 5 : // display '5' on 7 segment 153 digitalWrite(pinA, HIGH); 154 digitalWrite(pinB, LOW); 155 digitalWrite(pinC, HIGH); 156 digitalWrite(pinD, HIGH); 157 digitalWrite(pinE, LOW); 158 digitalWrite(pinF, HIGH); 159 digitalWrite(pinG, HIGH); 160 break; 161 162 case 6 : // display '6' on 7 segment 163 digitalWrite(pinA, HIGH); 164 digitalWrite(pinB, LOW); 165 digitalWrite(pinC, HIGH); 166 digitalWrite(pinD, HIGH); 167 digitalWrite(pinE, HIGH); 168 digitalWrite(pinF, HIGH); 169 digitalWrite(pinG, HIGH); 170 break; 171 172 case 7 : // display '7' on 7 segment 173 digitalWrite(pinA, HIGH); 174 digitalWrite(pinB, HIGH); 175 digitalWrite(pinC, HIGH); 176 digitalWrite(pinD, LOW); 177 digitalWrite(pinE, LOW); 178 digitalWrite(pinF, LOW); 179 digitalWrite(pinG, LOW); 180 break; 181 182 case 8 : // display '8' on 7 segment 183 digitalWrite(pinA, HIGH); 184 digitalWrite(pinB, HIGH); 185 digitalWrite(pinC, HIGH); 186 digitalWrite(pinD, HIGH); 187 digitalWrite(pinE, HIGH); 188 digitalWrite(pinF, HIGH); 189 digitalWrite(pinG, HIGH); 190 break; 191 192 case 9 : // display '9' on 7 segment 193 digitalWrite(pinA, HIGH); 194 digitalWrite(pinB, HIGH); 195 digitalWrite(pinC, HIGH); 196 digitalWrite(pinD, LOW); 197 digitalWrite(pinE, LOW); 198 digitalWrite(pinF, HIGH); 199 digitalWrite(pinG, HIGH); 200 break; 201 202 case 10 : // display 'C' on 7 segment 203 digitalWrite(pinA, HIGH); 204 digitalWrite(pinB, LOW); 205 digitalWrite(pinC, LOW); 206 digitalWrite(pinD, HIGH); 207 digitalWrite(pinE, HIGH); 208 digitalWrite(pinF, HIGH); 209 digitalWrite(pinG, LOW); 210 break; 211 212 case 11 : // display 'o' on 7 segment 213 digitalWrite(pinA, HIGH); 214 digitalWrite(pinB, HIGH); 215 digitalWrite(pinC, LOW); 216 digitalWrite(pinD, LOW); 217 digitalWrite(pinE, LOW); 218 digitalWrite(pinF, HIGH); 219 digitalWrite(pinG, HIGH); 220 break; 221 } 222} 223 224void displayoff() { 225 digitalWrite(D1, HIGH); 226 digitalWrite(D2, HIGH); 227 digitalWrite(D3, HIGH); 228 digitalWrite(D4, HIGH); 229} 230
Downloadable files
Schematic:
Schematic:

Circuit:
Circuit:

Schematic:
Schematic:

Comments
Only logged in users can leave comments