ciao a tutti, ho una connessione seriale con 2 nano, usando una seriale via software , che funziona senza problemi .
pero' quando invio il comando, a volte lo prende correttamente a volte no. ho provato a leggere anche la seriale via pc ed il tasto viene letto correttamente .
cosa sto sbagliando?
codice master
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#define SOFTRX 16
#define SOFTTX 17
SoftwareSerial seriale2(SOFTRX, SOFTRX);
}
/*Ciclo per la funzione controllo LED1*/
void led() {
int pulsante =digitalRead(12);
if (pulsante == HIGH && oldbutP == HIGH) {// pressione del pulsante
// pressione del pulsante
seriale2.println('a');
Serial.println('a');
delay(50);
}
oldbutP = pulsante;
[code]
slave
[code]
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_NeoPixel.h>
#include <FastLED.h>
#include <OneWire.h>
int buttonPin = 7; // momentary push button on pin 0
int oldButtonVal = 0;
#define SOFTRX 5
#define SOFTTX 6
SoftwareSerial seriale2(SOFTRX, SOFTRX);
int nPatterns = 16;
int lightPattern = 1;
char pulsante;
void setup()
{
// edit//
FastLED.addLeds<WS2812B, PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
LEDS.addLeds<LED_TYPE, PIN, COLOR_ORDER>(leds, NUM_LEDS);
Serial.begin(9600);
seriale2.begin(9600);
strip.begin();
strip.setBrightness(255);
strip.show();
pinMode(audioOutput, INPUT);
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
analogReference(DEFAULT);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH); // button pin is HIGH, so it drops to 0 if pressed
if (seriale2.available()>0){
pulsante = seriale2.read();
if
(pulsante == 'a'){
lightPattern = lightPattern + 1;
seriale2.println(lightPattern);
Serial.println(lightPattern);
} }
if (lightPattern > nPatterns) lightPattern = 1;
}
}