Λύση Φύλλου Έργου 2
int ledPin=11; //Φτιάχνουμε μια μεταβλητή που την ονομάζουμε ledPin και της δίνουμε τη
//τιμή 11, δηλαδή η ακίδα 11 είναι συνδεδεμένη με το φωτάκι
int inputPin1=2; //Φτιάχνουμε μεταβλητή με όνομα inputPin1 και της δίνουμε τη τιμή 2
int inputPin2=4; //Φτιάχνουμε μεταβλητή με όνομα inputPin2 και της δίνουμε τη τιμή 4
int val1=0; // Η μεταβλητή val1 θα χρησιμοποιηθεί για να διαβάζει την τάση της ακίδας 2 και να ελέγχουμε
//τιμή 11, δηλαδή η ακίδα 11 είναι συνδεδεμένη με το φωτάκι
int inputPin1=2; //Φτιάχνουμε μεταβλητή με όνομα inputPin1 και της δίνουμε τη τιμή 2
int inputPin2=4; //Φτιάχνουμε μεταβλητή με όνομα inputPin2 και της δίνουμε τη τιμή 4
int val1=0; // Η μεταβλητή val1 θα χρησιμοποιηθεί για να διαβάζει την τάση της ακίδας 2 και να ελέγχουμε
/ /εαν έχει πατηθεί το 1ο κουμπί (ανάμματος του led)
int val2=0; // Η μεταβλητή val2 θα χρησιμοποιηθεί για να διαβάζει την τάση της ακίδας 4 και να ελέγχουμε
int val2=0; // Η μεταβλητή val2 θα χρησιμοποιηθεί για να διαβάζει την τάση της ακίδας 4 και να ελέγχουμε
// εαν έχει πατηθεί το 2ο κουμπί (σβησίματος του led)
void setup() {
pinMode(ledPin, OUTPUT); // Ορίζουμε ότι η ακίδα 11 θα είναι μόνο για να δίνουμε εντολές (έξοδος)
pinMode(inputPin1, INPUT); // Ορίζουμε ότι η ακίδα 2 θα είναι μόνο για να παίρνουμε εντολές (είσοδος)
pinMode(inputPin2, INPUT); // Ορίζουμε ότι η ακίδα 4 θα είναι μόνο για να παίρνουμε εντολές (είσοδος)}
void loop()
void setup() {
pinMode(ledPin, OUTPUT); // Ορίζουμε ότι η ακίδα 11 θα είναι μόνο για να δίνουμε εντολές (έξοδος)
pinMode(inputPin1, INPUT); // Ορίζουμε ότι η ακίδα 2 θα είναι μόνο για να παίρνουμε εντολές (είσοδος)
pinMode(inputPin2, INPUT); // Ορίζουμε ότι η ακίδα 4 θα είναι μόνο για να παίρνουμε εντολές (είσοδος)}
void loop()
{
val1=digitalRead(inputPin1); // διαβάζουμε την τιμή της ακίδας inputPin1 (2), για να εξετάσουμε εαν έχει
val1=digitalRead(inputPin1); // διαβάζουμε την τιμή της ακίδας inputPin1 (2), για να εξετάσουμε εαν έχει
// πατηθεί το 1ο κουμπί
val2=digitalRead(inputPin2); // διαβάζουμε την τιμή της ακίδας inputPin2 (4), για να εξετάσουμε εαν έχει
val2=digitalRead(inputPin2); // διαβάζουμε την τιμή της ακίδας inputPin2 (4), για να εξετάσουμε εαν έχει
//πατηθεί το 2ο κουμπί
if (val1==LOW) { // ελέγχουμε εάν έχει πατηθεί το 1o κουμπί, δηλαδή εάν η ακίδα 2 δεν δίνει ρεύμα
digitalWrite(ledPin, HIGH); // εάν η συνθήκη είναι αληθής, έχει πατηθεί το πρώτο κουμπί
// κάνουμε την ακίδα ledPin να δίνει ρεύμα, και το φως να ανάβει
}
if (val2==LOW) { //ελέγχουμε εάν έχει πατηθεί το 2o κουμπί, δηλαδή εάν η ακίδα 4 δεν δίνει ρεύμα
digitalWrite(ledPin, LOW); // εάν η συνθήκη είναι αληθής, δηλαδή έχει πατηθεί το 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
}
}
// Μια λύση όπου αντιστοιχεί στο γ) είναι η εξής:
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ο
// ο πίνακας με συμβολικό όνομα 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
}
}
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
}
}
}
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);
}
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);
}
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου