PDA

Επιστροφή στο Forum : Ερωτιση για ARDUINO duemillanove, programa pressas.



furtune
05-02-13, 14:10
Γεια σας. Εχω στα χερια μου μια πρεσσα που ανοιγει τρυπες στα ημερολογια για να γινει βιβλιοδεσια.
Το προβλημα του ηταν στην πλακετα και μετα απο πολλες δοκιμες κατεληξα οτι η βλαβη προερχεται απο τον μικροεπεξεργαστη που εχει επάνω. Η συσκευη εχει ενα κουμπι που οταν το πατας ξεκιναει την λειτουργεια για ενα ανεβοκατευασμα και μετα σταματαει οσο και να το κρατισεις πατημενο το κουμπι. Χρειάζεται ξανα πατημα για ξεκινισει λειτουργεια για νεο κυκλο. Το προβλημα της συσκευης ειναι οτι δεν σταματουσς την λειτουργεια ακομα και να εβγαζες τον διακοπτη εκτος τελειος. Με λιγα λογια ο μικροεπεξεργαστης εμπαινε σε μια ρουτινα και δεν εβγαινε.

Σκεφτικα να φτιαξω δικο μου προγραμμα με ARDUINO και απο τι φενεται τα καταφερα. ( Ειμαι αρχαριος στο προγραμματισμο).

Το μονο προβλημα που εχω ειναι το πως θα καθορισω , η συσκευη να κανει τον κυκλο μια φορα ακομα και αν ο διακοπτης παραμενει πατημενος, και να ξεκινησει την λειτουργια μετα απο νεο πατημα. Ανεβάζω τον κώδικα.35523

#define exit1 10
#define exit2 11
#define input1 8
#define input2 9
#define start 7
int a=0; //dilonw metavlites to a einai o diakoptis pou to patas me to podi
int b=0;
int c=0;
void setup()
{
pinMode(exit1,OUTPUT); //dilonw ti tha einai to kathe pin eisodos i eksodos
pinMode(exit2,OUTPUT);
pinMode(input1,INPUT);
pinMode(input2,INPUT);
pinMode(start,INPUT);

}
void loop(){

a= digitalRead(start); //diavase ton diakopti
if(a == HIGH) //An o diakoptis einai patimenos
{
b= digitalRead(input1); //diavase to pin 8
delay(50);
c= digitalRead(input2); //diavase to pin 9
delay(50);
while(b<c){ //gia oso xrono to b<c

digitalWrite(exit1,HIGH); //kane high thn eksodo 1
delay (50); //argise 50 mikro sec
delay(50);
c= digitalRead(input2);
delay(50);

}
digitalWrite(exit1,LOW);
b= digitalRead(input1);
delay(50);
c= digitalRead(input2);
delay(50);
while(c<b){
digitalWrite(exit2,HIGH);
delay (50);
b= digitalRead(input1);
delay(50);
c= digitalRead(input2);
delay(50);
}
digitalWrite(exit2,LOW);
}
}

p1p15
07-02-13, 15:46
Καλησπερα! Βασικα δεν εξηγεις τι κανουν ολες οι εξοδοι,εισοδοι,μεταβλητες και γιαυτο η απαντηση μπορει να μην ειναι αυτη που θες... Μια καλη library για ελεγχο button ειναι αυτη http://code.google.com/p/ebl-arduino/. Αν και μπορει να χρειαζεσαι ενα απλο button state detection και να βαλεις ολη τη διαδικασια σε αλλo void και οχι στο void_loop αφου εκει θα "εκτελειται" για παντα. To τελευταιο υπαρχει σαν παραδειγμα στα digitals.