first commit
This commit is contained in:
commit
b986f5950f
11
README.md
Normal file
11
README.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Sistema de control de Espejos abatibles con arduino
|
||||
|
||||
### Caracteristicas
|
||||
- Conectado a pulso de apertura y cierre de seguros
|
||||
- Basado en Arduino
|
||||
|
||||
|
||||
## Diagramas de flujo
|
||||
|
||||

|
||||
|
212
espejos-abatibles/espejos-abatibles.ino
Normal file
212
espejos-abatibles/espejos-abatibles.ino
Normal file
@ -0,0 +1,212 @@
|
||||
/*****************************************
|
||||
* Espejos abatibles *
|
||||
* Controlado por: *
|
||||
* Ignición *
|
||||
* Cierre de seguros *
|
||||
* 15/08/2021 *
|
||||
* Versión 0.1.0 *
|
||||
* koneko.mx *
|
||||
*****************************************/
|
||||
|
||||
/*
|
||||
PIN Uso Color Board Notas
|
||||
1 Detección de ignición Morado A3 Divisor de tención, entrada 12v
|
||||
2 Cerrar seguros Amarillo A4 SDA Divisor de tención, entrada 12v
|
||||
3 Tierra Negro GND
|
||||
4 NC Rosa A5 SCL
|
||||
5 Alimentación 9-24V Rojo VCC
|
||||
6 Abrir espejos Verde D3 INT1 PWM Optoacoplador con pulso de salida a tierra
|
||||
7 NC 5V
|
||||
8 Cerrar espejos Cafe D5 PWM Optoacoplador con pulso de salida a tierra
|
||||
*/
|
||||
|
||||
#include <EEPROM.h>
|
||||
|
||||
/**************************************************
|
||||
* Definición de Constantes
|
||||
**************************************************/
|
||||
// PINOUT
|
||||
#define IGNITION_PIN A3 // Morado
|
||||
#define SAFETY_CLOSURE_PULSE_PIN A5 // Amarillo
|
||||
#define MIRROR_CLOSURE_PIN 5 // Cafe
|
||||
#define MIRROR_OPENING_PIN 3 // Verde
|
||||
|
||||
// EEPROM_MEMORY ADDRESSES
|
||||
#define STATUS_MIRRORS_EEPROM_POINTER_EEPROM_ADDRESS 0
|
||||
|
||||
// MEMORY ACCESS
|
||||
#define ALL_SETTINGS 0
|
||||
#define STATUS_MIRRORS_EEPROM_POINTER 1
|
||||
#define MIRRORS_STATUS 2
|
||||
|
||||
// ESTADOS
|
||||
#define MIRROR_CLOSED 1
|
||||
#define MIRROR_OPEN 0
|
||||
|
||||
#define ON 1
|
||||
#define OFF 0
|
||||
|
||||
// Parametros de funcionamiento
|
||||
#define MILLISECONDS_OF_ACTUATORS 1900
|
||||
#define IGNITION_VALUE_MIN 32
|
||||
#define SAFETY_CLOSURE_PULSE_VALUE_MIN 230
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Debug
|
||||
* Define DEBUG_SERIAL_ENABLE to enable debug serial.
|
||||
* Comment it to disable debug serial.
|
||||
**************************************************/
|
||||
#define DEBUG_SERIAL_ENABLE
|
||||
|
||||
#define dbSerial Serial
|
||||
|
||||
#ifdef DEBUG_SERIAL_ENABLE
|
||||
#define serialPrint(a) dbSerial.print(a)
|
||||
#define serialPrintln(a) dbSerial.println(a)
|
||||
#define serialBegin(a) dbSerial.begin(a)
|
||||
#define serialBeginWhile(a) while(!dbSerial) delay(1)
|
||||
#else
|
||||
#define serialPrint(a) do{}while(0)
|
||||
#define serialPrintln(a) do{}while(0)
|
||||
#define serialBegin(a) do{}while(0)
|
||||
#define serialBeginWhile(a) do{}while(0)
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************************
|
||||
* ENVIRONMENT VARIABLES
|
||||
**************************************************/
|
||||
// Estado de los espejos
|
||||
uint8_t mirrors_status;
|
||||
uint8_t ignition_status;
|
||||
uint8_t safety_closure_pulse_status;
|
||||
|
||||
// Puntero de bucle de EEPROM
|
||||
uint8_t status_mirrors_eeprom_pointer;
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Mirror Control loop methods
|
||||
**************************************************/
|
||||
void Load_vars_from_eeprom_memory(uint8_t _setting)
|
||||
{
|
||||
switch(_setting){
|
||||
case ALL_SETTINGS:
|
||||
Load_vars_from_eeprom_memory(STATUS_MIRRORS_EEPROM_POINTER);
|
||||
Load_vars_from_eeprom_memory(MIRRORS_STATUS);
|
||||
break;
|
||||
|
||||
case STATUS_MIRRORS_EEPROM_POINTER:
|
||||
status_mirrors_eeprom_pointer = EEPROM.read(STATUS_MIRRORS_EEPROM_POINTER_EEPROM_ADDRESS);
|
||||
|
||||
serialPrint("status_mirrors_eeprom_pointer: ");
|
||||
serialPrintln(status_mirrors_eeprom_pointer);
|
||||
break;
|
||||
|
||||
case MIRRORS_STATUS:
|
||||
mirrors_status = EEPROM.read(status_mirrors_eeprom_pointer);
|
||||
|
||||
serialPrint("mirrors_status: ");
|
||||
serialPrintln(mirrors_status);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t get_ignition_status(){
|
||||
uint8_t ignition_value = digitalRead(IGNITION_PIN);
|
||||
|
||||
if(ignition_value){
|
||||
serialPrint("ignition_value On");
|
||||
}
|
||||
|
||||
return ignition_value?
|
||||
ON:
|
||||
OFF;
|
||||
}
|
||||
|
||||
uint8_t get_safety_closure_pulse_status(){
|
||||
uint8_t safety_closure_pulse_value = analogRead(SAFETY_CLOSURE_PULSE_PIN);
|
||||
|
||||
|
||||
if(safety_closure_pulse_value > SAFETY_CLOSURE_PULSE_VALUE_MIN){
|
||||
serialPrint("safety_closure: ");
|
||||
serialPrintln(safety_closure_pulse_value);
|
||||
|
||||
}
|
||||
|
||||
|
||||
return safety_closure_pulse_value > SAFETY_CLOSURE_PULSE_VALUE_MIN?
|
||||
ON:
|
||||
OFF;
|
||||
}
|
||||
|
||||
void set_mirrors_status(uint8_t _mirrors_status){
|
||||
EEPROM.write(status_mirrors_eeprom_pointer, _mirrors_status);
|
||||
|
||||
mirrors_status = _mirrors_status;
|
||||
}
|
||||
|
||||
void open_mirrors(){
|
||||
serialPrintln("open_mirrors()");
|
||||
|
||||
digitalWrite(MIRROR_OPENING_PIN, HIGH);
|
||||
|
||||
delay(MILLISECONDS_OF_ACTUATORS);
|
||||
|
||||
digitalWrite(MIRROR_OPENING_PIN, LOW);
|
||||
|
||||
set_mirrors_status(MIRROR_OPEN);
|
||||
}
|
||||
|
||||
void close_mirrors(){
|
||||
serialPrintln("close_mirrors()");
|
||||
|
||||
digitalWrite(MIRROR_CLOSURE_PIN, HIGH);
|
||||
|
||||
delay(MILLISECONDS_OF_ACTUATORS);
|
||||
|
||||
digitalWrite(MIRROR_CLOSURE_PIN, LOW);
|
||||
|
||||
set_mirrors_status(MIRROR_CLOSED);
|
||||
}
|
||||
|
||||
// Loop principal
|
||||
void ignition_listening_loop()
|
||||
{
|
||||
ignition_status = get_ignition_status();
|
||||
safety_closure_pulse_status = get_safety_closure_pulse_status();
|
||||
|
||||
if(ignition_status == ON && mirrors_status == MIRROR_CLOSED)
|
||||
open_mirrors();
|
||||
|
||||
if(ignition_status == OFF && safety_closure_pulse_status == ON && mirrors_status == MIRROR_OPEN)
|
||||
close_mirrors();
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Setup & Loops
|
||||
**************************************************/
|
||||
void setup()
|
||||
{
|
||||
pinMode(IGNITION_PIN, INPUT);
|
||||
pinMode(SAFETY_CLOSURE_PULSE_PIN, INPUT);
|
||||
pinMode(MIRROR_CLOSURE_PIN, OUTPUT);
|
||||
pinMode(MIRROR_OPENING_PIN, OUTPUT);
|
||||
|
||||
// Salida Serial
|
||||
serialBegin(57600);
|
||||
serialBeginWhile();
|
||||
|
||||
//EEPROM.write(0, 1);
|
||||
//EEPROM.write(1, 1);
|
||||
|
||||
// Cargamos variables de la EEPROM a la ram
|
||||
Load_vars_from_eeprom_memory(ALL_SETTINGS);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
ignition_listening_loop();
|
||||
}
|
BIN
images/diagrama de flujo.jpeg
Normal file
BIN
images/diagrama de flujo.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 132 KiB |
Loading…
x
Reference in New Issue
Block a user