From 5469244ca5a4316d4fbbef3834f2a731416b4808 Mon Sep 17 00:00:00 2001 From: Ricardo_lap Date: Tue, 16 Oct 2018 22:15:02 +0100 Subject: [PATCH] Got arduino to respond to bluetooth commands sent from android. Show values back on android and turn on and off load. --- firmware/v01/v01.ino | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/firmware/v01/v01.ino b/firmware/v01/v01.ino index 9d9bb4e..8572c6d 100644 --- a/firmware/v01/v01.ino +++ b/firmware/v01/v01.ino @@ -9,6 +9,7 @@ Tue Jun 12 14:56:12 GMT 2018 *********************************************************************/ // Libraries to be included, non native libraries need to be included in the Makefile +#include #include // Handles the connection and communications with the LCD display #include // Handles the SPI connection to the SD card #include // Handles communication routines with the SD card @@ -47,6 +48,7 @@ LiquidCrystal lcd(7, 6, 2, 3, 4, 5); // LCD screen pins, LiquidCrystal(rs, enabl #define no 0 // no is always zero #define yes 1 // yes is alyays one File myFile; // Initiate the object File to write in the SD card +SoftwareSerial mySerial(BLUE_RX, BLUE_TX); // Start file descriptor and assign pins to bluetooth module //------------------------------------------------------------------------------------------------- @@ -64,6 +66,7 @@ bool sd_inserted = no; // Holds the state if sd card is in or not int sd_status = sd_not_in; // Holds information about the sd card int currentScreen = 0; // Current display menu +char ble_data = 'Z'; // String with the menus to be displayed String screens[numOfScreens][2] = {{"Voltage 1","Volts"}, {"Voltage 2","Volts"}, @@ -78,6 +81,7 @@ float parameters[4]; // Parameters of the several voltages and curre float denominator; // Denominator to calculate the voltage divider int resistor1 = 22000; // Resistor one of voltage divider int resistor2 = 2200; // Resistor two of voltage divider +static char outstr[15]; // ----------------------------------------------------------------------------------------------- @@ -101,6 +105,9 @@ void setup() lcd.begin(16, 2); // Start LCD display with 16 characters and 2 lines + mySerial.begin(9600); // Start serial connection to bluetooth module + Serial.begin(9600); // For debug only + // Voltage divider --> Vout = Vin * R2 / R1 + R2 denominator = (float)resistor2 / (resistor1 + resistor2); @@ -139,6 +146,34 @@ ISR(TIMER1_COMPA_vect) load_status = off; // Turn off load } digitalWrite(load_line, load_status); // Turn load on or off depending on the load_status + + if (mySerial.available()) { + ble_data = mySerial.read(); + Serial.write(mySerial.read()); + if (ble_data == 'A') { + dtostrf(parameters[battery_volt], 5, 2, outstr); + mySerial.write(outstr); + } + if (ble_data == 'B') { + dtostrf(parameters[voltage_1], 5, 2, outstr); + mySerial.write(outstr); + } + if (ble_data == 'C') { + dtostrf(parameters[voltage_2], 5, 2, outstr); + mySerial.write(outstr); + } + if (ble_data == 'D') { + dtostrf(parameters[curr], 5, 2, outstr); + mySerial.write(outstr); + } + if (ble_data == 'E') { + load_status = on; + } + if (ble_data == 'F') { + load_status = off; + } + } + } //------------------------------------------- @@ -150,13 +185,19 @@ void loop() parameters[voltage_2] = volt_pin(volt_2); // Update voltage two value parameters[curr] = amp_pin(i_load); // Update current load + + + + Serial.write(ble_data); // For debug only + if (sd_inserted == no) // If sd_rw value is turned on { sd_status = sd_not_in; } else if (sd_rw == on) { - myFile = SD.open(file_name + ".TXT", FILE_WRITE); // Open file name and add ".TXT", for writing + myFile = SD.open(file_name + ".TXT", FILE_WRITE); // Open file name and add ".TXT", + // for writing if (myFile) // if succeds { myFile.print("Batt voltage, ");