gpb01:
hai fatto il debouncing del bottone? Perché altrimenti i "ribalzi" si sprecano
hai messo una resistenza di pull-down per tenerlo normalmente a LOW? Altrimente è floating ed oscilla in continuazione tra LOW ed HIGH
nel modo che hai fatto, con il pin HIGH viene trasmesso in continuazione 0x31 0x0D (il carrattere 1 ed il Carriage return) ovvero due caratteri ed il tutto ripetuto ogni 3 decimi di secondo. E' questo che vuoi.
In ogni caso, se i collegamente sono fatti come si deve ed il BT è connesso ... DEVE funzionare ! Prova con un semplice emulatore di terminale BT per cellulare ...
Guglielmo
-
Ho aggiunto il debouncing allo sketch. Lo allego sotto.
-
La resistenza di pull-down c'era già prima.
Questo sketch è il "debounce" presente negli Esempi, con l'aggiunta di un Serial.println e un bt.println:
#include <SoftwareSerial.h>
#define BT_TX_PIN 10
#define BT_RX_PIN 11
SoftwareSerial bt = SoftwareSerial(BT_RX_PIN, BT_TX_PIN);
// constants won't change.
// set pin numbers:
const int buttonPin = 3;
const int ledPin = 13;
// Variables will change:
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin (9600);
bt.begin(9600);
digitalWrite(ledPin, ledState);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
ledState = !ledState;
}
}
}
digitalWrite(ledPin, ledState);
Serial.println (ledState); //<<<<<< QUESTO VIENE SCIRTTO
bt.println (buttonState); //<<<<<< QUESTO NON VIENE RICEVUTO DAL CELLULARE
lastButtonState = reading;
}
Premendo il bottone, il Led cambia stato e viene scritto sul monitor seriale il Serial.println MA con il terminale bluetooth sul cellulare non viene ricevuto il bt.println
Allego lo screen dell'emulatore Android. La connessione è stabilita ma non viene ricevuto il segnale.
Non riesco a spiegarmi come sia possibile. Ho creato bene la seriale virtuale?
