Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #DAVID PHUYAL PROJECT CAR
- #include <HardwareSerial.h>
- #include <Wire.h>
- #include "ABlocks_LiquidCrystal_I2C.h"
- #include <ABLocks_TimerFreeTone.h>
- #include <Adafruit_CCS811.h>
- #include <Servo.h>
- #include "ABlocks_Button.h"
- #include "ABlocks_DHT.h"
- double temperatura;
- double comando;
- double humedad;
- double comando_pwm;
- double nivel_ldr;
- String s_datos;
- boolean b_auto_ldr;
- boolean b_auto_mov;
- boolean b_sensor_mov;
- HardwareSerial &bt_serial=Serial;
- LiquidCrystal_I2C lcd_1(0x27,16,2);
- byte lcd_1_customchar_0[8]={B00000,B00100,B01010,B10001,B00100,B01010,B00000,B00100};
- String rtt_melody_17=":d=4,o=5,b=140:8e6,8d#6,8e6,8d#6,8e6,8b,8d6,8c6,a,8p,8c,8e,8a,b,8p,8e,8g#,8b,c6";
- String rtt_melody_16=":d=4,o=5,b=120:8p,16a,16f,16a,16c6,16b,16a,16g,16a,16g,8e,16g,16g,16g,16g,8a,16b,32c6,32b,32c6,32b,32c6,32b,8c6";
- Adafruit_CCS811 sensor_ccs811;
- unsigned long sensor_ccs811_lastread=0;
- double sensor_ccs811_co2_ppm=0.0;
- double sensor_ccs811_co2_mgm3=0.0;
- double sensor_ccs811_co2_tvoc_ppb=0.0;
- Servo servo_10;
- Servo servo_9;
- unsigned long task_time_ms=0;
- Button button_debounced_4(4,50);
- Button button_debounced_8(8,50);
- DHT dhtA0(A0,DHT22);
- double fnc_ccs811_data(int _type)
- {
- double v=0.0;
- if((millis()-sensor_ccs811_lastread)>=1000){
- if(sensor_ccs811.available() && (!sensor_ccs811.readData()) ){
- //update new values from sensor
- sensor_ccs811_co2_ppm=((double)sensor_ccs811.geteCO2());
- sensor_ccs811_co2_mgm3=((double)sensor_ccs811_co2_ppm*(double)1.8);
- sensor_ccs811_co2_tvoc_ppb=((double)sensor_ccs811.getTVOC());
- sensor_ccs811_lastread=millis();
- }
- else{
- //error reading sensor, reset values...
- sensor_ccs811_co2_ppm=0.0;
- sensor_ccs811_co2_mgm3=0.0;
- sensor_ccs811_co2_tvoc_ppb=0.0;
- }
- }
- //return value
- if(_type==0)v=sensor_ccs811_co2_ppm;
- if(_type==1)v=sensor_ccs811_co2_tvoc_ppb;
- if(_type==2)v=sensor_ccs811_co2_mgm3;
- return v;
- }
- void comandos_BT() {
- if ((bt_serial.available()>0)) {
- comando = bt_serial.read();
- comandos_PWM();
- if ((comando == ('a'))) {
- digitalWrite(13,HIGH);
- }
- else if ((comando == ('b'))) {
- digitalWrite(13,LOW);
- }
- else if ((comando == ('c'))) {
- digitalWrite(12,HIGH);
- }
- else if ((comando == ('d'))) {
- digitalWrite(12,LOW);
- }
- else if ((comando == ('e'))) {
- TimerFreeToneRtttl(3,(const char *)rtt_melody_17.c_str());
- }
- else if ((comando == ('f'))) {
- TimerFreeToneRtttl(3,(const char *)rtt_melody_16.c_str());
- }
- else if ((comando == ('h'))) {
- bt_serial.println(analogRead(A1));
- }
- else if ((comando == ('i'))) {
- bt_serial.println(fnc_ccs811_data(0));
- }
- else if ((comando == ('j'))) {
- bt_serial.println(analogRead(A2));
- }
- else if ((comando == ('k'))) {
- bt_serial.println(analogRead(A3));
- }
- else if ((comando == ('l'))) {
- servo_10.write(180);
- }
- else if ((comando == ('m'))) {
- servo_10.write(0);
- }
- else if ((comando == ('n'))) {
- servo_9.write(180);
- }
- else if ((comando == ('o'))) {
- servo_9.write(0);
- }
- else if ((comando == ('p'))) {
- digitalWrite(5,HIGH);
- }
- else if ((comando == ('q'))) {
- digitalWrite(5,LOW);
- }
- else if ((comando == ('r'))) {
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- }
- else if ((comando == ('s'))) {
- digitalWrite(6,LOW);
- digitalWrite(7,LOW);
- }
- }
- }
- void comandos_PWM() {
- if ((comando == ('t'))) {
- s_datos = bt_serial.readStringUntil(('#'));
- comando_pwm = String(s_datos).toFloat();
- servo_10.write(comando_pwm);
- }
- else if ((comando == ('u'))) {
- s_datos = bt_serial.readStringUntil(('#'));
- comando_pwm = String(s_datos).toFloat();
- servo_9.write(comando_pwm);
- }
- else if ((comando == ('v'))) {
- s_datos = bt_serial.readStringUntil(('#'));
- comando_pwm = String(s_datos).toFloat();
- analogWrite(5,comando_pwm);
- }
- else if ((comando == ('w'))) {
- s_datos = bt_serial.readStringUntil(('#'));
- comando_pwm = String(s_datos).toFloat();
- digitalWrite(7, LOW);
- analogWrite(6, comando_pwm);
- }
- }
- void modo_automatico() {
- if (button_debounced_4.pressed()) {
- b_auto_ldr = (!b_auto_ldr);
- lcd_1.clear();
- lcd_1.setCursor(0, 0);
- lcd_1.print(String("Auto LDR: "));
- lcd_1.setCursor(0, 1);
- lcd_1.print(b_auto_ldr);
- delay(2000);
- }
- if (button_debounced_8.pressed()) {
- b_auto_mov = (!b_auto_mov);
- lcd_1.clear();
- lcd_1.setCursor(0, 0);
- lcd_1.print(String("Auto MOV:"));
- lcd_1.setCursor(0, 1);
- lcd_1.print(b_auto_mov);
- delay(2000);
- }
- b_sensor_mov = digitalRead(2);
- if (b_auto_mov) {
- if (b_sensor_mov) {
- digitalWrite(13,HIGH);
- }
- else {
- digitalWrite(13,LOW);
- }
- }
- nivel_ldr = analogRead(A1);
- if (b_auto_ldr) {
- if ((nivel_ldr < 200)) {
- digitalWrite(5,HIGH);
- }
- else {
- digitalWrite(5,LOW);
- }
- }
- }
- void saludo_LCD() {
- lcd_1.clear();
- lcd_1.setCursor(0, 0);
- lcd_1.print(String("Maleta Innov 4.0"));
- lcd_1.setCursor(0, 1);
- lcd_1.print(String("Smart Home IoT"));
- }
- void info_LCD() {
- temperatura = dhtA0.readTemperature();
- humedad = dhtA0.readHumidity();
- lcd_1.clear();
- lcd_1.setCursor(0, 0);
- lcd_1.print(String("Temp (C): "));
- lcd_1.setCursor(10, 0);
- lcd_1.print((String(temperatura,1)));
- lcd_1.setCursor(0, 1);
- lcd_1.print(String("Hum. (%):"));
- lcd_1.setCursor(10, 1);
- lcd_1.print((String(humedad,0)));
- if (b_sensor_mov) {
- lcd_1.setCursor(15, 1);
- lcd_1.write((byte)0);
- }
- }
- void setup()
- {
- pinMode(13, OUTPUT);
- pinMode(12, OUTPUT);
- pinMode(3, OUTPUT);
- pinMode(A1, INPUT);
- pinMode(A2, INPUT);
- pinMode(A3, INPUT);
- servo_10.attach(10);
- servo_9.attach(9);
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(4, INPUT);
- pinMode(8, INPUT);
- pinMode(2, INPUT);
- pinMode(A0, INPUT);
- bt_serial.begin(9600);
- sensor_ccs811.begin();
- dhtA0.begin();
- lcd_1.begin();
- lcd_1.noCursor();
- lcd_1.backlight();
- lcd_1.createChar(0, lcd_1_customchar_0);
- saludo_LCD();
- }
- void loop()
- {
- comandos_BT();
- modo_automatico();
- if((millis()-task_time_ms)>=5000){
- task_time_ms=millis();
- info_LCD();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement