Ciao a tutti,
vorrei connettere un Mega a due sensori identici che comunicano in RS232 inviando ad intervalli costanti una stringa di 44 caratteri.
Il problema è che questi sensori sono provvisti di un solo terminale (TX).
Al momento sto ragionando solo con un solo sensore connesso, appena risolto il problema di seguito mi occuperò di collegare e realizzare lo script per leggere entrambi i sensori.
Lo sketch di Arduino e basato su quello di Robin2 :
const byte numChars = 32;
char receivedChars[numChars];
boolean newData = false;
void setup() {
Serial.begin(9600);
Serial2.begin(9600);
Serial.println("<Arduino is ready>");
}
void loop() {
recvWithStartEndMarkers();
showNewData();
}
void recvWithStartEndMarkers() {
static boolean recvInProgress = false;
static byte ndx = 0;
char startMarker = '<';
char endMarker = '>';
char rc;
// if (Serial2.available() > 0) {
while (Serial2.available() > 0 && newData == false) {
rc = Serial2.read();
if (recvInProgress == true) {
if (rc != endMarker) {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) {
ndx = numChars - 1;
}
}
else {
receivedChars[ndx] = '\0'; // terminate the string
recvInProgress = false;
ndx = 0;
newData = true;
}
}
else if (rc == startMarker) {
recvInProgress = true;
}
}
}
void showNewData() {
if (newData == true) {
double V=analogRead(A0)*5/1023;
Serial.print("/t");
Serial.print(V);
Serial.print("/t");
Serial.print(receivedChars);
Serial.println();
newData = false;
}
}
Con l'aggiunta che devo misurare una tensione 0-5 V da A0, proveniente sempre dal sensore stesso.
E' possibile utilizzare solamente il pin RX della Serial2? Al momento non riesco ad inizializzarla, per cui lo script non parte. Se scollego il gnd della misura tensione e connetto il TX a GND lo script (sinceramente non so perchè) funziona e la stringa di dati viene correttamente acquisita e inviata a monitor, se però ricollego il GND per la misura di tensione la comunicazione si interrompe.
Potreste aiutarmi?
Grazie,
Paolo