? How to convert this code to work on bluetooth


//Pin connected to ST_CP of 74HC595
int latchPin = 6;
//Pin connected to SH_CP of 74HC595
int clockPin = 13;
////Pin connected to DS of 74HC595
int dataPin = 11;
byte FirstByte;
byte SecondByte;
byte ThirdByte;
byte FourthByte;
byte FifthByte;
int val;
byte serialInArray[5]; // array for storing 3 bytes as they arrive from processing
int serialCount = 0; // for counting the number of bytes received


void setup() {
  //Start Serial for debuging purposes	
  Serial.begin(9600);
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);

}

void loop() {
  
   if (Serial.available() > 0){
       serialInArray[serialCount] = Serial.read(); // read a byte sent by processing
        serialCount++;  // increment number of bytes received

    if (serialCount > 4 ) {  // when 3 bytes received
	FirstByte = serialInArray[0]; // get value for Red LEDs
	SecondByte = serialInArray[1]; // get value for Green LEDs
        ThirdByte = serialInArray[2];
        FourthByte = serialInArray[3];
        FifthByte = serialInArray[4];
Serial.print(FirstByte);
Serial.print(SecondByte);
Serial.print(ThirdByte);
Serial.print(FourthByte);
Serial.print(FifthByte);
Serial.println("");
  //count up routine
     digitalWrite(latchPin, 0);
    //count up on GREEN LEDs
    
    //count down on RED LEDs
    shiftOut(dataPin, clockPin, FirstByte); 
             shiftOut(dataPin, clockPin, SecondByte);
                 shiftOut(dataPin, clockPin, ThirdByte);
                 shiftOut(dataPin, clockPin, FourthByte);  
       shiftOut(dataPin, clockPin, FifthByte);
     
   
    //return the latch pin high to signal chip that it 
    //no longer needs to listen for information
    digitalWrite(latchPin, 1);
 serialCount = 0;
 delay(20);
   }
}
}
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  // This shifts 8 bits out MSB first, 
  //on the rising edge of the clock,
  //clock idles low

//internal function setup
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);

 //clear everything out just in case to
 //prepare shift register for bit shifting
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  //for each bit in the byte myDataOut�
  //NOTICE THAT WE ARE COUNTING DOWN in our for loop
  //This means that %00000001 or "1" will go through such
  //that it will be pin Q0 that lights. 
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);

    //if the value passed to myDataOut and a bitmask result 
    // true then... so if we are at i=6 and our value is
    // %11010100 it would the code compares it to %01000000 
    // and proceeds to set pinState to 1.
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {	
      pinState= 0;
    }

    //Sets the pin to HIGH or LOW depending on pinState
    digitalWrite(myDataPin, pinState);
    //register shifts bits on upstroke of clock pin  
    digitalWrite(myClockPin, 1);
    //zero the data pin after shift to prevent bleed through
    digitalWrite(myDataPin, 0);
  }

  //stop shifting
  digitalWrite(myClockPin, 0);
}

What do you expect to do with 'bluetooth'?

Delete the following

and connect HC-05 to pins 0,1 only after you have uploaded the programme. No "conversion" needed.

First, put this library
#include <SoftwareSerial.h>
Second, make sure that while uploading the code, you disconnect pin 0,1 until the code is uploaded, and then reconnect them

Send a byte from Android to Arduino via bluetooth, then arduino outputs to shift register

I did ... not happen nothing

I said what I said on the assumptions that

  1. the code you posted actually works as intended
  2. you know how connect HC-05 in the proper manner.
    The latter may not be the case. Make sure you connect Rx>Tx and Tx>Rx.
    Fritz
    There really isn't much else that can go wrong! I note with relief that you have not said that you don't use HC-0x. I'm afraid that was an assumption I made that might have been one too many. I also hope you are not using something IOS.

Your code receives serial input with wires, from the monitor, and acts accordingly with the LEDs. Using Bluetooth enables you to do the same thing without wires.

Pins 0,1 and the USB connection to the serial monitor share the same hardware serial port. Arduino just listens to the port and neither knows nor cares where the signal actually comes from - or how it gets there.

I urge you to studiously ignore reply #4. It is rubbish and suggests by implication that you do something stupid.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.