Paso 8: Programa Arduino
Conectar el ordenador a Arduino con la conexión de FTDI y subir el programa del termistor (programa fuente incluida aquí compuesto por partes de muestras en línea)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int Ai5 = A5;
int Value5;
Boolean hb = alta;
int hbCNT = 0;
int digit1 = 10; 11; Pin PWM pantalla 1
digit2 int = 11; 10; Pin PWM pantalla 2
segD INT = 12; A1; // 5; Pin de pantalla 3
no utilizado 13; Pin 4
segE int = A0; A0; Pin de pantalla 5
int digit3 = A1; 12; // 9; Pin PWM pantalla 6
dp3 int = A2; // 9; 12;
Paso 11-7 segmento inferior
Confirmar el que ajuste de los pernos en el display de 7 segmentos en los orificios de la parte inferior delantera de Arduino.
int digit4 = A3; 13; // 6; Pin PWM pantalla 8
segB int = 9; // 3; Pin de la pantalla 16
segG int = 8; Pin de pantalla 15
segA int = 7; 5; A1; Pin de pantalla 14
segC int = 6; // 4; Pin de pantalla 13
no utilizar 5; pin 12
int segF = 4; // 7; // 7; Pin de pantalla 11
int dphb = 3; A3; PIN 10
GND / / pin 9
void setup() {}
pinMode (segA, salida);
pinMode (segB, salida);
pinMode (segC, salida);
pinMode (segD, salida);
pinMode (segE, salida);
pinMode (segF, salida);
pinMode (segG, salida);
pinMode (digit1, salida);
pinMode (digit2, salida);
pinMode (digit3, salida);
pinMode (digit4, salida);
pinMode (dp3, salida);
pinMode(Ai5,INPUT);
Serial.Begin(9600);
Serial.println();
}
void loop()
{
Mostrar temperatura
displayNumber(Value5);
Mostrar los latidos del corazón
Si (! () hb hbCNT 100%)) =! hb;
temp de consulta
Si (hbCNT ++ > 300)
{
hbCNT = 1;
almacenar el valor de la resistencia de termistor
Value5 = analogRead(Ai5); Lea el valor de AI1 (pin2) y escribir a valor1
Serial.Print(Value5);
Serial.Print ("[]");
Serial.Print (1000 / (float (1023/float(Value5)) -1));
flotador de steinhart, media;
promedio = 1023 / float(Value5) - 1;
promedio = 10000 / media;
Steinhart = media / 1000; (R/Ro)
Steinhart = log(steinhart); LN(R/RO)
Steinhart = 3636; 1/B * ln(R/Ro)
Steinhart += 1.0 / (25 + 273.15); + (1/a)
Steinhart = 1.0 / steinhart; Invertir
Serial.Print ("[]");
Serial.Print(Average);
Serial.Print ("[k]");
Serial.Print (steinhart); //kelvin
Serial.Print ("[c]"); //celcius
Steinhart-= 273.15;
Serial.Print(Steinhart);
Serial.Print ("[f]"); //fahrn
Steinhart steinhart de = * 9 / 5 + 32;
Serial.Print(Steinhart);
Serial.Print("|||");
Value5 = steinhart * 10;
Serial.println(Value5);
}
}
void displayNumber (int toDisplay) {}
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON alta
#define DIGIT_OFF bajo
beginTime largo = millis();
para (int cifras = 4; cifra > 0; dígitos--) {}
digitalWrite (dp3, HIGH);
Encienda un dígito durante un corto periodo de tiempo
{Switch(digit)}
caso 1:
digitalWrite (digit1, DIGIT_ON);
rotura;
caso 2:
digitalWrite (digit2, DIGIT_ON);
rotura;
caso 3:
digitalWrite (digit3, DIGIT_ON);
digitalWrite (dp3,! hb);
rotura;
caso 4:
digitalWrite (digit4, DIGIT_ON);
rotura;
}
digitalWrite (dphb,! hb);
Encender los segmentos adecuados para este dígito
lightNumber (toDisplay % 10);
toDisplay = 10;
delayMicroseconds(DISPLAY_BRIGHTNESS); Mostrar este número durante una fracción de segundo (entre 1 y 5000us, 500 es bonito
bueno)
Apaga todos los segmentos
lightNumber(10);
Apague todos los dígitos
digitalWrite (digit1, DIGIT_OFF);
digitalWrite (digit2, DIGIT_OFF);
digitalWrite (digit3, DIGIT_OFF);
digitalWrite (digit4, DIGIT_OFF);
}
mientras que ((millis() - beginTime) < 10); Espera de 20ms antes pintamos la pantalla otra vez
}
Dado un número, se convierte en los segmentos
Si número == 10, luego apague el número
void lightNumber (int numberToDisplay) {}
#define SEGMENT_ON bajo
#define SEGMENT_OFF alta
interruptor (numberToDisplay) {}
caso 0:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_OFF);
rotura;
caso 1:
digitalWrite (segA, SEGMENT_OFF);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_OFF);
rotura;
caso 2:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_OFF);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 3:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 4:
digitalWrite (segA, SEGMENT_OFF);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 5:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_OFF);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 6:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_OFF);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 7:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_OFF);
rotura;
caso 8:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 9:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
rotura;
caso 10:
digitalWrite (segA, SEGMENT_OFF);
digitalWrite (segB, SEGMENT_OFF);
digitalWrite (segC, SEGMENT_OFF);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_OFF);
rotura;
}
}