But I don’t see any evidence that it is a 5v device apart from that Github link which doesn’t explicitly address the point.
kindly see the below link, they powered 5v to jy-mcu.
another thing i tried with 3.3v also.
I guess it’s possible the LCD is almost drawing too much current and the little extra taken by the BT module is the straw that breaks the camel’s back.
Current across LCD is pretty strange.
i got .552 mA current and 4.42 V voltage. (when Bt is not connected)
.552 to .509 mA current and 4.42 V to 3.9v voltage. (when Bt is connected)
37.2 to 0.76 mA current and 3.29v to 3.0 voltage Across BT.
I assume the only problem is that the BT module seems to cause a flicker or dimming of the LCD display?
yes!! every thing work fine after disconnecting BT from circuit.
Are you sure all the connections are good - corrosion on plugs or sockets or poor soldering might have strange effects.
connections are good. But not sure about corrosion or sockets.
One more thing i tried to disconnect BT when i am going to capture sound from mic.
to achieve this i am using transistor as a switch. Circuit diagram is available at
http://www.electronics-tutorials.ws/transistor/tran_4.html
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
const int rxPin = 10; //SoftwareSerial RX pin, connect to JY-MCY TX pin
const int txPin = 12; //SoftwareSerial TX pin, connect to JY-MCU RX pin
// level shifting to 3.3 volts may be needed
SoftwareSerial mySerial(rxPin, txPin);
LiquidCrystal lcd(9,8,5,4,6,7);
//const int ledPin = 13; // led pin
int value = 0;
int state = 0; // if state is 1, the LED will turn on and
// if state is 0, the LED will turn off
int flag = 0; // a flag to prevent duplicate messages
void setup() {
lcd.begin(16,2);
mySerial.begin(9600);
Serial.begin(9600);
pinMode(A4, OUTPUT);
digitalWrite(A4, HIGH);
lcd.print("done!!");
delay(1000);
}
void loop() {
digitalWrite(A4, LOW); // base pin of transistor is connected at A4, BT is powered off
value = analogRead(A0);
Serial.println(value, DEC);
digitalWrite(A4, HIGH); // BT is powered on
if(mySerial.available() > 0){
state = mySerial.read();
delay(20);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RECV: ");
delay(20);
lcd.setCursor(10,0);
lcd.print(state);
mySerial.println("RECV:");
delay(500); // if delay is provided to see how many data is arriving.
}
}
this approach is working fine at some extent but is not reliable…