Problema Interrupt + Serial.println


salve ragazzi!!!!
stavo sviluppando un progetto abbastanza semplice ( una versione del cat feeder ormai famoso sul sito) con degli interrupt.
in pratica un sensore luminoso genera un interrupt quando c'è molta luce ( e la resistenza ldr si abbassa, tipo falling) , e questo evento aziona un servomotore che ,dalla posizione di riposo impostata nel loop, si apre per 5 secondi e poi si richiude.
fino qui tutto bene. poi ho cominciato "ricamare il software", e ho inserito qualche serial.print per tenere d'occhio alcune cose, ad esempio, quante volte era stato azionato il meccanismo. ( gli interrupt vengono disabilitati dopo 5 eventi) .
ebbene, da quando ho inserito println , il codice si blocca spesso e volentieri. nella console vengono visualizzate scritte come

"evento rilevato: pasto numero 1"
"evento rilevato: pasto numero 2"
"ev"

e poi si blocca. non riesco capire perchè, e la cosa è molto fastidiosa. qualcuno può darmi una mano?
senza le stampe video invece funziona perfettamente.
p.s inoltre, se mando piu impulsi luminosi mentre il motorino è "aperto", lui li legge come interrupt e li scala dal totale. ho provato giocare con nointerrupts(), interrupts() e detachinterrupt(0) ma niente...
vi riporto qui sotto il codice:
code: [select]
// servo in posizione =33 gradi.

#include <servo.h>

servo myservo;            

volatile int apri,intcount=0;

void setup() {
 attachinterrupt(0,open_gate,falling);
 myservo.attach(9);      
 serial.begin(9600);    
   myservo.write(33);  
}

void loop() {
 if(intcount==5){
   detachinterrupt(0);
 }
 if (apri==1){
 apriti();}
  myservo.write(33);
}

void open_gate(){
 apri=1;
 intcount++;
 //serial.print("evento rilevato: pasto numero ");
 //serial.print(intcount,1);
 //serial.println(" ");
}

void apriti(){
myservo.write(123);
delay(5000);
apri=0;
}

togli serial.print da dentro gli interrupt.
siccome anche la stampa su seriale è gestita da interrupt, nel momento in cui disattivi l'interrupt blocchi anche l'invio di dati sulla seriale.



Arduino Forum > International > Italiano > Software (Moderator: leo72) > Problema Interrupt + Serial.println


arduino

Comments

Popular posts from this blog

VIDIOC_S_FMT error 16, Device or resource busy - Raspberry Pi Forums

using a laptop skeleton to build a pi laptop - Raspberry Pi Forums

Forum for Joomla? - Joomla! Forum - community, help and support