Advertisement
Jdus

COCHE CODIGO ARDUINOBLOCKS

May 2nd, 2024
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.06 KB | Source Code | 0 0
  1. #DAVID PHUYAL PROJECT CAR
  2. #include <HardwareSerial.h>
  3. #include <Wire.h>
  4. #include "ABlocks_LiquidCrystal_I2C.h"
  5. #include <ABLocks_TimerFreeTone.h>
  6. #include <Adafruit_CCS811.h>
  7. #include <Servo.h>
  8.  
  9. #include "ABlocks_Button.h"
  10. #include "ABlocks_DHT.h"
  11.  
  12. double temperatura;
  13. double comando;
  14. double humedad;
  15. double comando_pwm;
  16. double nivel_ldr;
  17. String s_datos;
  18. boolean b_auto_ldr;
  19. boolean b_auto_mov;
  20. boolean b_sensor_mov;
  21. HardwareSerial &bt_serial=Serial;
  22. LiquidCrystal_I2C lcd_1(0x27,16,2);
  23. byte lcd_1_customchar_0[8]={B00000,B00100,B01010,B10001,B00100,B01010,B00000,B00100};
  24.  
  25. 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";
  26. 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";
  27. Adafruit_CCS811 sensor_ccs811;
  28. unsigned long sensor_ccs811_lastread=0;
  29. double sensor_ccs811_co2_ppm=0.0;
  30. double sensor_ccs811_co2_mgm3=0.0;
  31. double sensor_ccs811_co2_tvoc_ppb=0.0;
  32. Servo servo_10;
  33. Servo servo_9;
  34. unsigned long task_time_ms=0;
  35.  
  36. Button button_debounced_4(4,50);
  37.  
  38. Button button_debounced_8(8,50);
  39.  
  40. DHT dhtA0(A0,DHT22);
  41.  
  42. double fnc_ccs811_data(int _type)
  43. {
  44.     double v=0.0;
  45.     if((millis()-sensor_ccs811_lastread)>=1000){
  46.         if(sensor_ccs811.available() && (!sensor_ccs811.readData()) ){
  47.             //update new values from sensor
  48.             sensor_ccs811_co2_ppm=((double)sensor_ccs811.geteCO2());
  49.             sensor_ccs811_co2_mgm3=((double)sensor_ccs811_co2_ppm*(double)1.8);
  50.             sensor_ccs811_co2_tvoc_ppb=((double)sensor_ccs811.getTVOC());
  51.             sensor_ccs811_lastread=millis();
  52.         }
  53.         else{
  54.             //error reading sensor, reset values...
  55.             sensor_ccs811_co2_ppm=0.0;
  56.             sensor_ccs811_co2_mgm3=0.0;
  57.             sensor_ccs811_co2_tvoc_ppb=0.0;
  58.         }
  59.     }
  60.     //return value
  61.     if(_type==0)v=sensor_ccs811_co2_ppm;
  62.     if(_type==1)v=sensor_ccs811_co2_tvoc_ppb;
  63.     if(_type==2)v=sensor_ccs811_co2_mgm3;
  64.  
  65.     return v;
  66. }
  67.  
  68. void comandos_BT() {
  69.     if ((bt_serial.available()>0)) {
  70.         comando = bt_serial.read();
  71.         comandos_PWM();
  72.         if ((comando == ('a'))) {
  73.             digitalWrite(13,HIGH);
  74.         }
  75.         else if ((comando == ('b'))) {
  76.             digitalWrite(13,LOW);
  77.         }
  78.         else if ((comando == ('c'))) {
  79.             digitalWrite(12,HIGH);
  80.         }
  81.         else if ((comando == ('d'))) {
  82.             digitalWrite(12,LOW);
  83.         }
  84.         else if ((comando == ('e'))) {
  85.             TimerFreeToneRtttl(3,(const char *)rtt_melody_17.c_str());
  86.         }
  87.         else if ((comando == ('f'))) {
  88.             TimerFreeToneRtttl(3,(const char *)rtt_melody_16.c_str());
  89.         }
  90.         else if ((comando == ('h'))) {
  91.             bt_serial.println(analogRead(A1));
  92.         }
  93.         else if ((comando == ('i'))) {
  94.             bt_serial.println(fnc_ccs811_data(0));
  95.         }
  96.         else if ((comando == ('j'))) {
  97.             bt_serial.println(analogRead(A2));
  98.         }
  99.         else if ((comando == ('k'))) {
  100.             bt_serial.println(analogRead(A3));
  101.         }
  102.         else if ((comando == ('l'))) {
  103.             servo_10.write(180);
  104.         }
  105.         else if ((comando == ('m'))) {
  106.             servo_10.write(0);
  107.         }
  108.         else if ((comando == ('n'))) {
  109.             servo_9.write(180);
  110.         }
  111.         else if ((comando == ('o'))) {
  112.             servo_9.write(0);
  113.         }
  114.         else if ((comando == ('p'))) {
  115.             digitalWrite(5,HIGH);
  116.         }
  117.         else if ((comando == ('q'))) {
  118.             digitalWrite(5,LOW);
  119.         }
  120.         else if ((comando == ('r'))) {
  121.             digitalWrite(6,HIGH);
  122.             digitalWrite(7,LOW);
  123.         }
  124.         else if ((comando == ('s'))) {
  125.             digitalWrite(6,LOW);
  126.             digitalWrite(7,LOW);
  127.         }
  128.  
  129.     }
  130.  
  131. }
  132. void comandos_PWM() {
  133.     if ((comando == ('t'))) {
  134.         s_datos = bt_serial.readStringUntil(('#'));
  135.         comando_pwm = String(s_datos).toFloat();
  136.         servo_10.write(comando_pwm);
  137.     }
  138.     else if ((comando == ('u'))) {
  139.         s_datos = bt_serial.readStringUntil(('#'));
  140.         comando_pwm = String(s_datos).toFloat();
  141.         servo_9.write(comando_pwm);
  142.     }
  143.     else if ((comando == ('v'))) {
  144.         s_datos = bt_serial.readStringUntil(('#'));
  145.         comando_pwm = String(s_datos).toFloat();
  146.         analogWrite(5,comando_pwm);
  147.     }
  148.     else if ((comando == ('w'))) {
  149.         s_datos = bt_serial.readStringUntil(('#'));
  150.         comando_pwm = String(s_datos).toFloat();
  151.         digitalWrite(7, LOW);
  152.         analogWrite(6, comando_pwm);
  153.     }
  154.  
  155. }
  156. void modo_automatico() {
  157.     if (button_debounced_4.pressed()) {
  158.         b_auto_ldr = (!b_auto_ldr);
  159.         lcd_1.clear();
  160.         lcd_1.setCursor(0, 0);
  161.         lcd_1.print(String("Auto LDR: "));
  162.         lcd_1.setCursor(0, 1);
  163.         lcd_1.print(b_auto_ldr);
  164.         delay(2000);
  165.     }
  166.  
  167.     if (button_debounced_8.pressed()) {
  168.         b_auto_mov = (!b_auto_mov);
  169.         lcd_1.clear();
  170.         lcd_1.setCursor(0, 0);
  171.         lcd_1.print(String("Auto MOV:"));
  172.         lcd_1.setCursor(0, 1);
  173.         lcd_1.print(b_auto_mov);
  174.         delay(2000);
  175.     }
  176.  
  177.     b_sensor_mov = digitalRead(2);
  178.     if (b_auto_mov) {
  179.         if (b_sensor_mov) {
  180.             digitalWrite(13,HIGH);
  181.         }
  182.         else {
  183.             digitalWrite(13,LOW);
  184.         }
  185.  
  186.     }
  187.  
  188.     nivel_ldr = analogRead(A1);
  189.     if (b_auto_ldr) {
  190.         if ((nivel_ldr < 200)) {
  191.             digitalWrite(5,HIGH);
  192.         }
  193.         else {
  194.             digitalWrite(5,LOW);
  195.         }
  196.  
  197.     }
  198.  
  199. }
  200. void saludo_LCD() {
  201.     lcd_1.clear();
  202.     lcd_1.setCursor(0, 0);
  203.     lcd_1.print(String("Maleta Innov 4.0"));
  204.     lcd_1.setCursor(0, 1);
  205.     lcd_1.print(String("Smart Home IoT"));
  206. }
  207. void info_LCD() {
  208.     temperatura = dhtA0.readTemperature();
  209.     humedad = dhtA0.readHumidity();
  210.     lcd_1.clear();
  211.     lcd_1.setCursor(0, 0);
  212.     lcd_1.print(String("Temp (C): "));
  213.     lcd_1.setCursor(10, 0);
  214.     lcd_1.print((String(temperatura,1)));
  215.     lcd_1.setCursor(0, 1);
  216.     lcd_1.print(String("Hum. (%):"));
  217.     lcd_1.setCursor(10, 1);
  218.     lcd_1.print((String(humedad,0)));
  219.     if (b_sensor_mov) {
  220.         lcd_1.setCursor(15, 1);
  221.         lcd_1.write((byte)0);
  222.     }
  223.  
  224. }
  225.  
  226. void setup()
  227. {
  228.     pinMode(13, OUTPUT);
  229.     pinMode(12, OUTPUT);
  230.     pinMode(3, OUTPUT);
  231.     pinMode(A1, INPUT);
  232.     pinMode(A2, INPUT);
  233.     pinMode(A3, INPUT);
  234.     servo_10.attach(10);
  235.     servo_9.attach(9);
  236.     pinMode(5, OUTPUT);
  237.     pinMode(6, OUTPUT);
  238.     pinMode(7, OUTPUT);
  239.     pinMode(4, INPUT);
  240.     pinMode(8, INPUT);
  241.     pinMode(2, INPUT);
  242.     pinMode(A0, INPUT);
  243.  
  244. bt_serial.begin(9600);
  245.     sensor_ccs811.begin();
  246.  
  247.     dhtA0.begin();
  248.  
  249.     lcd_1.begin();
  250.     lcd_1.noCursor();
  251.     lcd_1.backlight();
  252.     lcd_1.createChar(0, lcd_1_customchar_0);
  253.     saludo_LCD();
  254.  
  255. }
  256.  
  257.  
  258. void loop()
  259. {
  260.  
  261.     comandos_BT();
  262.     modo_automatico();
  263.     if((millis()-task_time_ms)>=5000){
  264.         task_time_ms=millis();
  265.         info_LCD();
  266.     }
  267.  
  268. }
Tags: cotxe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement