I have set up a Arduino to send a 3.3V signal to my RPi if an object is detected in front of the UltraSonic sensor. I have measured the signal at 3.26V. But it does not work.
Since the signal from the Arduino is 5V and the RPi GPIO pins needs 3.3V, I am using a voltage divider to get 3.3V (measured to 3.26V).
I have tested the program with a button and the Raspberry Pi´s own 3.3V pin, and the state changes are detected, so the program works. I am using Pi4J.
So my question is, why are not the state changed when I use the Arduino to sende the signal?
Here is my code on the RPi (Written in Java):
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;
public class ButtonTest{
public static void main(String[] args) throws InterruptedException{
final GpioController gpio = GpioFactory.getInstance();
final GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_06, "MyButton", PinPullResistance.PULL_DOWN);
myButton.addListener(new GpioPinListenerDigital(){
@Override
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event){
System.out.println("GPIO State change: " + event.getPin() + " = " + event.getState());
}
});
System.out.println("...");
while(true != false){
//Thread.sleep(500);
}
}
}
I also have an image of the setup, the only difference is that I take the wire going to the terminal (where I measure) to the GPIO pin #6 on the Raspberry Pi.
Hope someone can give me some answers, thanks!