Λύσεις Φύλλων Έργου

Λύση Φύλλου Έργου 2



int ledPin=11;     //Φτιάχνουμε μια μεταβλητή που την ονομάζουμε ledPin και της δίνουμε τη
                //τιμή 11, δηλαδή η ακίδα 11 είναι συνδεδεμένη με το φωτάκι

int inputPin1=2;    //Φτιάχνουμε μεταβλητή με όνομα inputPin1 και της δίνουμε τη τιμή 2
int inputPin2=4;    //Φτιάχνουμε μεταβλητή με όνομα inputPin2 και της δίνουμε τη τιμή 4
        
int val1=0;        // Η μεταβλητή val1 θα χρησιμοποιηθεί για να διαβάζει την τάση της ακίδας 2 και να ελέγχουμε 
                       / /εαν έχει πατηθεί το 1ο κουμπί (ανάμματος του led)
int val2=0;        // Η μεταβλητή val2 θα χρησιμοποιηθεί για να διαβάζει την τάση της ακίδας 4 και να ελέγχουμε 
                       // εαν έχει πατηθεί το 2ο κουμπί (σβησίματος του led)


void setup() {
pinMode(ledPin, OUTPUT);  // Ορίζουμε ότι η ακίδα 11 θα είναι μόνο για να δίνουμε εντολές (έξοδος)

pinMode(inputPin1, INPUT); // Ορίζουμε ότι η ακίδα 2 θα είναι μόνο για να παίρνουμε εντολές (είσοδος)
pinMode(inputPin2, INPUT); // Ορίζουμε ότι η ακίδα 4 θα είναι μόνο για να παίρνουμε εντολές (είσοδος)}

void loop() 
{
    val1=digitalRead(inputPin1); // διαβάζουμε την τιμή της ακίδας inputPin1 (2), για να εξετάσουμε εαν έχει 
                                             // πατηθεί το 1ο κουμπί
    val2=digitalRead(inputPin2); // διαβάζουμε την τιμή της ακίδας inputPin2 (4), για να εξετάσουμε εαν έχει 
                                             //πατηθεί το 2ο κουμπί

    if (val1==LOW) {                  // ελέγχουμε εάν έχει πατηθεί το 1o κουμπί, δηλαδή εάν η ακίδα 2 δεν δίνει ρεύμα
     digitalWrite(ledPin, HIGH);   // εάν η συνθήκη είναι αληθής, έχει πατηθεί το πρώτο κουμπί
                                              // κάνουμε την ακίδα ledPin να δίνει ρεύμα, και το φως να ανάβει
    }
    if (val2==LOW) {                   //ελέγχουμε εάν έχει πατηθεί το 2o κουμπί, δηλαδή εάν η ακίδα 4 δεν δίνει ρεύμα
         digitalWrite(ledPin, LOW);     // εάν η συνθήκη είναι αληθής, δηλαδή έχει πατηθεί το 2ο κουμπί
                                                    // τότε σβήνουμε το φως
    }
}

 Λύση Φύλλου Έργου 3

// Ερώτηση 1
// Υπάρχουν διάφοροι τρόποι για να κάνουμε το λαμπάκι να ανάβει πιο αργά
// α) Αρκεί να αυξήσουμε την καθυστέρηση έτσι ώστε το λαμπάκι να περιμένει περισσότερο χρόνο (π.χ. 
// delay(300);) σε κάθε επίπεδο φωτεινότητας
// β) Επίσης μπορούμε να αυξήσουμε την καθυστέρηση εαν απλά αυξήσουμε τον αριθμό των επαναλήψεων  
// μειώνοντας το ποσό κατά το οποίο αυξάνεται ο μετρητής, πχ i+=2;
// γ) Θα μπορούσαμε να τροποποιήσουμε το πρόγραμμα έτσι ώστε να συνδυάζει και τα δύο παραπάνω, δηλ. 
// αύξηση καθυστέρησης και αύξηση αριθμού επαναλήψεων
// Μια λύση όπου αντιστοιχεί στο γ) είναι η εξής:


const int analogpin = 9;

int i;      

void setup() {
      pinMode(analogpin , OUTPUT);
}

void loop() {
  for (i=0; i<255; i+=5)
  { 
      analogWrite(analogpin , i);
      delay(400);
   }
}


// Ερώτηση 2

const int analogpin = 9;

int i;      

void setup() {
pinMode(analogpin , OUTPUT);
}

void loop() {
  for (i=0; i<255; i+=5)  // το λαμπάκι ανάβει τώρα σιγά σιγά
  { 
      analogWrite(analogpin , i);   // η ένταση του φωτός αυξάνει κατά 5 μονάδες σε κάθε επανάληψη,
      delay(100);                         // και το φωτάκι μένει σε αυτή την φωτεινότητα για  0,1 sc
  }
  for (i=255; i>=0; i-=5)             // το λαμπάκι σβήνει τώρα σιγά σιγά
  { 
      analogWrite(analogpin , i);   // η ένταση του φωτός μειώνεται κατά 5 μονάδες σε κάθε επανάληψη,
      delay(100);                        //  και το φωτάκι μένει σε αυτή την φωτεινότητα για  0,1 sc
   }
}


 Λύση Φύλλου Έργου 4

int ledPins[ ]= {2, 3, 5, 6, 7};

// ο πίνακας με συμβολικό όνομα ledPins αποθηκεύει την ακίδα στην οποία συνδέεται το κάθε  led
// Επομένως το 1o φωτάκι (ledPins[0]) συνδέεται στην ακίδα 2, το 2ο φωτάκι
// Επομένως το 2o φωτάκι (ledPins[1]) συνδέεται στην ακίδα 3  κλπ

void setup() 
{
    for (int i=0;  i<5; i++) {
        // η εντολή pinMode θα επαναλαμβάνεται 5 φορές

        pinMode(ledPins[i], OUTPUT);
    }
}



void loop()
{
    for(int i=0; i<5; i++) {
        digitalWrite(ledPins[i], HIGH);       // άναψε το i-στο led

        delay(200);               // περίμενε (δηλ. άσε αναμμένο το led) για 0,2 sec

        digitalWrite(ledPins[i], LOW);        // σβήσε το i-στο led

        delay(200);                // περίμενε για 0,2 sec
    }
    // η παρακάτω δομή επανάληψης προκαλεί σβήσιμο των led με τη αντίστροφη σειρά, δηλ. πρώτα το 5ο 
    //  φωτάκι, μετά το 4ο, κλπλ
    for(int i=4; i>=0; i--) {
        digitalWrite(ledPins[i], HIGH);       // άναψε το i-στο led

        delay(200);               // περίμενε (δηλ. άσε αναμμένο το led) για 0,2 sec
        digitalWrite(ledPins[i], LOW);        // σβήσε το i-στο led

        delay(200);                // περίμενε για 0,2 sec
    }
}

 Λύση Προαιρετικής άσκησης Φύλλου Έργου 4

#include <Servo.h>


int buttonPin=2;
int val=0;

Servo myservo;     // δημιουργία αντικειμένου τύπου servo για τον έλεγχο του σερβοκινητήρα
int pos = 0;            // μεταβλητή που αποθηκεύει την θέση του  σερβοκινητήρα
void setup()
{
     myservo.attach(9);  // αντιστοιχίζει το σερβοκινητήρα στην ακίδα 9
    pinMode(buttonPin, INPUT);
      Serial.begin(9600);
}

void loop()
{
    val=digitalRead(buttonPin);
    // η κίνηση του σερβομηχανισμού ξεκινά  μόλις πατήσουμε το κουμπί που είναι συνδεδεμένο στην ακίδα 2
    if(val==LOW) {
      Serial.println("Κίνησε τον Σερβομηχανισμό !!");
      delay(1000);

        for(pos = 0; pos < 120; pos += 1)  // μετακινείται από  0 μοίρες σε  120 μοίρες
        {                                                 // με βήμα 1 μοίρα 
            myservo.write(pos);                  // δίνει εντολή στο servo να μετακινηθεί στην θέση που
                                                           // μας λέει η μεταβλητή 'pos'
            delay(100);                               // περιμένει 15ms για να φτάσει ο σερβοκινητήρας στην θέση pos
       }
        for(pos = 120; pos>=1; pos-=1)      // περιστρέφεται  αντίστροφα από  τις 120 μοίρες στις  0 μοίρες
        {                                              
            myservo.write(pos);                   // δίνει εντολή στο servo να μετακινηθεί στην θέση 'pos'
            delay(100);                                // περιμένει 15ms για να φτάσει ο σερβοκινητήρας στην θέση  pos
        }
    }

}
 

Λύση Φύλλου Έργου 5

 int temperaturePin=0;

void setup()
{
  Serial.begin(9600); 
}

void loop()           
{
 float temperature = getVoltage();
 temperature = (temperature - .5) * 100;




Serial.println("***********************************");   // Ερώτηση 1: τυπώνεται μια γραμμή με 

                                                                        //αστεράκια πριν την εμφάνιση της θερμοκρασίας
if(temperature>40)

{                                      // Ερώτηση 2: Εμφάνιση μηνύματος σε περίπτωση που η  θερμοκρασία είναι 
                                        // πάνω από 40 βαθμούς
    Serial.println("Προσοχή, Ζέστη");
}
 Serial.println(temperature);    
 delay(1000);                    
 Serial.println("***********************************");   // Ερώτηση 1: τυπώνεται μια γραμμή με 

                                                           //  αστεράκια μετά την εμφάνιση της θερμοκρασίας
}


float getVoltage(){
 return (analogRead(temperaturePin) * .004882814);
}


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου