[HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth

gpb01:

  1. hai fatto il debouncing del bottone? Perché altrimenti i "ribalzi" si sprecano

  2. hai messo una resistenza di pull-down per tenerlo normalmente a LOW? Altrimente è floating ed oscilla in continuazione tra LOW ed HIGH

  3. 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

  1. Ho aggiunto il debouncing allo sketch. Lo allego sotto.

  2. 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?