/*
# Sesión 30: Actividad eje
# Andrés Rodríguez Cantú ─ Daniela Mendez Rivas
#
# Copyright (C) Tecnologico de Monterrey
#
# Archivo: eje-main.ino
#
# Datos del programa (Sin contar la consola de debugging)
# Almacenamiento: 7658 (23%) / 32,256 bytes
# RAM (Globales): 734 (35%) / 2,048 bytes
#
# Creado: 08/01/2024
# Última Modificación: 20/04/2024
*/
/* Librerias de componentes */
#include <Wire.h>
#include <OneWire.h> // [Wokwi]
#include <DallasTemperature.h> // [Wokwi]
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
/* Librerias de Aplicaciones */
#include "OS.h"
OS_DUO OS;
/* Definiciones de componentes */
#define B_VOL A0
#define B_TMP A1
#define B_PHS A2
#define B_IZQ 2
#define B_ARR 3
#define B_ABJ 4
#define B_DER 5
#define B_SEL 6
#define B_SHF 7
#define B_BUZ 8
/* Setup de librerias */
Servo servo;
OneWire oneWire(B_TMP);
DallasTemperature TMP(&oneWire);
/* Declare the LiquidCrystal_I2C object */
LiquidCrystal_I2C lcd(0x27, 20, 4);
/* Variables Globales */
int POSx;
int POSy = 1;
float gradosC;
double voltage;
double resistencia;
/* Variables Externas */
extern int frame;
void setup() {
lcd.init();
lcd.backlight();
pinMode(B_BUZ, INPUT);
TMP.begin();
servo.attach(9);
Serial.begin(9600);
}
void loop() {
/* Setup de Librerias */
TMP.requestTemperatures();
/* Lectura del Hardware */
int B_IZQ_R = digitalRead(B_IZQ); // Lectura del botón Izquierdo
int B_ARR_R = digitalRead(B_ARR); // Lectura del botón Arriba
int B_ABJ_R = digitalRead(B_ABJ); // Lectura del botón Abajo
int B_DER_R = digitalRead(B_DER); // Lectura del botón Derecho
int B_SEL_R = digitalRead(B_SEL); // Lectura del botón Seleccionar
int B_SHF_R = digitalRead(B_SHF); // Lectura del botón Shift
int B_VOL_R = analogRead(B_VOL); // Lectura del potenciometro Volumen
float A_PHS_R = analogRead(B_PHS); // Lectura del sensor de Fotoresistencia
//float B_TMP_R = analogRead(B_TMP); // [Tinkercad] Lectura del sensor de Temperatura
/* Variables Locales */
voltage = A_PHS_R / 1024. * 5;
resistencia = 2000 * voltage / (1 - voltage / 5);
double B_PHS_R = pow(50 * 1e3 * pow(10, 0.7) / resistencia, (1 / 0.7));
gradosC = TMP.getTempCByIndex(0); // [Wokwi] Lectura del sensor de Temperatura
/* Código Loop */
OS.LCD_START();
if (frame >= 27 ) {
if (B_ABJ_R == 1) {
OS.crearCaracter(p_icons, 5, 7, 4);
POSy += 1;
}
if (B_ARR_R == 1) {
OS.crearCaracter(p_icons, 5, 7, 4);
POSy -= 1;
}
if (POSy == 4) {
POSy = 1;
}
if (POSy == 0) {
POSy = 3;
}
lcd.createChar(POSy + 4, p_hover_icons[(POSy)]);
}
Serial.println(frame);
delay(160);
/* Debugging */
//Serial.println("IZQ: " + String(B_IZQ_R) + "\nARR: " + String(B_ARR_R) + "\nABJ: " + String(B_ABJ_R) + "\nDER: " + String(B_DER_R) + "\nSEL: " + String(B_SEL_R) + "\nSHF: " + String(B_SHF_R) + "\nVOL: " + String(B_VOL_R) + "\nTMP: " + String(gradosC) + "C\nPHS: " + String(B_PHS_R) + "\n");
}
Loading
ds18b20
ds18b20