Vistas a la página totales

viernes, 30 de octubre de 2015

Ejemplo con Arduino UNO



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