Go Down

Topic: Bluetooth works with Uno but not Leonardo (Read 1 time) previous topic - next topic

arishy

Here is the code
Code: [Select]
/*
  PROJECT: ArduDroid
  PROGRAMMER: Hazim Bitar (techbitar at gmail dot com)
  DATE: Oct 31, 2013
  FILE: ardudroid.ino
  LICENSE: Public domain
  use https://zadig.akeo.ie/  for usbasp driver
*/

#define START_CMD_CHAR '*'
#define END_CMD_CHAR '#'
#define DIV_CMD_CHAR '|'
#define CMD_DIGITALWRITE 10
#define CMD_ANALOGWRITE 11
#define CMD_TEXT 12
#define CMD_READ_ARDUDROID 13
#define MAX_COMMAND 20  // max command number code. used for error checking.
#define MIN_COMMAND 10  // minimum command number code. used for error checking.
#define IN_STRING_LENGHT 40
#define MAX_ANALOGWRITE 255
#define PIN_HIGH 3
#define PIN_LOW 2

String inText;

void setup() {
  Serial.begin(9600);
  Serial.println("ArduDroid 0.12 Alpha by TechBitar (2013)");
  Serial.flush();
}

void loop()
{
  Serial.flush();
  int ard_command = 0;
  int pin_num = 0;
  int pin_value = 0;

  char get_char = ' ';  //read serial

  // wait for incoming data
  if (Serial.available() < 1) return; // if serial empty, return to loop().

  // parse incoming command start flag
  get_char = Serial.read();
  if (get_char != START_CMD_CHAR) return; // if no command start flag, return to loop().

  // parse incoming command type
  ard_command = Serial.parseInt(); // read the command

  // parse incoming pin# and value
  pin_num = Serial.parseInt(); // read the pin
  pin_value = Serial.parseInt();  // read the value

  // 1) GET TEXT COMMAND FROM ARDUDROID
  if (ard_command == CMD_TEXT) {
    inText = ""; //clears variable for new input
    while (Serial.available())  {
      char c = Serial.read();  //gets one byte from serial buffer
      delay(5);
      if (c == END_CMD_CHAR) { // if we the complete string has been read
        // add your code here
        break;
      }
      else {
        if (c !=  DIV_CMD_CHAR) {
          inText += c;
          delay(5);
        }
      }
    }
  }

  // 2) GET digitalWrite DATA FROM ARDUDROID
  if (ard_command == CMD_DIGITALWRITE) {
    if (pin_value == PIN_LOW) pin_value = LOW;
    else if (pin_value == PIN_HIGH) pin_value = HIGH;
    else return; // error in pin value. return.
    set_digitalwrite( pin_num,  pin_value);  // Uncomment this function if you wish to use
    return;  // return from start of loop()
  }

  // 3) GET analogWrite DATA FROM ARDUDROID
  if (ard_command == CMD_ANALOGWRITE) {
    analogWrite(  pin_num, pin_value );
    // add your code here
    return;  // Done. return to loop();
  }

  // 4) SEND DATA TO ARDUDROID
  if (ard_command == CMD_READ_ARDUDROID) {
    // char send_to_android[] = "Place your text here." ;
    // Serial.println(send_to_android);   // Example: Sending text
    Serial.print(" Analog 0 = ");
    Serial.println(analogRead(A0));  // Example: Read and send Analog pin value to Arduino
    return;  // Done. return to loop();
  }
}

// 2a) select the requested pin# for DigitalWrite action
void set_digitalwrite(int pin_num, int pin_value)
{
  switch (pin_num) {
    case 13:
      pinMode(13, OUTPUT);
      digitalWrite(13, pin_value);
      // add your code here
      break;
    case 12:
      pinMode(12, OUTPUT);
      digitalWrite(12, pin_value);
      // add your code here
      break;
    case 11:
      pinMode(11, OUTPUT);
      digitalWrite(11, pin_value);
      // add your code here
      break;
    case 10:
      pinMode(10, OUTPUT);
      digitalWrite(10, pin_value);
      // add your code here
      break;
    case 9:
      pinMode(9, OUTPUT);
      digitalWrite(9, pin_value);
      // add your code here
      break;
    case 8:
      pinMode(8, OUTPUT);
      digitalWrite(8, pin_value);
      // add your code here
      break;
    case 7:
      pinMode(7, OUTPUT);
      digitalWrite(7, pin_value);
      // add your code here
      break;
    case 6:
      pinMode(6, OUTPUT);
      digitalWrite(6, pin_value);
      // add your code here
      break;
    case 5:
      pinMode(5, OUTPUT);
      digitalWrite(5, pin_value);
      // add your code here
      break;
    case 4:
      pinMode(4, OUTPUT);
      digitalWrite(4, pin_value);
      // add your code here
      break;
    case 3:
      pinMode(3, OUTPUT);
      digitalWrite(3, pin_value);
      // add your code here
      break;
    case 2:
      pinMode(2, OUTPUT);
      digitalWrite(2, pin_value);
      // add your code here
      break;
      // default:
      // if nothing else matches, do the default
      // default is optional
  }
}


Same wiring same code.
BUt no response from Leonardo.
The Leonardo works with blink, so it is OK

I am using USBESP to upload to Leonardo ( It has broken USB micro)

I cannot use Serial Terminal to debug.....

Needles to say , I am using D0,D1 for the bluetooth Tx and RX (reversed).

Any help will really be appreciated

ballscrewbob

I would put it down to using the serial pins 0 and 1.
You may have to use another serial method to get off those pins.

Bob.

It may not be the answer you were looking for but its the one I am giving based on either experience, educated guess, google or the fact that you gave nothing to go with in the first place so I used my wonky crystal ball.

arishy

If I assume that Both boards use Rx and TX the same way then why it is not working with Leonardo.
I know it is working with UNO.
We need to know how RX and TX is different in Leonardo
Someone with Leonardo experience can tell me how to fix the code to work with Leonardo

sterretje

#3
Nov 29, 2019, 06:00 pm Last Edit: Nov 29, 2019, 06:01 pm by sterretje
On the Leonardo, rx and tx are Serial1.

And FYI, they are not shared with the USB communication.
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

arishy

sterretje:

I went ahead and tried to prove your quotation:
Quote
If you understand an example, use it.
If you don't understand an example, don't use it.
And I am happy to say; it was a success.!!!!

Thank you ...all... for your help

Go Up