Salve a tutti,
Volevo chiedervi una cortesia: Io ho creato una comunicazione tra due Arduini Master e Slave, dove il Master chiederà una risposta allo Slave.
Il problema che riscontro è che quando nella funzione if (IgM >'60'){ inserisco un numero a due cifre nel monitor seriale è come se non lo leggesse, invece se mettessi
if (IgM >'6'){, quindi con una sola cifra me lo accetta. Vi chiedo il massimo aiuto, grazie per la disponibilità.
Un ultima cosa, la serie di Serial.Prinln sullo Slave è la spiegazione.
//SLAVE
#include <Wire.h>
void setup(){
Serial.begin(9600);
Wire.begin(7);
Wire.onRequest(rispondi);
Serial.println("Benvenuto nel nostro laboratorio analisi dei Tamponi:");
delay(300);
Serial.println("A differenza degli ormai noti tamponi, esame di laboratorio che serve per individuare la presenza del coronavirus all'interno delle mucose respiratorie, i test sierologici servono ad individuare tutte quelle persone che sono entrate in contatto con il virus.");
delay(300);
Serial.println("Mentre i primi forniscono un'istantanea sull'infezione, i secondi raccontano la storia della malattia.");
delay(300);
Serial.println("Attraverso i test sierologici infatti è possibile andare ad individuare gli anticorpi prodotti dal nostro sistema immunitario in risposta al virus.");
delay(300);
Serial.println("I test sierologici sono essenzialmente di due tipi: quelli rapidi e quelli quantitativi.");
delay(300);
Serial.println("I primi, grazie ad una goccia di sangue, stabiliscono se la persona ha prodotto anticorpi e quindi è entrata in contatto con il virus.");
delay(300);
Serial.println("i secondi, dove serve un prelievo, dosano in maniera specifica le quantità di anticorpi prodotti.");
delay(300);
Serial.println("In entrambi i casi i test sierologici vanno alla ricerca degli anticorpi (immunoglobuline) IgM e IgG.");
delay(300);
Serial.println("Le IgM vengono prodotte temporalmente per prime in caso di infezione. ");
delay(300);
Serial.println("Con il tempo il loro livello cala per lasciare spazio alle IgG.");
delay(300);
Serial.println("Quando nel sangue vengono rilevate le IgG, significa che l'infezione si è verificata già da diverso tempo e la persona tendenzialmente è immune al virus.");
delay(300);
Serial.println("Conoscere la presenza di questi anticorpi è utile per molte ragioni:");
delay(300);
Serial.println("ci consentono di sapere quante persone hanno realmente incontrato il virus.");
delay(300);
}
void loop (){
delay(1000);
}
int IgM;
void rispondi(){
IgM=Serial.read();
if (IgM >'60'){
Wire.write("Positivo");
}else{
Wire.write("Negativo");
}
}
//MASTER
#include <Wire.h>
int ledPin1=10;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("ok");//
}
void loop()
{
Wire.requestFrom(7, 8);
String c = "";
while (Wire.available())
{
c += char(Wire.read());
}
Serial.println(c);
if(c == "Positivo"){
digitalWrite(ledPin1, HIGH);
Serial.println("Risultato esito Tampone: ");
}
else if(c == "Negativo"){
digitalWrite(ledPin1, LOW);
Serial.println("Risultato esito Tampone: ");
}
}