Go Down

Topic: Problemi con gestione dati via seriale tra 2 mega (Read 848 times) previous topic - next topic

uwefed

Il 0x non lo scrive perché é solo per dire al compiler che il numero che segue é in esadecimale.
Mi serviva il codice con cui mandi i dati al secondo Arduino per capire cosa sta spedendo e se lo sketch che lo riceve lo vede bene.
Per favore dacci entrambi i sketch.
Ciao Uwe

commax79

#6
Dec 16, 2012, 04:34 pm Last Edit: Dec 16, 2012, 07:21 pm by UweFederer Reason: 1
Eccoci, alla fine ho rimodificato il codice. Effettivamente mi continua a funzionare una volta su 15 (a differenza dei led che ho attaccato sulla porta 6 del mega)...mi viene da pensare che possa essere un problema dell'digitalRead...
vi posto il codice corretto a titolo informativo, alla fine la parte della trasmissione funziona regolarmente e la stringa che controllo in ricezione è corretta, magari può essere utile a chi controlla via seriale con la libreria irremote, grazie a tutti!

Code: [Select]

String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

//Prese TV
int serialTVS = 0;
//lucetv
int serialLTV;
int scattoLuce = 50;
int Luce = 0;

void setup() {
 // initialize serial:
 Serial.begin(9600);
 // reserve 200 bytes for the inputString:
 inputString.reserve(200);  
 pinMode(31,OUTPUT);
 pinMode(6, OUTPUT);
}

void loop() {
 // print the string when a newline arrives:
 if (stringComplete) {    
   Serial.println(inputString);
   // clear the string:
   inputString = "";
   stringComplete = false;
 }  
 
//LuceTV
if((inputString == "A16EA45B") || (serialLTV == 1)){
   Luce = 150;
   }
   if(inputString == "A16E04FB"){
Luce = Luce - scattoLuce;
 }    
   analogWrite(6,Luce);
//Presa tv
if ((inputString == "A16E0CF3") || (serialTVS == 1)){
 if (digitalRead(31) == LOW)
digitalWrite(31,HIGH);
else
 digitalWrite(31, LOW);
serialTVS=0;
}
}

void serialEvent() {
 while (Serial.available()) {
   // get the new byte:
   char inChar = (char)Serial.read();
   // add it to the inputString:
   inputString += inChar;
   // if the incoming character is a newline, set a flag
   // so the main loop can do something about it:
   if (inChar == '\n') {
     stringComplete = true;
   }
 }
}

commax79

Confermo un problema di lettura (digitalread) della porta, risolto creando una variabile boolean per lo stato di attivazione o meno dell'uscita, ora apre e chiude regolarmente.
Yuppy!  :D

Go Up