Ciao a tutti, sono nuovo del mondoArduino e sto cercando di creare un termometro con 3 display 7 segmenti. Ho trovato in rete questo circuito:
sto cercando di adattarlo alle mie esigenze e con questo codice riesco a leggere solo le prime due cifre
questo e il codice che sto usando
#include <math.h>
void setup()
{
pinMode(10, OUTPUT); // Segment C, Pin 7
pinMode(9, OUTPUT); // Segment G, Pin 1
pinMode(8, OUTPUT); // Segment B, Pin 9
pinMode(7, OUTPUT); // Segment D, Pin 5
pinMode(6, OUTPUT); // Segment F, Pin 2
pinMode(5, OUTPUT); // Segment A, Pin 10
pinMode(4, OUTPUT); // Segment E, Pin 4
pinMode(3, OUTPUT); // Display 3
pinMode(2, OUTPUT); // Display 2
pinMode(1, OUTPUT); // Display 1
}
void Zero() // A, B, C, D, E, F
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(7, HIGH); // Segment D
digitalWrite(4, HIGH); // Segment E
digitalWrite(6, HIGH); // Segment F
digitalWrite(9, LOW); // Segment G
}
void One() // B, C
{
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(5, LOW); // Segment A
digitalWrite(7, LOW); // Segment D
digitalWrite(4, LOW); // Segment E
digitalWrite(6, LOW); // Segment F
digitalWrite(9, LOW); // Segment G
}
void Two() // A, B, D, E, G
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(8, HIGH); // Segment B
digitalWrite(7, HIGH); // Segment D
digitalWrite(4, HIGH); // Segment E
digitalWrite(9, HIGH); // Segment G
digitalWrite(10, LOW); // Segment C
digitalWrite(6, LOW); // Segment F
}
void Three() // A, B, C, D, G
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(7, HIGH); // Segment D
digitalWrite(9, HIGH); // Segment G
digitalWrite(4, LOW); // Segment E
digitalWrite(6, LOW); // Segment F
}
void Four() // B, C, F, G
{
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(6, HIGH); // Segment F
digitalWrite(9, HIGH); // Segment G
digitalWrite(5, LOW); // Segment A
digitalWrite(7, LOW); // Segment D
digitalWrite(4, LOW); // Segment E
}
void Five() // A, C, D, F, G
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(10, HIGH); // Segment C
digitalWrite(7, HIGH); // Segment D
digitalWrite(6, HIGH); // Segment F
digitalWrite(9, HIGH); // Segment G
digitalWrite(8, LOW); // Segment B
digitalWrite(4, LOW); // Segment E
}
void Six() // A, C, D, E, F, G
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(10, HIGH); // Segment C
digitalWrite(7, HIGH); // Segment D
digitalWrite(4, HIGH); // Segment E
digitalWrite(6, HIGH); // Segment F
digitalWrite(9, HIGH); // Segment G
digitalWrite(8, LOW); // Segment B
}
void Seven() // A, B, C
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(7, LOW); // Segment D
digitalWrite(4, LOW); // Segment E
digitalWrite(6, LOW); // Segment F
digitalWrite(9, LOW); // Segment G
}
void Eight() // A, B, C, D, E, F, G
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(7, HIGH); // Segment D
digitalWrite(4, HIGH); // Segment E
digitalWrite(6, HIGH); // Segment F
digitalWrite(9, HIGH); // Segment G
}
void Nine() // A, B, C, F, G
{
digitalWrite(5, HIGH); // Segment A
digitalWrite(8, HIGH); // Segment B
digitalWrite(10, HIGH); // Segment C
digitalWrite(6, HIGH); // Segment F
digitalWrite(9, HIGH); // Segment G
digitalWrite(7, LOW); // Segment D
digitalWrite(4, LOW); // Segment E
}
void Blank()
{
digitalWrite(10, LOW); // Segment C
digitalWrite(9, LOW); // Segment G
digitalWrite(8, LOW); // Segment B
digitalWrite(7, LOW); // Segment D
digitalWrite(6, LOW); // Segment F
digitalWrite(5, LOW); // Segment A
digitalWrite(4, LOW); // Segment E
}
void displayDigit(int digit)
{
if (digit == 0){
Zero();
}
else if (digit == 1){
One();
}
else if (digit == 2){
Two();
}
else if (digit == 3){
Three();
}
else if (digit == 4){
Four();
}
else if (digit == 5){
Five();
}
else if (digit == 6){
Six();
}
else if (digit == 7){
Seven();
}
else if (digit == 8){
Eight();
}
else if (digit == 9){
Nine();
}
else{
Blank();
}
}
double Thermistor(int RawADC){
double Temp;
// See http://en.wikipedia.org/wiki/Thermistor for explanation of formula
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Convert Kelvin to Celcius
return Temp;
}
void loop()
{
int count = 0;
int displayLoop = 25;
int digOne;
int digTwo;
int ThermistorInput = A0;
int ThermistorValue = 0;
double fTemp; // Temp in degrees Fahrenheit
double temp;
while(count < 10){
// Read thermistor and determine temperature in degrees F
temp = Thermistor(analogRead(ThermistorInput)); // Read thermistor value
fTemp = (temp * 1.8) + 32 - 7; // Convert degrees C to F
// Split two digit fTemp variable into individual digits to display
digOne = fTemp / 10; // Determine what to display for digit # 1
digTwo = fTemp - digOne*10; // Determine what to display for digit # 2
// Alternate between displaying each digit for 10 mS
while (displayLoop > 0){
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
displayDigit(digOne);
delay(10);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
displayDigit(digTwo);
delay(10);
displayLoop --;
}
displayLoop = 250;
}
count = 0; // Reset counter */
}
C'e qualcuno che puo darmi una mano? con l'elettronica non ho grossi problemi ma con i codici abbastanza ![]()
Grazie
Ciaooo