Paso 7: El código...
/*
Termómetro basado en máximas DS600u + chip + RTC
*/
#include "U8glib.h"
#include < math.h >
#include < Wire.h >
#include < DS1307.h >
int rtc [7];
suministro de flotador = 4,91; Aquí debe ser entrado en la tensión de alimentación medida de la placa arduino
Lea el voltaje de salida del sensor
horas de Char [2];
minutos de Char [2];
segundos de Char [2];
días de Char [2];
meses de Char [2];
años de Char [4];
U8GLIB_ST7920_128X64_4X u8g (8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); Com de 8 bits: D0... D7: 8,9,10,11,4,5,6,7 at = 18, di = 17, rw = 16
void u8g_prepare(void) {}
u8g.SetFont(u8g_font_6x10);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
}
void setup(void) {}
Serial.Begin(9600);
voltear la pantalla, si es necesario
u8g.setRot180();
asignar valor de color por defecto
Si (u8g.getMode() == U8G_MODE_R3G3B2)
u8g.setColorIndex(255); Blanco
else if (u8g.getMode() == U8G_MODE_GRAY2BIT)
u8g.setColorIndex(3); intensidad máxima
else if (u8g.getMode() == U8G_MODE_BW)
u8g.setColorIndex(1); píxel de
u8g.setContrast(0x30);
pinMode (13, salida);
digitalWrite (13, HIGH);
u8g_prepare();
}
void draw(void) {}
u8g.drawFrame(0,0,127,63);
u8g.drawFrame(13,7,103,21);
u8g.drawBox(15,9,99,17);
RTC.get(rtc,true);
u8g.setColorIndex(0);
dtostrf(RTC[2],2,0,hours);
Si (rtc [2] < 10)
{
u8g.drawStr(26,14,"0");
}
u8g.drawStr(26,14,hours);
dtostrf(RTC[1],2,0,minutes);
u8g.drawStr(45,14,":");
Si (rtc [1] < 10)
{
u8g.drawStr(58,14,"0");
}
u8g.drawStr(58,14,minutes);
dtostrf(RTC[0],2,0,seconds);
u8g.drawStr(78,14,":");
Si (rtc [0] < 10)
{
u8g.drawStr(91,14,"0");
}
u8g.drawStr(91,14,seconds);
u8g.setColorIndex(1);
interruptor (rtc [3])
{
caso 1: u8g.drawStr (4,33,"el domingo"); rotura;
caso 2: u8g.drawStr (4,33,"el lunes"); rotura;
caso 3: u8g.drawStr (4,33,"el martes"); rotura;
caso 4: u8g.drawStr(4,33,"Wednesday"); rotura;
caso 5: u8g.drawStr (4,33, "Jueves"); rotura;
caso 6: u8g.drawStr (4,33,"el viernes"); rotura;
caso 7: u8g.drawStr (4,33, "Sábado"); rotura;
}
dtostrf(RTC[4],2,0,Days);
Si (rtc [4] < 10)
{
u8g.drawStr(64,33,"0");
}
u8g.drawStr(64,33,Days);
u8g.drawStr(75,33,".");
dtostrf(RTC[5],2,0,months);
Si (rtc [5] < 10)
{
u8g.drawStr(80,33,"0");
}
u8g.drawStr(80,33,months);
u8g.drawStr(90,33,".");
dtostrf(RTC[6],4,0,years);
u8g.drawStr(96,33,years);
lectura de int = analogRead(0);
Float v_out = (lectura * fuente) / 1.024;
Mostrar en la pantalla LCD la temperatura
Float temperatura = (v_out - 509) / 6.45;
temp de Char [5];
dtostrf(temperature,5,1,Temp);
u8g.drawStr(4,48,"Temperature:");
u8g.drawStr(76,48,Temp);
u8g.drawStr(108,48,"\260C");
}
void loop(void) {}
lazo de la foto
u8g.firstPage();
{}
Draw();
} y (u8g.nextPage());
reconstruir la imagen después de cierto tiempo
Delay(1000);
}
Como veis este código requiere la biblioteca DS1307. He adjuntado esta biblioteca para ayudarle con las confusiones causadas por las diferentes bibliotecas de DS1307 disponibles.
Este parece ser el final del proyecto:-).