Ejemplo para pantalla LCD, codigo:
#include <LiquidCrystal.h> // Incluimos la librería
// Iniciamos la librería con los pines necesarios.
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LiquidCrystal(rs, enable, d4, d5, d6, d7).
void setup() {
lcd.begin(16, 2); // Configuramos el número de columnas y de filas del LCD.
lcd.noDisplay(); // No mostraremos ningún carácter en el LCD.
lcd.print("Hola Amigos y Mundo!"); // Imprimimos el mensaje.
delay(2000); // Esperamos dos segundos.
lcd.display(); // Mostramos los caracteres del LCD.
}
void loop() {
}
Ejemplo2 , LED intermitente. codigo.
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // elLED en (HIGH esta en ensendido)
delay(1000); // tiempo de sensendido
digitalWrite(13, LOW); // en apagado LOW
delay(1000); // tiempo de apagado
}
Ejemplo3 sensor de temperatura DS3231, codigo.
#include <Wire.h>
#include "ds3231.h"
#include "rtc_ds3231.h"
#include <LiquidCrystal.h>
Lcd LiquidCrystal (8,9,4,5,6,7);
#define BUFF_MAX 128
tiempo uint8_t [8];
RECV char [BUFF_MAX];
unsigned int recv_size = 0;
unsigned long anterior, intervalo = 1,000;
void setup ()
{
Serial.begin (9600);
Wire.begin ();
DS3231_init (DS3231_INTCN);
memset (a recv, 0, BUFF_MAX);
Serial.println ("GET tiempo");
lcd.begin (16, 2);
lcd.clear ();
Tiempo //Serial.println("Setting ");
// Parse_cmd ("T302911604102014", 16);
}
void loop ()
{
charlas en;
Char tempF [6];
flotar temperatura;
buff char [BUFF_MAX];
unsigned long ahora = millis ();
struct ts t;
// Mostrar el tiempo de vez en cuando
if ((ahora - prev> intervalo) && (Serial.available () <= 0)) {
DS3231_get (& t); // Obtener el tiempo
parse_cmd ("C", 1);
temperatura = DS3231_get_treg (); // Obtener la temperatura
dtostrf (temperatura, 5, 1, tempF);
lcd.clear ();
lcd.setCursor (1,0);
lcd.print (t.mday);
printMonth (t.mon);
lcd.print (t.año);
lcd.setCursor (0,1); // Ir a la segunda línea de la pantalla LCD
lcd.print (t.hour);
lcd.print (":");
si (t.min <10)
{
lcd.print ("0");
}
lcd.print (t.min);
lcd.print (":");
si (t.sec <10)
{
lcd.print ("0");
}
lcd.print (t.sec);
lcd.print ('');
lcd.print (tempF);
lcd.print ((char) 223);
lcd.print ("C");
prev = ahora;
}
si (Serial.available ()> 0) {
en Serial.read = ();
if ((en == 10 || en == 13) && (recv_size> 0)) {
parse_cmd (a recv, recv_size);
recv_size = 0;
RECV [0] = 0;
} Else if (en <48 || en> 122) {; // Ignorar ~ [0-9A-Za-z]
} Else if (recv_size> BUFF_MAX - 2) {// líneas de derivación que son demasiado largos
// Gota
recv_size = 0;
RECV [0] = 0;
} Else if (recv_size <BUFF_MAX - 2) {
RECV [recv_size] = en;
RECV [recv_size + 1] = 0;
recv_size + = 1;
}
}
}
parse_cmd void (char * cmd, int cmdsize)
{
uint8_t i;
reg_val uint8_t;
buff char [BUFF_MAX];
struct ts t;
// Snprintf (piel de ante, BUFF_MAX "cmd era '% s'% d \ n", cmd, cmdsize);
//Serial.print(buff);
// Tiempo TssmmhhWDDMMYYYY establecer aka
si (cmd [0] == 84 && cmdsize == 16) {
// T355720619112011
t.sec = inp2toi (cmd, 1);
t.min = inp2toi (cmd, 3);
t.hour = inp2toi (cmd, 5);
t.wday = inp2toi (cmd, 7);
t.mday = inp2toi (cmd, 8);
t.mon = inp2toi (cmd, 10);
t.año = inp2toi (cmd, 12) * 100 + inp2toi (cmd, 14);
DS3231_set (t);
Serial.println ("OK");
} Else if (cmd [0] == 49 == 1 && cmdsize) {// "1" conseguir alarma 1
DS3231_get_a1 (y buff [0], 59);
Serial.println (buff);
} Else if (cmd [0] == 50 == 1 && cmdsize) {// "2" conseguir alarma 1
DS3231_get_a2 (y buff [0], 59);
Serial.println (buff);
} Else if (cmd [0] == 51 == 1 && cmdsize) {// "3" obtener registro de envejecimiento
Serial.print ("envejecimiento reg es");
Serial.println (DS3231_get_aging (), DEC);
} Else if (cmd [0] == 65 && cmdsize == 9) {// "A" alarma set 1
DS3231_set_creg (DS3231_INTCN | DS3231_A1IE);
// ASSMMHHDD
for (i = 0; i <4; i ++) {
tiempo [i] = (cmd [2 * i + 1] - 48) * 10 + cmd [2 * i + 2] - 48; // Ss, mm, hh, dd
}
banderas booleanas [5] = {0, 0, 0, 0, 0};
DS3231_set_a1 (tiempo [0], el tiempo [1], el tiempo [2], el tiempo [3], banderas);
DS3231_get_a1 (y buff [0], 59);
Serial.println (buff);
} Else if (cmd [0] == 66 && cmdsize == 7) {// "B" Set Alarm 2
DS3231_set_creg (DS3231_INTCN | DS3231_A2IE);
// BMMHHDD
for (i = 0; i <4; i ++) {
tiempo [i] = (cmd [2 * i + 1] - 48) * 10 + cmd [2 * i + 2] - 48; // Mm, hh, dd
}
banderas booleanas [5] = {0, 0, 0, 0};
DS3231_set_a2 (tiempo [0], el tiempo [1], el tiempo [2], banderas);
DS3231_get_a2 (y buff [0], 59);
Serial.println (buff);
} Else if (cmd [0] == 67 == 1 && cmdsize) {// "C" - obtener el registro de temperatura
Serial.print ("temperatura reg es");
Serial.println (DS3231_get_treg (), DEC);
} Else if (cmd [0] == 68 == 1 && cmdsize) {// "D" - restablecer banderas de alarma del registro de estado
reg_val = DS3231_get_sreg ();
reg_val & = B11111100;
DS3231_set_sreg (reg_val);
} Else if (cmd [0] == 70 == 1 && cmdsize) {// "F" - fct personalizada
reg_val = DS3231_get_addr (0x5);
Serial.print ("orig");
Serial.print (reg_val, DEC);
Serial.print ("mes es");
Serial.println (bcdtodec (reg_val y 0x1F), DEC);
} Else if (cmd [0] == 71 == 1 && cmdsize) {// "G" - conjunto de envejecimiento registro de estado
DS3231_set_aging (0);
} Else if (cmd [0] == 83 == 1 && cmdsize) {// "S" - obtener el estado de registro
Serial.print ("status reg es");
Serial.println (DS3231_get_sreg (), DEC);
} Else {
Serial.print ("prefijo de comando desconocido");
Serial.println (cmd [0]);
Serial.println (cmd [0], DEC);
}
}
anular printMonth (int mes)
{
switch (meses)
{
caso 1: lcd.print ("Enero"); break;
caso 2: lcd.print ("febrero"); break;
caso 3: lcd.print ("Marcha"); break;
caso 4: lcd.print ("Abril"); break;
caso 5: lcd.print ("mayo"); break;
caso 6: lcd.print ("Junio"); break;
Caso 7: lcd.print ("Julio"); break;
caso 8: lcd.print ("Agosto"); break;
caso 9: lcd.print ("Septiembre"); break;
caso 10: lcd.print ("Octubre"); break;
caso 11: lcd.print ("Noviembre"); break;
caso 12: lcd.print ("Diciembre"); break;
default: lcd.print ("Error"); break;
}
}
No hay comentarios.:
Publicar un comentario